Maison  >  Article  >  développement back-end  >  Comment implémenter la pagination dynamique dans MySQL à l'aide de LIMIT et OFFSET ?

Comment implémenter la pagination dynamique dans MySQL à l'aide de LIMIT et OFFSET ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-15 09:03:03389parcourir

How to Implement Dynamic Pagination in MySQL Using LIMIT and OFFSET?

Pagination à l'aide de MySQL LIMIT et OFFSET

Introduction

La pagination est essentielle pour gérer efficacement de grands ensembles de données, permettant aux utilisateurs de parcourir les données dans des pages plus petites et gérables . MySQL fournit deux mots-clés, LIMIT et OFFSET, pour implémenter la pagination.

Comprendre le problème

Le code fourni utilise une limite fixe de 4 éléments par page, qui fonctionne pour une taille de base de données prédéterminée. Cependant, l'objectif est de créer une pagination dynamique sans décalage de page codé en dur.

Mise en œuvre de la pagination dynamique

Pour créer une pagination dynamique, nous devons :

  1. Déterminer le numéro de la page actuelle à partir du paramètre URL ($_GET['page']).
  2. Définir le nombre d'éléments à afficher par page ($items_per_page).
  3. Calculez le décalage pour la page actuelle : $offset = ($page - 1) * $items_per_page.
  4. Construisez la requête SQL en utilisant LIMIT $offset, $items_per_page.

Calcul du nombre total de pages

Pour déterminer si un Le lien "PAGE SUIVANTE" doit être affiché, nous devons connaître le nombre total de pages :

  1. Exécutez une requête SQL distincte pour compter le nombre total de lignes dans le tableau : $row_count = mysqli_num_rows(mysqli_query ($con, "SELECT your_primary_key_field FROM menuitem"));.
  2. Calculez le nombre total de pages : $page_count = (int)ceil($row_count / $items_per_page).

Affichage des liens de pagination

Utilisation du numéro de page actuel ($page) et du nombre total de pages ($page_count) , vous pouvez générer dynamiquement des liens pour la pagination. Par exemple, une boucle pourrait parcourir les pages et créer des liens pour chacune d’elles. La page actuelle serait affichée sous forme de texte, tandis que les autres pages seraient affichées sous forme de liens.

Exemple de code

// Get the current page number from the URL
$page = 1;
if (isset($_GET['page'])) {
    $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);
    if ($page === false) {
        $page = 1;
    }
}

// Set the number of items to display per page
$items_per_page = 4;

// Build the query
$offset = ($page - 1) * $items_per_page;
$sql = "SELECT * FROM menuitem LIMIT $offset, $items_per_page";

// Execute the query and fetch the results

// Calculate the total number of rows
$sql_count = "SELECT COUNT(*) AS row_count FROM menuitem";
$result_count = mysqli_query($con, $sql_count);
$row_count = mysqli_num_rows($result_count);
$page_count = (int)ceil($row_count / $items_per_page);

// Check if the requested page is in range
if ($page > $page_count) {
    // Display an error or set the page to 1
}

// Later, when outputting the page, you can use $page and $page_count to generate pagination links

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn