Maison > Article > développement back-end > Comment mettre en œuvre une pagination intelligente pour un contrôle amélioré de la pagination ?
Mise en œuvre d'une pagination intelligente pour un affichage de pagination optimisé
La pagination joue un rôle crucial dans la navigation des utilisateurs à travers de grands ensembles de données en divisant le contenu en pages gérables. Cependant, la pagination traditionnelle peut conduire à des listes de pages étendues pour des ensembles de données étendus, ce qui rend difficile la navigation efficace des utilisateurs.
Pour résoudre ce problème, un algorithme de pagination intelligent peut être mis en œuvre, qui affiche de manière sélective uniquement quelques pages adjacentes. entourant la page actuelle. Cette technique de troncature minimise la longueur de la liste des pages, améliorant ainsi l'expérience utilisateur en offrant une navigation plus concise et plus facile à gérer.
Dans cette démonstration, nous nous concentrerons sur une implémentation PHP d'un algorithme de pagination intelligent :
<code class="php">// Limit the number of adjacent pages $adjacents = 3; // Fetch data for the current page // ... (Code snippet omitted for brevity) // Calculate pagination information $total_pages = ceil($total_results / $limit); $prev = $page - 1; $next = $page + 1; $lastpage = $lastpage - 1; // Initialize pagination HTML markup $pagination = '<nav aria-label="page navigation"><ul class="pagination">'; // Determine page range to display based on current page and adjacent page limit if ($lastpage < 7 + ($adjacents * 2)) { // Display all pages for ($i = 1; $i <= $lastpage; $i++) { $pagination .= "<li class='page-item" . ($i == $page ? ' active' : '') . "'><a class='page-link' href='?page=$i'>$i</a></li>"; } } else { // Display first and last pages $pagination .= "<li class='page-item'><a class='page-link' href='?page=1'>1</a></li>"; $pagination .= "<li class='page-item disabled'><span class='page-link'>...</span></li>"; $pagination .= "<li class='page-item'><a class='page-link' href='?page=$lastpage'>$lastpage</a></li>"; // Display pages adjacent to the current page if ($page < 1 + ($adjacents * 2)) { // Display pages near the beginning for ($i = 1; $i < 4 + ($adjacents * 2); $i++) { $pagination .= "<li class='page-item" . ($i == $page ? ' active' : '') . "'><a class='page-link' href='?page=$i'>$i</a></li>"; } } elseif ($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) { // Display pages in the middle $pagination .= "<li class='page-item disabled'><span class='page-link'>...</span></li>"; for ($i = $page - $adjacents; $i <= $page + $adjacents; $i++) { $pagination .= "<li class='page-item" . ($i == $page ? ' active' : '') . "'><a class='page-link' href='?page=$i'>$i</a></li>"; } } else { // Display pages near the end $pagination .= "<li class='page-item disabled'><span class='page-link'>...</span></li>"; for ($i = $lastpage - (2 + ($adjacents * 2)); $i <= $lastpage; $i++) { $pagination .= "<li class='page-item" . ($i == $page ? ' active' : '') . "'><a class='page-link' href='?page=$i'>$i</a></li>"; } } } // Display previous and next page links if ($page != 1) { $pagination .= "<li class='page-item'><a class='page-link' href='?page=$prev'>Previous</a></li>"; } if ($page != $lastpage) { $pagination .= "<li class='page-item'><a class='page-link' href='?page=$next'>Next</a></li>"; } // Output pagination HTML echo $pagination . '</ul></nav>';</code>
Cette implémentation utilise une combinaison de boucles et d'instructions conditionnelles pour déterminer les pages à afficher en fonction de la page actuelle et de la limite de pages adjacentes définie. Il gère également les cas extrêmes tels que la première ou la dernière page et ajuste l'affichage de la pagination en conséquence. En tirant parti de cet algorithme de pagination intelligent, vous pouvez offrir une expérience de pagination plus rationalisée et plus conviviale pour des ensembles de données étendus.
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!