logo

Pagination PHP

PHP est principalement utilisé pour stocker et afficher les données d'une base de données. La pagination peut être effectuée avec ajax, mais ici, elle est effectuée avec non-ajax. Dans ce tutoriel, nous apprendrons le pagination en PHP avec MySQL . Prenons un bref aperçu de la pagination avec un exemple -

Il est possible qu'une requête SQL SELECT renvoie des millions d'enregistrements. Ce n'est pas une bonne idée d'afficher tous les enregistrements sur une seule page. Une grande liste d'enregistrements sur une seule page peut prendre beaucoup de temps pour charger la page et également prendre du temps pour trouver des données spécifiques. Cela peut provoquer (mener à) une confusion dans l'esprit de l'utilisateur. Par conséquent, divisez ces enregistrements sur plusieurs pages en fonction des besoins de l'utilisateur.

Alors, que pouvons-nous faire pour répartir ce grand nombre de notices en nombre de pages ? La méthode de distribution d'une seule liste sur plusieurs pages est connue sous le nom de Pagination . La pagination fait référence à l'affichage du résultat de votre requête sur plusieurs pages au lieu d'une seule page.

Qu’est-ce que la pagination ?

La pagination est un moyen d'afficher les données sur plusieurs pages plutôt que de les regrouper sur une seule page. La pagination permet de diviser les enregistrements sur plusieurs pages, ce qui rend les données plus lisibles et compréhensibles.

La pagination est une tâche courante pour les développeurs PHP. MySQL aide le développeur à créer une pagination en utilisant LIMITE clause, qui prend deux arguments. Le premier argument comme COMPENSER et le deuxième argument est nombre d'enregistrements qui reviendra de la base de données.

Examinons quelques avantages et inconvénients de l'utilisation du concept de pagination en PHP :

tutoriel Java

Avantages de la pagination

  • La pagination est très utile dans les projets à grande échelle car elle rend le travail Web plus professionnel. Non seulement plus professionnel, mais cela rend également la page Web beaucoup plus rapide, précise et efficace.
  • Grâce à la pagination, nous pouvons gagner le temps de chargement d'une page en divisant les données sur plusieurs pages. Cela nous évite de charger beaucoup d’informations à la fois.
    Par exemple - Une page Web contenant 1 000 images prendra plus de temps à charger les images que les 50 images de chaque page Web.
    Cela signifie que des milliers d’images nécessitent des milliers de requêtes HTTP, ce qui empêcherait la page de répondre. Ce problème est résolu en limitant la quantité de données à l'aide de la pagination à l'aide de la clause LIMIT.
  • L'utilisation de la pagination améliore l'expérience utilisateur, les revenus publicitaires et diminue le temps de chargement de la page.

Inconvénients de la pagination

Bien que la pagination présente de puissants avantages, de nombreux développeurs évitent néanmoins de l'utiliser. Outre certains avantages puissants, la pagination présente également quelques inconvénients, qui sont les suivants :

  • La pagination elle-même représente une surcharge importante en PHP, ce qui est l'un des inconvénients de la pagination. Il s'agit complètement d'une surcharge car il s'agit d'une fonctionnalité externe qui peut être implémentée au prix d'un balisage, d'un style et d'une logique superflus. Un petit ensemble de données souvent ignoré pour utiliser la pagination.
  • La pagination peut entraîner un faible classement des pages sur les moteurs de recherche, car lorsqu'une page est éloignée de la page d'accueil et nécessite plusieurs clics, elle n'obtient généralement pas un classement de page élevé.
  • Il limite également le nombre de liens, de partages sociaux, le nombre total de résultats visibles sur la page Web et le texte d'ancrage qu'une page reçoit lorsque les informations sont réparties sur plusieurs pages.
Vous pouvez éviter l'utilisation de techniques de pagination en modifiant la structure de votre configuration de navigation.

Implémentation de Pagination avec PHP et MySQL

Afin de mettre en œuvre la pagination, nous avons besoin d'un grand ensemble de données pour lui appliquer la pagination. Par conséquent, nous devons d’abord créer une base de données et une table. Après cela, fournissez les enregistrements dans le tableau et commencez à coder pour créer la pagination. Pour que les données extraites de la base de données puissent être réparties sur plusieurs pages.

Nous présenterons ici deux exemples de pagination. Le premier exemple est un exemple simple et basique de création de pagination sans CSS, tandis que dans le deuxième exemple, nous créerons une pagination de manière attrayante en utilisant CSS et bootstrap. Vous pouvez voir le résultat pour les deux. Vous trouverez ci-dessous les étapes indiquées pour la création d'une pagination ;

Étapes simples pour créer une pagination -

  1. Créez une base de données et une table. Fournissez une liste d’enregistrements dans le tableau.
  2. Connectez-vous à la base de données MySQL.
  3. Créez le lien de pagination pour diviser les données sur plusieurs pages et ajoutez-les au bas du tableau.
  4. Récupérez les données de la base de données et affichez-les sur plusieurs pages.

Suivez les étapes ci-dessous une par une et créez une pagination simple.

Exemple 1

Le code ci-dessous est un exemple simple de pagination, réalisée en PHP à l'aide de la base de données MySQL. Il divise les données extraites de la base de données sur plusieurs pages. Dans cet exemple, nous allons créer la pagination des alphabets à afficher sur plusieurs pages.

Création de base de données

Tout d'abord, créez une base de données nommée par pagination comme nous l'avons créé et une table à l'intérieur nommée alphabet . Créer un attribut par nom identifiant et alphabet , et fournissez les données dans le tableau.

Pagination PHP

Connectivité de base de données

La connexion du fichier PHP à la base de données est une tâche obligatoire. Afin que vous puissiez afficher les données stockées dans la base de données sur la page Web. Par conséquent, connectez la base de données dans votre fichier PHP pour afficher les données sur la page Web.

Vous pouvez écrire le code de connectivité de la base de données dans le même fichier, ainsi que le conserver séparé dans un autre fichier et l'inclure dans votre fichier PHP requis. Code pour la connexion à la base de données-

 $conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); } 

Dans ce tutoriel, nous utilisons mysqli extension. Ainsi, toutes les requêtes sont écrites selon le format mysqli.

Obtenir le numéro de page actuel

Le code ci-dessous détermine le numéro de page que l'utilisateur visite actuellement. S'il n'est pas présent, le numéro de page est défini par défaut sur 1.

 if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; } 

Formule de pagination

Pour la pagination, vous devez définir la limite du nombre d'enregistrements à afficher par page. Ici, nous fixons la limite de résultat par page à 10, il s'affichera donc sur chaque page comme indiqué ci-dessous -

Page1 - A à J (1-10)

np signifie

Page 2 - K à T (11-20)

Page3 - De U à Z (21-26)

 $results_per_page = 10; $page_first_result = ($page-1) * $results_per_page; 

Obtenez le nombre total de pages

 $query = 'select *from alphabet'; $result = mysqli_query($conn, $query); $number_of_result = mysqli_num_rows($result); //determine the total number of pages available $number_of_page = ceil ($number_of_result / $results_per_page); 

Récupérer les données et les afficher sur la page Web

Le code ci-dessous est utilisé pour récupérer les données de la base de données et les afficher sur les pages Web divisées en conséquence.

 $query = &apos;SELECT *FROM alphabet LIMIT &apos; . $page_first_result . &apos;,&apos; . $results_per_page; $result = mysqli_query($conn, $query); //display the retrieved result on the webpage while ($row = mysqli_fetch_array($result)) { echo $row[&apos;id&apos;] . &apos; &apos; . $row[&apos;alphabet&apos;] . &apos;<br>&apos;; } 

Afficher le lien des pages en URL

En utilisant ce code, l'URL de la page Web changera pour chaque page.

 for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>&apos; . $page . &apos;  &apos;; </=>

Code final

Maintenant, rassemblez tous les codes dans un seul fichier pour terminer la pagination.

Fichier : Index2.php

 Pagination <?php //database connection $conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); } //define total number of results you want per page $results_per_page = 10; //find the total number of results stored in the database $query = 'select *from alphabet'; $result = mysqli_query($conn, $query); $number_of_result = mysqli_num_rows($result); //determine the total number of pages available $number_of_page = ceil ($number_of_result / $results_per_page); //determine which page number visitor is currently on if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; } //determine the sql LIMIT starting number for the results on the displaying page $page_first_result = ($page-1) * $results_per_page; //retrieve the selected results from database $query = 'SELECT *FROM alphabet LIMIT ' . $page_first_result . ',' . $results_per_page; $result = mysqli_query($conn, $query); //display the retrieved result on the webpage while ($row = mysqli_fetch_array($result)) { echo $row['id'] . ' ' . $row['alphabet'] . '</br>&apos;; } //display the link of the pages in URL for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>&apos; . $page . &apos;  &apos;; } ?&gt; </=>

Sortir:

Voir la sortie ci-dessous pour l'exemple de pagination ci-dessus -

Pagination PHP

Exemple 2

L'exemple ci-dessous est un autre exemple de pagination dans lequel nous avons utilisé CSS avec HTML pour rendre l'affichage des pages Web plus attrayantes. CSS rend la page Web plus créative et attrayante. D'un autre côté, MySQL stocke les données dans une base de données. Ainsi, vous pouvez bien mieux apprendre la pagination.

Nous avons écrit tout le code dans un seul fichier, à l'exception de la connectivité à la base de données. Par conséquent, nous allons créer deux fichiers, à savoir connection.php et index1.php. Enregistrez les deux fichiers dans .php extension. Dans l'exemple ci-dessous, vous apprendrez à créer une pagination plus créative et attrayante.

    php :Créé pour la connectivité de base de donnéesphp :Créé pour la pagination

Fichier : connexion.php

 

Fichier : index1.php

 Pagination table { border-collapse: collapse; } .inline{ display: inline-block; float: right; margin: 20px 0px; } input, button{ height: 34px; } .pagination { display: inline-block; } .pagination a { font-weight:bold; font-size:18px; color: black; float: left; padding: 8px 16px; text-decoration: none; border:1px solid black; } .pagination a.active { background-color: pink; } .pagination a:hover:not(.active) { background-color: skyblue; } <?php // Import the file where we defined the connection to Database. require_once 'connection.php'; $per_page_record = 4; // Number of entries to show in a page. // Look for a GET variable page if not found default is 1. if (isset($_GET['page'])) { $page = $_GET['page']; } else { $page=1; } $start_from = ($page-1) * $per_page_record; $query = 'SELECT * FROM student LIMIT $start_from, $per_page_record'; $rs_result = mysqli_query ($conn, $query); ?> <br> <p>This page demonstrates the basic Pagination using PHP and MySQL. </p> <table class="table"> <tr> <th>ID</th> <th>Name</th> <th>College</th> <th>Score</th> </tr> <tbody> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> <?php $query = 'SELECT COUNT(*) FROM student'; $rs_result = mysqli_query($conn, $query); $row = mysqli_fetch_row($rs_result); $total_records = $row[0]; echo '</br>&apos;; // Number of pages required. $total_pages = ceil($total_records / $per_page_record); $pagLink = &apos;&apos;; if($page&gt;=2){ echo &apos;  Prev  &apos;; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" &lt;a class = " active' href="index1.php?page=" .$i.''>&apos;.$i.&apos;  &apos;; } else { $pagLink .= &apos;  &apos;.$i.&apos;  &apos;; } }; echo $pagLink; if($page<$total_pages){ echo ' next '; } ?> <input id="page" type="number" min="1" max placeholder required> Go function go2Page() { var page = document.getElementById(&apos;page&apos;).value; page = ((page&gt;)?:((page<1)?1:page)); window.location.href="index1.php?page=" +page; } < pre> <p> <strong>Output:</strong> </p> <p>See the below output for above pagination example -</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-3.webp" alt="PHP Pagination"> <p>Note that code written inside the tag is used for styling and to give an attractive look to the table and pagination present inside the webpage. We also used bootstrap for this.</p> <h3>Explanation of code</h3> <p>Now, we will explain the code used for creating pagination.</p> <h3>Database creation</h3> <p>First of all, create a database named by <strong>pagination</strong> as we created and a table inside it named <strong>student</strong> . Create attribute by name <strong>Rank, Name, College,</strong> and <strong>Score</strong> , and provide at least 25 records in the table.</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-4.webp" alt="PHP Pagination"> <h3>Database Connectivity</h3> <p>Connecting the PHP file to the database is a required task. In this tutorial, we are using <strong>mysqli</strong> extension. So, all the queries are written according to mysqli format.</p> <p>Database connectivity code can be written in the same file or you can also keep it separate into another file and include it to your required PHP file. Code for database connection-</p> <pre> $conn = mysqli_connect(&apos;localhost&apos;, &apos;root&apos;, &apos;&apos;); if (! $conn) { die(&apos;Connection failed&apos; . mysqli_connect_error()); } else { mysqli_select_db($conn, &apos;pagination&apos;); } </pre> <h3>Fetch data and display on webpage</h3> <p>As we have created dataset, now we need to fetch and display it to various webpages. The below code is used to retrieve the data from database and display on the webpages that are divided accordingly.</p> <h3>Fetch data</h3> <p>After establishing the database connection in &apos;connection.php&apos; file, we just need to import it into our code using require_once keyword. We will explicitly define the number of records per page to show.</p> <pre> require_once &apos;connection.php&apos;; $per_page_record = 4; // Number of entries to show in a page. // Look for a GET variable page if not found default is 1. if (isset($_GET[&apos;page&apos;])) { $page = $_GET[&apos;page&apos;]; } else { $page=1; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = &apos;SELECT * FROM student LIMIT $start_from, $per_page_record&apos;; $rs_result = mysqli_query ($conn, $query); </pre> <h3>Display data</h3> <p>This section is very simple. In this section, we iterate the loop over the records that we fetched and display each record stored in columns of the table.</p> <pre> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </pre> <h3>Pagination Link creation</h3> <p>Now the most important code is pagination link creation. So, we will create the Previous, Next, and numeric links for pagination and add them to bottom of the table.</p> <pre> if($page&gt;=2) { echo &apos;  Prev  &apos;; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" &lt;a class = " active' href="index1.php?page=" .$i.''>&apos;.$i.&apos;  &apos;; } else { $pagLink .= &apos;  &apos;.$i.&apos;  &apos;; } }; echo $pagLink; if($page<$total_pages){ echo ' next '; } < pre> <p>Without using CSS, the pagination will be created same as the screenshot below, which is similar to the example 1.</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-5.webp" alt="PHP Pagination"> <p>After including CSS code into the index1.php file, the pagination will be looked like the screenshot below. In example 1, we have created simple pagination that was logically correct, but visually it is not so good. </p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-6.webp" alt="PHP Pagination"> <h3>Code for Random Moment</h3> <p>In case when the number of pages is too much, this code helps us for random moment. By entering the page number in the input field, a user can directly move to that page. This code is written in JavaScript.</p> <pre> function go2Page() { var page = document.getElementById(&apos;page&apos;).value; page = ((page&gt;)?:((page<1)?1:page)); window.location.href="index1.php?page=" +page; } < pre> <p>Apart from all these codes, we have also included bootstrap into index1.php to make the table view good. This code is written inside the tag.</p> <pre> </pre> <hr></1)?1:page));></pre></$total_pages){></=$total_pages;></pre></1)?1:page));></$total_pages){></=$total_pages;>

Récupérer les données et les afficher sur la page Web

Comme nous avons créé un ensemble de données, nous devons maintenant le récupérer et l'afficher sur différentes pages Web. Le code ci-dessous est utilisé pour récupérer les données de la base de données et les afficher sur les pages Web divisées en conséquence.

Récupérer des données

Après avoir établi la connexion à la base de données dans le fichier 'connection.php', il nous suffit de l'importer dans notre code en utilisant le mot-clé require_once. Nous définirons explicitement le nombre d'enregistrements par page à afficher.

parcours dans l'ordre de l'arbre binaire
 require_once &apos;connection.php&apos;; $per_page_record = 4; // Number of entries to show in a page. // Look for a GET variable page if not found default is 1. if (isset($_GET[&apos;page&apos;])) { $page = $_GET[&apos;page&apos;]; } else { $page=1; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = &apos;SELECT * FROM student LIMIT $start_from, $per_page_record&apos;; $rs_result = mysqli_query ($conn, $query); 

Afficher les données

Cette section est très simple. Dans cette section, nous parcourons la boucle sur les enregistrements que nous avons récupérés et affichons chaque enregistrement stocké dans les colonnes de la table.

 <tr> <td></td> <td></td> <td></td> <td></td> </tr> 

Création de liens de pagination

Désormais, le code le plus important est la création de liens de pagination. Nous allons donc créer les liens Précédent, Suivant et numériques pour la pagination et les ajouter au bas du tableau.

 if($page&gt;=2) { echo &apos;  Prev  &apos;; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" &lt;a class = " active\' href="index1.php?page=" .$i.\'\'>&apos;.$i.&apos;  &apos;; } else { $pagLink .= &apos;  &apos;.$i.&apos;  &apos;; } }; echo $pagLink; if($page<$total_pages){ echo \' next \'; } < pre> <p>Without using CSS, the pagination will be created same as the screenshot below, which is similar to the example 1.</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-5.webp" alt="PHP Pagination"> <p>After including CSS code into the index1.php file, the pagination will be looked like the screenshot below. In example 1, we have created simple pagination that was logically correct, but visually it is not so good. </p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-6.webp" alt="PHP Pagination"> <h3>Code for Random Moment</h3> <p>In case when the number of pages is too much, this code helps us for random moment. By entering the page number in the input field, a user can directly move to that page. This code is written in JavaScript.</p> <pre> function go2Page() { var page = document.getElementById(&apos;page&apos;).value; page = ((page&gt;)?:((page<1)?1:page)); window.location.href="index1.php?page=" +page; } < pre> <p>Apart from all these codes, we have also included bootstrap into index1.php to make the table view good. This code is written inside the tag.</p> <pre> </pre> <hr></1)?1:page));></pre></$total_pages){></=$total_pages;>