Maison >développement back-end >tutoriel php >Comment implémenter la pagination avec MySQL LIMIT et OFFSET ?

Comment implémenter la pagination avec MySQL LIMIT et OFFSET ?

DDD
DDDoriginal
2024-12-18 03:51:19864parcourir

How do I Implement Pagination With MySQL LIMIT and OFFSET?

Pagination à l'aide de MYSQL LIMIT, OFFSET

La pagination est une technique utilisée pour afficher de grands ensembles de données dans des morceaux ou des pages gérables. Dans MySQL, cela peut être réalisé à l'aide des clauses LIMIT et OFFSET.

La question

Un utilisateur dispose d'une table de base de données avec un grand nombre d'éléments et souhaite implémenter pagination sur une page Web. L'utilisateur a déjà configuré un code pour afficher un nombre fixe d'éléments (par exemple 4) par page, mais il doit déterminer dynamiquement le nombre total de pages et permettre aux utilisateurs de naviguer entre elles.

La réponse

Pour y parvenir, il est recommandé d'utiliser un paramètre de requête URL pour la pagination. Le paramètre doit représenter le numéro de page, tel que "/itempage.php?page=2". Dans le code côté serveur, vous pouvez récupérer le numéro de page à l'aide de $_GET['page' et l'utiliser pour calculer les valeurs LIMIT et OFFSET pour votre requête SQL.

Par exemple :

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

$items_per_page = 4;
$offset = ($page - 1) * $items_per_page;

// Build the SQL query
$sql = "SELECT * FROM menuitem LIMIT " . $offset . "," . $items_per_page;

Pour déterminer le nombre total de pages, exécutez une requête SQL distincte avant de limiter les résultats :

$sql = "SELECT COUNT(*) AS total_rows FROM menuitem";
$result = mysqli_query($con, $sql);
$row_count = mysqli_num_rows($result);
mysqli_free_result($result);

$page_count = 0;
if ($row_count === 0) {
    // Handle empty table error
} else {
    $page_count = ceil($row_count / $items_per_page);

    if ($page > $page_count) {
        // Handle out-of-range page request
    }
}

Avec le nombre total de pages et le numéro de page actuel, vous pouvez maintenant générer dynamiquement des liens de navigation pour le contenu paginé.

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