Forum Webscript.Ru
		Программирование => PHP => Тема начата: Художник от 02 Ноября 2003, 14:18:20
		
			
			- 
				есть у меня скрипт построничного вывода текста из БД
она работает на 99% :) 
А вот и этот 1%:
независемо от номера текущей страницы в низу текста показывает что юзер находится на страничке номер 1 :(
хотя юзер совсем на другой :)
тоесть:
1 2 3 4 5 6
// в низу каждой страницы выводится ссылка на следующие страницы
if ($id=$i*$articles_per_page)
$this->out_nav.=" |  ".($i+1)."  ";
// Номер текущей страницы
else echo $i+1;
Зарание благодарен !
			 
			
			- 
				в операторе сравнения у тебя пропущен один знак равно - = вместо ==
			
 
			
			- 
				RomikChef 
если я ставлю еще один "=" 
1. он ругается что $id underfined :(
2. когда я объявляю $id глобальной ссылки перестают работать :(
и потом насколько я понял тут проблемма в $i  (что скажеш ?)
(это начало)
$res = mysql_fetch_row($this->sql_res);
 $total_articles_number = $res[0];
 $articles_per_page=10;
 $total_pages = ceil($total_articles_number/$articles_per_page);
 for ($i=0; $i<$total_pages; $i++) // 
{
 предыдущий пост
}
			 
			
			- 
				ну раз андефайнед, то есть - не определена, то ОПРЕДЕЛИ ее!
напиши
if (isset($_GET[\'id\'])) $id=intval($_GET[\'id\']); else $id=0;
			 
			
			- 
				
RomikChef:
ну раз андефайнед, то есть - не определена, то ОПРЕДЕЛИ ее!
напиши
if (isset($_GET[\'id\'])) $id=intval($_GET[\'id\']); else $id=0;
дело в том что когда я ее определяю у меня ссылки не работают...
потому что переменная не передается... я передаю только строковую переменную $cat... а $id не передаю...(тоесть мне не нельзя ее передавать(в моем случае))
я просто не могу понять почему когда я ставлю один "=" у меня все работает кроме else echo $i+1 
тоесть когда я отлаживаю(незнаю есть ли такое слово) отдельно он мне дает ответ 0+1  
вывод(личный) переменная $i не меняет значения
why ???
			 
			
			- 
				когда ты ставишь 1 знак равно, у тебя получается оператор не СРАВНЕНИЯ, а ПРИСВОЕНИЯ!
сравнивают - ДВА РАВНО!
Если ты передаешь cat, то откуда взялось это id?????
что передаешь - то и используй!
			 
			
			- 
				RomikChef 
начал переводить переменную $id он мне вытаскивает все как надо 
123456
только без ссылки :)
			 
			
			- 
				Что у тебя за ссылка идиотская? что в ней cat,а что - id?
зачем ты передаешь две переменные?
			 
			
			- 
				$cat - это категория текста "str"
$id - это ид текста "int"
выборка текста из базы идет по категории текста...вообще то это еще не сам текст... а только заголовок и лид...
вот вообщем и вся идиотская ссылка :)
			 
			
			- 
				Ачто ж ты мне врал тогда, что 
$id не передаю
Как же, все-таки, трудно помогать человеку, который сам не понимает, что он делает и вообще - чего хочет...
НО при этом бежит на форум.
			 
			
			- 
				RomikChef 
ну за что ты так меня недолюбливаеш аа ? :)
понимаеш когда я вытаскиваю Название текста и лид из БД я не передаю $id зачем он мне ? когда я могу просто выбирать его из базы по категории?
вот на этот лист я и делаю постраничный вывод ?
Надеюсь ты меня на этот раз поймеш...
			 
			
			- 
				За что я тебя не люблю, я подробно написал.
Художник:
я не передаю $id зачем он мне 
Все, я сдаюсь. Объясняйте ему кто-нибудь другой.
Он делает постраничный вывод, но никакого признака записи, с которой начинается страница, он не передает. И уверен в своей правоте
			 
			
			- 
				RomikChef 
все же спасибо что попытался по содействовать :)
я не виноват что мышлю по иному... твои слова (дурацкая затея, дурацкая ссылка и т. п.)
			 
			
			- 
				Ромик, я горжусь Вами...
Художник, присваивание (которое у тебя там, где сравнение) затяни в тело цикла, и поставь все-таки двойное равно... Для начала... :)
ID передавать все-таки нужно...
if (!isset($id)) { 
  $id=1; 
}
$res = mysql_fetch_row($this->sql_res);
$total_articles_number = $res[0];
$articles_per_page=10;
$total_pages = ceil($total_articles_number/$articles_per_page);
for ($i=0; $i<$total_pages; $i++) {
  if ($id==$i*$articles_per_page) {
     $this->out_nav.=" |  ".($i+1)."  "; // Номер текущей страницы
  } else {
     echo $i+1;
  }
}
Там еще борьба с разделителями (|) предстоит, и унификация вывода - местами у тебя echo ..., а местами - $this->out_nav.= ...
П.С. Художник, пожалуйста, разберись с отличием присваивания от сравнения... Это очень поможет в будущем.
			 
			
			- 
				Comissar, RomikChef 
вы правы... только теперь все поменялось местами :)
вместа того чтоб он ставил ссылки на 2 3 4 5 6 он ставит ссылку на 1 :)
я лиш хочотел спросить многоуважаемого RomikChef - a 
 когда я вытаскиваю последнии 10 записей из таблицы то получается $id=0; 
так зачем его передовать ? когда у нас:
есть следующая строчка:
if (isset($_REQUEST[\'id\'])) $id=intval($_REQUEST[\'id\']); else $id=0; ?
или я не прав ?
			 
			
			- 
				Id нужно передавать потому, что после перехода со ссылке тебе нужно будет знать, на какую страницу перешли. Id в данном случае будет указывать номер статьи, с которой начинать отображать выбраную страницу статей.
Если все наоборот - поменяй условие в нужном месте на обратное.
Для этого заключи его в скобки и поставь перед ними знак восклицания.
Вот так:
if (!($id==$i*$articles_per_page)) {
Или так:
if ($id!=$i*$articles_per_page) {
П.С. Ты разобрался с отличием равенства от присваивания?
Если да - попробуй понять принципы работы условного оператора if
			 
			
			- 
				при ссылке на первую страницу id передавать действительно, не обязательно. Но поскольку такая проверка только усложнит твою программу, то я бы на твое месте сначада сделал с передачей.
			
 
			
			- 
				спасибо вам огромное ! У меня все заработало...
да конечно я разобрался с операторами "=" и "=="
RomikChef , Comissar 
//получаем результат из БД
$res=value;// integer
$articles_per_page=10
//получаем количество страниц
$total_pages = ceil($res/$articles_per_page)
а если value double  ? 
я пытался $articles_per_page =0,1; но без успешно...(или может я не туда пру ?)
Знаю RomikChef ждал этого вопроса... :)
Что бы я делал без вас... :)
			 
			
			- 
				Хватит тебя пичкать готовеньким.
Разберись сначала, ЧТО ты получаешь из базы, а потом задавайся вопросам - а если это интеджер.
а то у тебя уже совсем ум за разум зашел. Копируешь без разбору, это все перемешивается с твоими бредовыми мыслями и ты вообще перестаешь понимать, что делает твоя программа.
Вот сядь, и распиши сам для себя - что у тебя откуда берется и какая переменная что значит.
А пока я тему закрываю, ибо терпение мое лопнуло