Php как сделать пагинацию

Изучите все принципы и примеры для создания пагинации на PHP. Узнайте как правильно использовать библиотеку для постраничной навигации и выполнить параметризацию с помощью запроса.

Как сделать пагинацию в PHP

Пагинация используется для облегчения и организации длинных списков данных, деля их на несколько страниц с меньшим количеством элементов на каждой странице. Наиболее распространенным способом реализации пагинации в PHP является использование запросов к базе данных. Давайте рассмотрим простой пример того, как мы можем реализовать пагинацию в PHP с помощью запросов к базе данных.

Во-первых, мы должны иметь таблицу в базе данных с данными, которые мы хотим пагинировать. Для этого примера давайте создадим простую таблицу с именем «items» и двумя столбцами — «id» и «name».


CREATE TABLE items (
  id INTEGER PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255)
);

Затем нам нужно написать запрос к базе данных для получения данных. Для пагинации мы будем использовать два параметра — «page» и «per_page». Первый параметр будет указывать на номер текущей страницы, а второй — на количество элементов на странице. Наш запрос будет выглядеть следующим образом:


SELECT * 
FROM items 
LIMIT :page, :per_page

Теперь нам нужно написать PHP-скрипт для отображения данных. Сначала мы должны подключиться к базе данных, а затем выполнить наш запрос с параметрами, которые мы получили из URL-адреса страницы. Для этого мы будем использовать PDO, предоставляемый PHP. Наш PHP-скрипт может выглядеть следующим образом:


// Подключаемся к базе данных
$db = new PDO('mysql:host=localhost; dbname=my_database', 'username', 'password');

// Получаем номер текущей страницы
$page = $_GET['page'];

// Устанавливаем количество элементов на странице
$per_page = 10;

// Вычисляем первый элемент страницы
$offset = ($page - 1) * $per_page;

// Формируем запрос
$sql = "SELECT * FROM items LIMIT :offset, :per_page";

// Подготавливаем запрос
$statement = $db->prepare($sql);

// Привязываем значения параметров
$statement->bindValue(':offset', $offset, PDO::PARAM_INT);
$statement->bindValue(':per_page', $per_page, PDO::PARAM_INT);

// Выполняем запрос
$statement->execute();

// Получаем данные
$items = $statement->fetchAll();

// Отображаем данные
foreach ($items as $item) {
  echo $item['name'];
}

Теперь, когда мы получили данные, мы можем создать пагинатор, который будет отображать навигацию по страницам. Для этого мы можем использовать стандартную функцию PHP «range», которая принимает два аргумента — начальное и конечное число и возвращает массив чисел, которые находятся между ними. Наш пагинатор может выглядеть следующим образом:


// Получаем общее количество элементов
$total_items = $db->query("SELECT COUNT(*) FROM items")->fetchColumn();

// Вычисляем общее количество страниц
$total_pages = ceil($total_items / $per_page);

// Формируем массив со страницами
$pages = range(1, $total_pages);

// Отображаем пагинатор
foreach ($pages as $page) {
  echo '<a href="?page=' . $page . '">' . $page . '</a>';
}

Таким образом, мы можем с легкостью реализовать пагинацию в PHP с помощью запросов к базе данных. При этом мы используем параметры из URL-адреса для вычисления номера текущей страницы, а также для формирования пагинатора, который будет отображать навигацию по страницам.

Ответы (0)