Как узнать номер захода в таком цикле?

Патриот

Новичок
Как узнать номер захода в таком цикле?

PHP:
$q=mysql_query("SELECT * FROM `table`");
while($row=mysql_fetch_array($q))
{
   можно ли тут узнать номер [b]последнего[/b] захода?
}
суть задумки такая:
если первый заход, то: print"image1";
если не первый и не последний, то: print"image2";
если последний заход, то: print"image3";
-=-==-==-==-=-=--===-
иными словами этот цикл для простого меню, где для грамотного построения нужно подгружать разные картинки...
 

AHTIXPICT

Новичок
$q=mysql_query("SELECT * FROM `table`");
$cnt=0;
while($row=mysql_fetch_array($q))
{
$cnt++;
можно ли тут узнать номер последнего захода?
}
 

Патриот

Новичок
О! Пока обедал, дошло =) (как работает не проверял)
PHP:
$q=mysql_query("SELECT * FROM `table`"); 
$cnt=0;
$a=mysql_fetch_array($q);
$b=count($a);
while($row=mysql_fetch_array($q)) 
{ 
   if($cnt==0)
   {
     print "Первый";
   } else {
   if($cnt==$b)
   {
     print"Последний";
   }
             } else {
     print"Промежуточный";
   }

$cnt++;
}
 

AHTIXPICT

Новичок
Патриот
Не неправильно.
$b=count($a);
Как ты считаешь чему равно $b ?
 

vitus

мимо проходил
имхо это ему поможет, а ещё один вопрос-можно?
:
как узнать время последнего прихода?



:D

серьёзно - заход - это кто?
с новым годом :)
 

Фанат

oncle terrible
Команда форума
vitus
это итерация.

Патриот
Все правильно, только можно короче
PHP:
while($row=mysql_fetch_array($q)) { 
   if($cnt++==0)  { 
     print "Первый"; 
   } elseif ($cnt==$b)    { 
     print"Последний"; 
   } else { 
     print"Промежуточный"; 
   } 
}
еще здесь проблема сравнения исправлена.
в твоем случае $c надо было начинать с единицы.

-~{}~ 30.12.04 18:31:

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

и к mysql все это не имеет никакого отношения.
 

Wicked

Новичок
Если я не ошибаюсь, нужно узнать, является ли ЗАПИСЬ последней, а не является ли ПОЛЕ последним.

Резюмируя Cid'а и AHTIXPICT'a, вариант такой:
PHP:
$q=mysql_query("SELECT * FROM `table`"); 
$cnt=0; 
$num_rows = mysql_num_rows($q)
while($row=mysql_fetch_array($q)) { 
   $cnt++;
   if($cnt==1)  { 
     print "Первый"; 
   } elseif ($cnt==$num_rows)    { 
     print"Последний"; 
   } else { 
     print"Промежуточный"; 
   } 
}
 

Фанат

oncle terrible
Команда форума
Wicked, спсибо что продублировал мой код.
Всегда приятно когда тебя копируют плагиаторы :)
 

Wicked

Новичок
Фанат, не знаю, о чем ты :) Я использовал код Патриота :Р
 

Фанат

oncle terrible
Команда форума
Да ладно прикидываться овечкой.
Я понимаю, всем хочется выглядеть умными, даже за чужой счет.
В твоем ответе хоть ошибок нет. Редкость на этом форуме. Уже радует.
 

Wicked

Новичок
Фанат, не обижайся, душка %) Я не думал, что тебя это так заденет )
 

AHTIXPICT

Новичок
Фанат по моему ты не прав .
В твоем коде неизвестно сколько строк вернул запрос.mysql_num_rows()
 

Wicked

Новичок
AHTIXPICT, это по мнению Фаната не самое главное )
Главное в коде - это ФОРМАТИРОВАНИЕ, пусть даже сам скрипт делает абсолютно другое! :)
 

Фанат

oncle terrible
Команда форума
Ох, ребятки, я забыл совсем.
Извините ради бога.
Я забыл совсем, что вы других считаете такими же слепыми, как сами.
Ну конечно же.
Я виноват.
Как можно приводить код без mysql_num_rows!
Все правильно. Ведь вы не читаете топики в которые отвечаете. И, конечно же, ответ Cid-а никто не видел.

Все правильно. Ведь ответ на форуме не должен показывать ПРИНЦИП, СТРУКТУРУ КОДА.
Ответ на форуме для даунов должен выглядеть только как законченный код. предназначенный для копирования.
простите еще раз.
 

Фанат

oncle terrible
Команда форума
дык - а я о чем.
противно, конечно.
Ну не учел, что до прочтения моего ответа надо прочесть еще твой и сидов. Что до этого додуматься могу только я, а остальным надо разжевывать.
 

Wicked

Новичок
Фанат, я просто хотел расставить все точки над "и", т.к. даже после постов Антихриста и Cid'а ты все еще продолжал уводить Патриота в сторону от правильного решения. Именно этим я руководствовался, когда писал свой первый пост в этом треде, а отнюдь не тем, чтобы поконфликтовать с кем-нибудь (читай "тобой").
 
Сверху