• Теория
  • Теория

Создаём пагинацию в каталоге

Интернет-магазин, над которым мы трудились в прошлых частях, отлично работает, но Кекс всё не успокоится. Он отказался от фильтров в каталоге и теперь хочет разделить его на страницы. На каждой странице должно быть не больше шести товаров. Разработчики называют постраничный вывод информации пагинацией.

Товары хранятся в массиве $products, они все сейчас отображаются на странице каталога. В переменной $limit записано, сколько товаров нужно показывать на странице. В нашем случае — 6.

В переменной $offset (в переводе с английского, «смещение») хранится порядковый номер первого товара на текущей странице. Если выводить по шесть товаров, то для первой страницы смещение будет 0, для второй — 6, для третьей — 12 и так далее.

Схема: смещение

Чтобы показать на странице лишь шесть товаров, используем встроенную функцию array_slice. Мы познакомились с ней в прошлой части. Эта функция копирует часть исходного массива и возвращает её в виде нового массива.

Функция array_slice принимает четыре аргумента. Чтобы получить товары для одной страницы, передадим функции следующие значения:

  • исходный массив — $products,
  • первый элемент — $offset,
  • количество элементов — $limit,
  • сохранять ли ключи — true, потому что ключ — это идентификатор товара, он нужен, чтобы показать правильную информацию о товаре.

Для первой страницы смещение $offset равно нулю, поэтому функция вернёт массив с первыми шестью товарами. Выведем полученный массив на страницу. После этого изменим значение переменной $offset, чтобы посмотреть, как выглядят разные страницы каталога.

Чтобы было удобнее следить за смещением, Думпо временно добавил на карточки товаров их порядковые номера.

Минимальный вид табов
  • index.html
HTML
HTML

Вы перешли на другую страницу

Кликните внутри мини-браузера, чтобы поставить фокус в это окно.

100%
Бабушка Кекс

Притормози, дружище

Проходить вызовы части «Числа и строки в PHP» тренажёра «Знакомство с PHP» можно после регистрации и оформления подписки.