Содержимое статьи
для пагинации на странице нам понадобится несколько переменных с данными о странице
$page = $_GET['p'] ?? 1;
$countOnPage = 5; // количество элементов на странице
$query = 'SELECT COUNT(id) as count FROM product';
$totalItem = $pdo->query($query)->fetchColumn();
Немного изменить основной запрос для лимитирования и пропуска записей предыдущих страниц
$query = 'SELECT product.*, wc.name as `category_name`
FROM product
LEFT JOIN category wc ON product.category_id = wc.id
WHERE 1
LIMIT ' . $countOnPage .
' OFFSET ' . ($page - 1) * $countOnPage;
создать и подключить файл функций и внутри описать функцию пагинатора
<?
function paginator($path, $page, $countOnPage, $total) {
$count = ceil($total / $countOnPage);
if ($count < 2) return false; // для 1 страницы пагинатор не нужен
?>
<ul class="pagination">
<li><a href="<?=$path?>">«</a></li>
<?for ($i=1; $i<=$count; $i++) {
$class = ($i == $page) ? 'class="active"': '';
$href = ($i != $page) ? 'href="'.$path.'?p='.$i.'"': '';
?>
<li <?=$class?>><a <?=$href?>><?=$i?></a></li>
<?}?>
<li><a href="<?=$path . '?p='.$count?>">»</a></li>
</ul>
<?}
там где нужно вывести пагинатор вызвать эту функцию
paginator('/admin/crud_product.php', $page, $countOnPage, $totalItem);