Pagination à l'aide de MySQL LIMIT, OFFSET : création de pages dynamiques
La pagination permet aux utilisateurs de parcourir de grands ensembles de données en affichant un nombre limité d'éléments par page . En utilisant les clauses MySQL LIMIT et OFFSET, nous pouvons récupérer efficacement des pages de données spécifiques.
Cependant, il est inefficace de créer une page distincte pour chaque numéro de page potentiel. Au lieu de cela, nous pouvons déterminer dynamiquement le nombre de pages en fonction du nombre total de lignes dans la base de données.
Détermination du nombre de pages
Pour trouver le nombre total de pages, nous devons d'abord calculer le nombre total de lignes dans le tableau à l'aide d'une requête distincte.
SELECT COUNT(*) FROM menuitem
Cela renverra une seule ligne avec une colonne contenant la ligne totale compter.
Calcul du nombre de pages
Nous pouvons ensuite calculer le nombre total de pages en divisant le nombre total de lignes par les éléments souhaités par page et en arrondissant à l'entier le plus proche. .
$page_count = (int)ceil($row_count / $items_per_page);
Ajustement pour une page invalide Requêtes
Lorsqu'un utilisateur demande une page qui n'existe pas (ex : page 5 alors qu'il n'y en a que 3), nous pouvons le rediriger vers la dernière page ou la première page, selon la situation .
Sortie des liens de page
Une fois que nous connaissons le nombre total de pages, nous pouvons générer une liste de pages liens. Pour la page actuelle, nous l'affichons sous forme de texte, tandis que pour les autres pages, nous créons des liens vers celles-ci.
for ($i = 1; $i <= $page_count; $i++) { if ($i === $page) { // current page echo 'Page ' . $i . '<br>'; } else { // link to other page echo '<a href="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>'; } }
Code révisé
Utilisation du calcul de page dynamique méthode, votre code révisé pourrait ressembler à ceci :
// Get page number from URL $page = 1; if (!empty($_GET['page'])) { $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT); if (false === $page) { $page = 1; } } // Get total row count $sql = "SELECT COUNT(*) FROM menuitem"; $result = mysqli_query($con, $sql); $row_count = mysqli_num_rows($result); mysqli_free_result($result); // Calculate page count $page_count = (int)ceil($row_count / $items_per_page); // Double check page is in range if ($page > $page_count) { $page = 1; } // Calculate offset $offset = ($page - 1) * $items_per_page; // Select limited data $sql = "SELECT * FROM menuitem LIMIT " . $offset . "," . $items_per_page; $result = mysqli_query($con, $sql); // ... (Rest of your code) ... // Output page links for ($i = 1; $i <= $page_count; $i++) { if ($i === $page) { echo 'Page ' . $i . '<br>'; } else { echo '<a href="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>'; } }
Ce code vous permet de créer dynamiquement des pages en fonction du nombre de lignes dans la base de données, éliminant le besoin de numéros de page et de décalages codés en dur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!