PHP: creare la paginazione per i risultati ottenuti da un database MySQL

PHP: creare la paginazione per i risultati ottenuti da un database MySQL

In PHP è semplice creare la paginazione dei risultati ottenuti da un database MySQL.

La soluzione è la seguente:


require_once('db-functions.php');

$products_no = get_results('SELECT count(*) AS total FROM products');
$total_products = (int) $products_no[0]['total'];
$per_page = 40;
$pages = floor($total_products / $per_page);
$current_page = (isset($_GET['page']) && ctype_digit($_GET['page']) && intval($_GET['page']) <= $pages) ? intval($_GET['page']) : 1;
$offset = $current_page * $per_page;
$query = "SELECT id, title, price FROM products ORDER BY price DESC LIMIT $per_page OFFSET $offset";
$products = get_results($query);    
    

Quindi nella nostra view possiamo creare la paginazione come segue:


<nav id="pagination">
<?php for($i = 0; $i < $pages; $i++): $p = $i + 1; ?>
            
    <a href="?page=<?= $p; ?>"<?php if($p == $current_page): ?> class="current-page"<?php endif; ?>><?= $p; ?></a>
            
<?php endfor; ?>
</nav>

Torna su