Очень часто встречающаяся задача вывести данные из БД, при этом разбив по страницам. Первая идея которая приходит в голову сделать дубль запроса с подсчетом строк и поделить на количество строк которые будут выводиться на одной страницы. Но естественно меня это не устраивает по причинам:
- Лишний запрос к БД.
- Не удобно использовать, так как функцией сделать для разных видов запросов не возможно, а я хотел, чтобы все считалось именно функцией.
Решением этой задачи стала опция в select запросе - SQL_CALC_FOUND_ROWS которая запоминает количество найденных строк в запросе и возвращает при запросе SELECT FOUND_ROWS(). Эта опция и дает возможность создать функцию которая запускается после основного запроса и выводит список страниц.
Читать запись полностью »

