Maison >base de données >tutoriel mysql >Comment implémenter la pagination de base de données en PHP à l'aide de LIMIT et OFFSET de MySQL ?

Comment implémenter la pagination de base de données en PHP à l'aide de LIMIT et OFFSET de MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-05 03:13:41284parcourir

How to Implement Database Pagination in PHP using MySQL's LIMIT and OFFSET?

Pagination utilisant MySQL LIMIT, OFFSET avec réponse

La pagination permet de diviser un grand ensemble de données en pages plus petites et gérables, une technique courante dans le développement Web . MySQL propose des clauses LIMIT et OFFSET pour gérer la pagination.

Problème :

Vous devez créer plusieurs pages pour afficher les données d'une table de base de données avec un nombre prédéfini d'éléments par page, mais sans coder en dur la pagination logique.

Solution :

Utilisez un paramètre de pagination dans l'URL, tel que :

http://yoursite.com/itempage.php?page=2

Vous pouvez accéder au numéro de page demandé en utilisant $_GET['page'].

Modifiez votre requête SQL pour calculer dynamiquement le décalage en fonction de la page nombre :

// determine page number from $_GET
$page = 1;
if(!empty($_GET['page'])) {
    $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);
    if(false === $page) {
        $page = 1;
    }
}

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

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

Pour déterminer le nombre total de pages, vous devez compter le nombre de lignes dans le tableau :

$sql = "SELECT your_primary_key_field FROM menuitem";
$result = mysqli_query($con, $sql);
$row_count = mysqli_num_rows($result);
// free the result set as you don't need it anymore
mysqli_free_result($result);

$page_count = 0;
if (0 === $row_count) {  
    // maybe show some error since there is nothing in your table
} else {
   // determine page_count
   $page_count = ceil($row_count / $items_per_page);
   // double check that request page is in range
   if($page > $page_count) {
        // error to user, maybe set page to 1
        $page = 1;
   }
}

Lors de l'affichage des données paginées, vous pouvez utiliser le Variables $page et $page_count pour générer les liens appropriés :

// later when outputting page, you can simply work with $page and $page_count to output links
// for example
for ($i = 1; $i <= $page_count; $i++) {
   if ($i === $page) { // this is current page
       echo 'Page ' . $i . '<br>';
   } else { // show link to other page   
       echo '<a href=&quot;/menuitem.php?page=' . $i . '&quot;>Page ' . $i . '</a><br>';
   }
}

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