Maison > base de données > tutoriel mysql > Comment générer dynamiquement des liens de pagination dans MySQL à l'aide de LIMIT et OFFSET ?

Comment générer dynamiquement des liens de pagination dans MySQL à l'aide de LIMIT et OFFSET ?

Linda Hamilton
Libérer: 2024-12-05 15:17:10
original
874 Les gens l'ont consulté

How to Dynamically Generate Pagination Links in MySQL Using LIMIT and OFFSET?

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
Copier après la connexion

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);
Copier après la connexion

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>';
  }
}
Copier après la connexion

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>';
  }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal