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 ждал этого вопроса... :)
Что бы я делал без вас... :)
-
Хватит тебя пичкать готовеньким.
Разберись сначала, ЧТО ты получаешь из базы, а потом задавайся вопросам - а если это интеджер.
а то у тебя уже совсем ум за разум зашел. Копируешь без разбору, это все перемешивается с твоими бредовыми мыслями и ты вообще перестаешь понимать, что делает твоя программа.
Вот сядь, и распиши сам для себя - что у тебя откуда берется и какая переменная что значит.
А пока я тему закрываю, ибо терпение мое лопнуло