![]() |
![]() |
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). |