Создаём пагинатор

Содержимое статьи

для пагинации на странице нам понадобится несколько переменных с данными о странице

$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);

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *