$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](http://phpforum.ru/html/emoticons/sad.gif)
Спустя 15 минут, 34 секунды (12.01.2010 - 15:15) maxsim1982i написал(а):
поле nn auto_incriment
а почему не эффективный.
почему в LIMIT первое значение не видит
а почему не эффективный.
почему в LIMIT первое значение не видит
Спустя 55 минут, 57 секунд (12.01.2010 - 16:11) VolCh написал(а):
Зачем вытягивать всю базу, чтобы посчитать количество записей?
лучше заменить на
А это вообще ужас
записывается одной строкой (если $i в цикле не нужна)
while ($ten=mysql_fetch_array($res));
Ну а главное
что пытался этим сказать? Если нужны последние 10, то $nach должно быть равно 0, ведь вывод уже отсортирован в порядке убывания, и беря $kol_rec-10 ты получаешь последние 10 записей в уже отсортированой таблице, то есть на самом деле первые 10
$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
все большое спасибо я понял. тема закрыта
все большое спасибо я понял. тема закрыта
_____________