К списку форумов К списку вопросов
Вывод запроса постранично.
makm
13.10.2004 - 11:09
Для того чтобы узнать кол-во страниц (разбиений) надо знать кол-во строк в выполненном запросе. Т.е. получается что надо выполнять 2 раза один и тот же запрос. Как быть.
makm
1 - 13.10.2004 - 11:11
БД mesql
php
makm
2 - 13.10.2004 - 11:13
MYSQL
Zeratul
3 - 13.10.2004 - 11:18
ну... не знаю как другие, а я делал так:
1. $res = mysql_query ("select ...") - полная выборка
2. $total_results = mysql_num_rows($res); // всего результатов
3.
// выводим, к примеру, третью страницу:
$start = 20*3+1; $end = 20*4;
$counter = 0;
while ($str = mysql_fetch_array($res))
{
 $counter ++;
 if (($counter > $end) || ($counter < $start))
 {
  continue;
 }
...
}
buster
4 - 13.10.2004 - 12:55
Два запроса и надо. Не парься :о))
makm
5 - 13.10.2004 - 14:22
Спасибо всем. Делаю вариант Zeratulа
Kokoc
6 - 13.10.2004 - 14:40
Лучше использользовать SELECT ... LIMIT x,y
Вот еще пример:
http://forum.ru-board.com/topic.cgi?forum=31&topic=2520#1
Можно также для подсчета задействовать опцию SQL_CALC_NUM_ROWS и функцию FOUND_ROWS().
Mips
7 - 13.10.2004 - 17:22
buster, иногда лучше жевать, чем говорить ;)
buster
8 - 13.10.2004 - 20:44
Дык и жуй :о))
Zeratul
9 - 14.10.2004 - 10:26
Запросы с LIMIT, к сожалению, не всегда хороши. Часто нужно еще полученные из БД значения с чем-то сравнивать и только если все ок - тогда выводить. Тогда LIMIT не поможет...
Уверенный
10 - 14.10.2004 - 11:54
(9), надо стараться сравнивать все в запросе.
Kokoc
11 - 14.10.2004 - 13:59
(9) Например?
Кстати, использование CALC_FOUND_ROWS более эффективно для получения общего кол-ва записей, чем COUNT(), особенно если используется сложный WHERE в SELECT (ведь надо дважды вызвать SELECT - один раз для COUNT(), второй для выборки значений).
Выборку данных можно ограничить одним запросом:
SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE ... LIMIT x,y
тогда повторный вызов
SELECT FOUND_ROWS()
даст кол-во записей, который могли бы отобраться в предыдущем select'е, если бы не был указан limit (т.е. общее число записей, удовлетворяющее условию WHERE).

К списку вопросов на форуме Веб-дизайн

>>