[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: выборка из базы
maxsim1982i
есть вот такой код
$count=10;
$sql="SELECT * FROM `tender`";
$res=mysql_query($sql);
$kol_rec=mysql_num_rows($res);
$page_kol=ceil($kol_rec/$count);// счетчик
$nach= $kol_rec-$count;
$sql="SELECT * FROM `tender` ORDER BY `nn` DESC LIMIT $nach, $count";
$res=mysql_query($sql);
for ($i=0; $i<mysql_num_rows($res); $i++)
{
$ten=mysql_fetch_array($res);
}

данный запрос должен выводить данные с таблицы начиная с самого конца по 10 записей, а он выодит первые десять записей, что не правильно?



Спустя 22 минуты, 55 секунд (12.01.2010 - 14:59) VolCh написал(а):
поле nn точно зависит от порядка записей?

А вообще очень неэффективный код sad.gif

Спустя 15 минут, 34 секунды (12.01.2010 - 15:15) maxsim1982i написал(а):
поле nn auto_incriment
а почему не эффективный.
почему в LIMIT первое значение не видит

Спустя 55 минут, 57 секунд (12.01.2010 - 16:11) VolCh написал(а):
Зачем вытягивать всю базу, чтобы посчитать количество записей?
$sql="SELECT * FROM `tender`";
$res=mysql_query($sql);
$kol_rec=mysql_num_rows($res);

лучше заменить на
$sql="SELECT COUNT(*) FROM `tender`";
$res=mysql_query($sql);
$kol_rec=mysql_fetch_row($res);
$kol_rec=$kol_rec[0];



А это вообще ужас
for ($i=0; $i<mysql_num_rows($res); $i++)
{
$ten=mysql_fetch_array($res);
}

записывается одной строкой (если $i в цикле не нужна)
while ($ten=mysql_fetch_array($res));

Ну а главное
$nach= $kol_rec-$count;

что пытался этим сказать? Если нужны последние 10, то $nach должно быть равно 0, ведь вывод уже отсортирован в порядке убывания, и беря $kol_rec-10 ты получаешь последние 10 записей в уже отсортированой таблице, то есть на самом деле первые 10

Спустя 9 минут, 24 секунды (12.01.2010 - 16:20) maxsim1982i написал(а):
$kol_rec равно количеству записей в таблице вот к примеру у меня их 60 сответственно $nach=$kol_rec-$count будет равно 50 значит LIMIT должен выбрать 10 записей начиная с 50 LIMIT $nach,$count а почему то выбирает первый 10 записей

Спустя 6 минут, 57 секунд (12.01.2010 - 16:27) VolCh написал(а):
Он выбирает последние 10 записей из таблицы отсортированной по убыванию. Если нужны первые 10 по убыванию пиши LIMIT 0, 10, если нужно последние 10 по возрастанию пиши LIMIT 50, 10, но без ORDER BY ... DESC.

Спустя 41 секунда (12.01.2010 - 16:28) maxsim1982i написал(а):
VolCh
все большое спасибо я понял. тема закрыта


_____________
Быстрый ответ:

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