[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод из БД, последняя строка в цикле
inpost
Всем привет, есть ли штатная функция определить, что данная запись есть последняя запись при переборе:
$res = mysql_query();
while($row = mysql_fetch_array($res))
{
echo $row['lala'];
}

То есть мне надо вывести все записи, но для последней применить особый стиль.
Пока есть мысль сделать подсчет через mysql_num_rows(); А потом считать через ++$i, пока не доберусь до последней, но так как слишком часто стал вопрос обращения именно к последней записи, интересуюсь, может есть более правильный способ?



Спустя 36 минут, 29 секунд (6.04.2011 - 07:37) ИНСИ написал(а):
inpost можно через foreach обойти цикл, примерно так:

$count = sizeof($rows);
foreach($rows as $key => $data) {
if($key == $count) {
// последняя запись
}
}

Спустя 3 минуты, 22 секунды (6.04.2011 - 07:41) inpost написал(а):
velbox
Тот же самый цикл и тот же самый подсчет. Может есть штатная функция для мускула?

Спустя 20 минут, 22 секунды (6.04.2011 - 08:01) ИНСИ написал(а):
inpost штатной функции, для того чтобы узнать последнюю запись кажется нет. Можно лишь вычислением это узнать.

Спустя 43 минуты, 6 секунд (6.04.2011 - 08:44) kirik написал(а):
Вот такой вот какашкокод получился B)
while(1)
{
if(!$row = mysql_fetch_array($res)) {
echo 'last: ' . $prow['blabla'];
break;
}
if(isset($prow)) {
echo $prow['blabla'];
}
$prow = $row;
}


Красивее наверное всё таки с mysql_num_rows выйдет (но зато лишний вызов функции) :)

UPD
Даже так:
while(1) {
$row = mysql_fetch_array($res);

if(isset($prow)) {
if($row) {
echo $prow['blabla'];
} else {
echo 'last: ' . $prow['blabla'];
break;
}
}


$prow = $row;
}

Почти идеально :)

Спустя 1 час, 4 минуты, 37 секунд (6.04.2011 - 09:49) YVSIK написал(а):
вот небольшой списочек
может пригодится

Спустя 10 минут, 27 секунд (6.04.2011 - 09:59) inpost написал(а):
YVSIK
Лучше уж смотреть на php.net =)

Спустя 1 час, 41 минута, 52 секунды (6.04.2011 - 11:41) Trianon написал(а):
$ses = mysql_query($sql) or die("error in $sql <br> ".mysql_error());

if($row = mysql_fetch_assoc($res)) do
{ $next = mysql_fetch_assoc($res);

// здесь тело цикла
// признак последней строки --- !$next


}while($row = $next);


еще вариант:

$ses = mysql_query($sql) or die("error in $sql <br> ".mysql_error());

for($row = mysql_fetch_assoc($res); $row; $row = $next)
{ $next = mysql_fetch_assoc($res);

// здесь тело цикла
// признак последней строки --- !$next


}

Спустя 24 минуты, 15 секунд (6.04.2011 - 12:05) dima4321 написал(а):
$res = mysql_query();
while($row = mysql_fetch_array($res))
{
if($row['lala']<count($row)-1)

{
echo $row['lala'];
}

else

{

echo $row['lala']; // и выделение

}

Спустя 38 минут, 45 секунд (6.04.2011 - 12:44) inpost написал(а):
Всем спасибо, жаль, что нет конкретной функции, лишь всё подвязывается на правильной голове... smile.gif А ведь часто именно требуется выделить первый и последний элемент smile.gif

Спустя 24 минуты, 42 секунды (6.04.2011 - 13:09) Trianon написал(а):
inpost

запрос может быть буферизированный (обычный) и небуферизированный (mysql_unbuffered_query()).
Число строк в отклике буферизированного запроса известно из функции mysql_num_rows() , соответственно, для определения последней больше никакая функция не нужна - знай считай себе строки да сравнивай со значением.

Число строк небуферизированного запроса в принципе становится известным не раньше, чем будет предпринята попытка вытянуть строку сверх результата. А значит тоже места для функции нет.

Лишние функции вообще вред.


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.