Pagination - это относительно просто, и я попытаюсь описать его самым простым способом.
Чтобы начать с здесь 5 термины или фразы (или параметры), которые вы столкнетесь в большинстве сценариев постраничной:
- Limit (или результатов на странице)
- Offset (где, чтобы начать набор результатов/записей с)
- Текущая страница
- Всего результатов
- Количество страниц
Возьмем пример запроса ниже:
SELECT * FROM products WHERE active = 1 LIMIT 0 , 25
В SQL выше (он должен работать на MySQLi):
- 25 => Является ли предел (или результатов на странице)
- 0 => Смещение (т.е.е начинаются от результата или записи 0)
, который переводит в,
give me the results 0 - 24, i.e. the first 25 results
Таким образом, если предположить, что у вас есть таблица продуктов с 1000 записей и вам необходимо, чтобы отобразить их на веб-странице только показывает 25 записей на странице: Находясь на первой странице это будет значение из 5 условий, описанных выше:
- Limit (результаты на одной странице) => 25
- смещение => 0
- Текущая страница => 1
- Всего результатов => 1000
- Количество страниц => Итоговые результаты/предел => 40
Обычно смещение вычисляется динамически на основе текущей страницы и ограничения , поэтому для страницы 1 результатов вашего продукта, смещение будет равно:
offset = (current page * limit) - limit
i.e. (1 * 25) - 25 = 0
так что ваш MySQLi запрос будет:
SELECT * FROM products WHERE active = 1 LIMIT [OFFSET] , [LIMIT]
i.e. SELECT * FROM products WHERE active = 1 LIMIT 0 , 25
Используя тот же принцип для стр.2 результатов ваших продуктов, смещение (или начало результатов) будет:
offset = (current page * limit) - limit
i.e. (2 * 25) - 25 = 25
так что ваш MySQLi запрос будет:
SELECT * FROM products WHERE active = 1 LIMIT [OFFSET] , [LIMIT]
i.e. SELECT * FROM products WHERE active = 1 LIMIT 25 , 25
, который переводит в,
give me the results 25 - 49, i.e. the next 25 results starting from record 25
другие термины будут иметь следующие значения:
- Limit (или результатов на странице) => 25
- Текущая страница => 2
- Всего результатов => 1000
- Количество страниц => 40
В наиболее простое использование -cases для разбивки на страницы, единственными параметрами, которые меняются, являются смещение и текущая страница. Если вы вводите фильтры в свои запросы, то в дополнение к прежним 2 итоговые результаты и количество страниц также могут измениться.
Я надеюсь, что приведенное выше объяснение помогло вам дать вам базовое представление о разбиении на страницы.
Ну, разбивка на страницы - это не сложная проблема, она просто довольно вовлечена, поэтому любые учебники на ней будут чувствовать себя огромными. Не могли бы вы связаться с некоторыми конкретными статьями/учебниками, которые вы обнаружили, которые, по вашему мнению, слишком заняты? Это может облегчить людям помощь в уточнении их ответов. – AgmLauncher
Я добавил два примера, на которые я смотрел. – user2565624