Forum Webscript.Ru

Программирование => PHP => Тема начата: Художник от 02 Ноября 2003, 14:18:20

Название: Помогите разобратся...
Отправлено: Художник от 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;

Зарание благодарен !
Название: Помогите разобратся...
Отправлено: Меняздесьдавнонет от 02 Ноября 2003, 16:25:20
в операторе сравнения у тебя пропущен один знак равно - = вместо ==
Название: Помогите разобратся...
Отправлено: Художник от 03 Ноября 2003, 09:12:19
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++) //
{
 предыдущий пост
}
Название: Помогите разобратся...
Отправлено: Меняздесьдавнонет от 03 Ноября 2003, 10:49:15
ну раз андефайнед, то есть - не определена, то ОПРЕДЕЛИ ее!
напиши
if (isset($_GET[\'id\'])) $id=intval($_GET[\'id\']); else $id=0;
Название: Помогите разобратся...
Отправлено: Художник от 03 Ноября 2003, 11:41:40
Цитировать
RomikChef:
ну раз андефайнед, то есть - не определена, то ОПРЕДЕЛИ ее!
напиши
if (isset($_GET[\'id\'])) $id=intval($_GET[\'id\']); else $id=0;


дело в том что когда я ее определяю у меня ссылки не работают...
потому что переменная не передается... я передаю только строковую переменную $cat... а $id не передаю...(тоесть мне не нельзя ее передавать(в моем случае))

я просто не могу понять почему когда я ставлю один "=" у меня все работает кроме else echo $i+1

тоесть когда я отлаживаю(незнаю есть ли такое слово) отдельно он мне дает ответ 0+1

вывод(личный) переменная $i не меняет значения
why ???
Название: Помогите разобратся...
Отправлено: Меняздесьдавнонет от 03 Ноября 2003, 12:23:07
когда ты ставишь 1 знак равно, у тебя получается оператор не СРАВНЕНИЯ, а ПРИСВОЕНИЯ!
сравнивают - ДВА РАВНО!

Если ты передаешь cat, то откуда взялось это id?????
что передаешь - то и используй!
Название: Помогите разобратся...
Отправлено: Художник от 03 Ноября 2003, 13:15:12
RomikChef

начал переводить переменную $id он мне вытаскивает все как надо
123456
только без ссылки :)
Название: Помогите разобратся...
Отправлено: Меняздесьдавнонет от 03 Ноября 2003, 13:23:54
Что у тебя за ссылка идиотская? что в ней cat,а что - id?
зачем ты передаешь две переменные?
Название: Помогите разобратся...
Отправлено: Художник от 03 Ноября 2003, 15:22:48
$cat - это категория текста "str"
$id - это ид текста "int"

выборка текста из базы идет по категории текста...вообще то это еще не сам текст... а только заголовок и лид...

вот вообщем и вся идиотская ссылка :)
Название: Помогите разобратся...
Отправлено: Меняздесьдавнонет от 03 Ноября 2003, 15:29:01
Ачто ж ты мне врал тогда, что
Цитировать
$id не передаю


Как же, все-таки, трудно помогать человеку, который сам не понимает, что он делает и вообще - чего хочет...
НО при этом бежит на форум.
Название: Помогите разобратся...
Отправлено: Художник от 03 Ноября 2003, 16:02:43
RomikChef
ну за что ты так меня недолюбливаеш аа ? :)

понимаеш когда я вытаскиваю Название текста и лид из БД я не передаю $id зачем он мне ? когда я могу просто выбирать его из базы по категории?

вот на этот лист я и делаю постраничный вывод ?

Надеюсь ты меня на этот раз поймеш...
Название: Помогите разобратся...
Отправлено: Меняздесьдавнонет от 03 Ноября 2003, 17:14:36
За что я тебя не люблю, я подробно написал.

Цитировать
Художник:
я не передаю $id зачем он мне

Все, я сдаюсь. Объясняйте ему кто-нибудь другой.
Он делает постраничный вывод, но никакого признака записи, с которой начинается страница, он не передает. И уверен в своей правоте
Название: Помогите разобратся...
Отправлено: Художник от 03 Ноября 2003, 17:50:50
RomikChef

все же спасибо что попытался по содействовать :)
я не виноват что мышлю по иному... твои слова (дурацкая затея, дурацкая ссылка и т. п.)
Название: Помогите разобратся...
Отправлено: Comissar от 03 Ноября 2003, 19:00:34
Ромик, я горжусь Вами...

Художник, присваивание (которое у тебя там, где сравнение) затяни в тело цикла, и поставь все-таки двойное равно... Для начала... :)
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.= ...

П.С. Художник, пожалуйста, разберись с отличием присваивания от сравнения... Это очень поможет в будущем.
Название: Помогите разобратся...
Отправлено: Художник от 05 Ноября 2003, 09:41:12
Comissar, RomikChef
вы правы... только теперь все поменялось местами :)
вместа того чтоб он ставил ссылки на 2 3 4 5 6 он ставит ссылку на 1 :)

я лиш хочотел спросить многоуважаемого RomikChef - a
 когда я вытаскиваю последнии 10 записей из таблицы то получается $id=0;
так зачем его передовать ? когда у нас:
есть следующая строчка:
if (isset($_REQUEST[\'id\'])) $id=intval($_REQUEST[\'id\']); else $id=0; ?

или я не прав ?
Название: Помогите разобратся...
Отправлено: Comissar от 05 Ноября 2003, 10:17:59
Id нужно передавать потому, что после перехода со ссылке тебе нужно будет знать, на какую страницу перешли. Id в данном случае будет указывать номер статьи, с которой начинать отображать выбраную страницу статей.

Если все наоборот - поменяй условие в нужном месте на обратное.
Для этого заключи его в скобки и поставь перед ними знак восклицания.

Вот так:
if (!($id==$i*$articles_per_page)) {
Или так:
if ($id!=$i*$articles_per_page) {

П.С. Ты разобрался с отличием равенства от присваивания?
Если да - попробуй понять принципы работы условного оператора if
Название: Помогите разобратся...
Отправлено: Меняздесьдавнонет от 05 Ноября 2003, 10:40:53
при ссылке на первую страницу id передавать действительно, не обязательно. Но поскольку такая проверка только усложнит твою программу, то я бы на твое месте сначада сделал с передачей.
Название: Помогите разобратся...
Отправлено: Художник от 05 Ноября 2003, 12:05:25
спасибо вам огромное ! У меня все заработало...
да конечно я разобрался с операторами "=" и "=="
RomikChef , Comissar

//получаем результат из БД
$res=value;// integer

$articles_per_page=10

//получаем количество страниц
$total_pages = ceil($res/$articles_per_page)

а если value double  ?

я пытался $articles_per_page =0,1; но без успешно...(или может я не туда пру ?)

Знаю RomikChef ждал этого вопроса... :)

Что бы я делал без вас... :)
Название: Помогите разобратся...
Отправлено: Меняздесьдавнонет от 05 Ноября 2003, 12:22:08
Хватит тебя пичкать готовеньким.
Разберись сначала, ЧТО ты получаешь из базы, а потом задавайся вопросам - а если это интеджер.

а то у тебя уже совсем ум за разум зашел. Копируешь без разбору, это все перемешивается с твоими бредовыми мыслями и ты вообще перестаешь понимать, что делает твоя программа.
Вот сядь, и распиши сам для себя - что у тебя откуда берется и какая переменная что значит.
А пока я тему закрываю, ибо терпение мое лопнуло