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-адреса для вычисления номера текущей страницы, а также для формирования пагинатора, который будет отображать навигацию по страницам.