| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > count () с лимитом |
| Автор: NLspieler 28.7.2009, 03:36 | ||||||
| Пишу гостевую книгу. Точнее я ее уже полностью написал, но остался один не совсем решенный вопрос. Дело в том, что есть одна функция, которая достаёт заданную страницу с сообщениями из базы данных. В ней используется такой запрос:
//$limit хранит LIMIT, зависящий от номера страницы Но тут мне понадобилась функция, которая вычисляет количество сообщений на заданной странице. Не долго думая, я таким образом модернизировал этот запрос:
Но этот запрос работает совсем не так, как я ожидал. Для первой (нулевой) страницы он возвращает число всех записей. Для последующих всегда возвращает ноль. Решил я проблему так, использовал запрос:
а результат пропустил через функцию mysql_num_rows() Такое решение оказалось рабочим, но очень не красивым. Зачем доставать данные, которые не используются?! Есть ли способ решения на уровне SQL, без использования php? |
| Автор: Wolf1994 28.7.2009, 07:49 |
| Количество сообщений на странице равно параметру $limit. Для крайней страницы можно пересчитать все сообщения, разделить на лимит, округлить до целых, умножить на $limit и найти между полученным значением и количеством всех сообщений разность - это и будет ответом. |
| Автор: NLspieler 28.7.2009, 08:25 | ||
| Написал не сложную функцию, не отнимающую лишних ресурсов БД
|
| Автор: Ипатьев 28.7.2009, 09:42 |
Ну разумеется. Количество возвращаемых строк не превышает лимита. И просто счастье, что этот способ не сработал, поскольку, как я понял, ты хотел выполнять столько запросов, сколько страниц в гостевой. Но непонятно, зачем вообще понадобилась такая функция. Зачем нужно знать количество сообений на других страницах? |
| Автор: NLspieler 29.7.2009, 07:07 |
Если пользователь - админ, то тогда появляется кнопочка удаления сообщения возле сообщений. Если на нее нажать, происходит переход к срипту удаления. Ему передаются номер удаляемого сообщения и номер страницы с, которой оно удаляется. После удаления, происходит подсчет сообщений на странице, с которой удалилось сообщения, и если их больше нет, то происходит редирект на предидущую страницу. А если сообщения еще остались, то тогда происходит редирект на эту же страницу. Правда сейчас эта функция стала и правда не нужна, т.к. гораздо проще использовать функцию количества страниц. Если переданный номер страницы больше количества страниц, то редирект на предидущую (последнию) |