Pagination PHP

Subodh Poudel 30 janvier 2023
  1. Utilisez la clause LIMIT avec l’instruction SELECT dans SQL pour paginer les lignes en PHP
  2. Ajouter la fonctionnalité de navigation Previous et Next dans la pagination en PHP
Pagination PHP

Cet article présentera une méthode pour effectuer la pagination en PHP en utilisant la clause LIMIT avec l’instruction SELECT en SQL. Nous utiliserons la clause LIMIT pour sélectionner le nombre spécifique de lignes à partir d’un index particulier à afficher en tant que pagination.

Nous allons également démontrer une autre méthode pour ajouter la fonctionnalité de navigation Previous et Next dans la pagination PHP. Cette méthode ajoute uniquement la fonctionnalité supplémentaire pour naviguer dans les pages correspondantes à la première méthode.

Utilisez la clause LIMIT avec l’instruction SELECT dans SQL pour paginer les lignes en PHP

Nous pouvons utiliser la clause LIMIT avec l’instruction SELECT pour spécifier les n premiers résultats à afficher sur une page. Nous pouvons fournir le numéro de page dans la balise anchor en tant que méthode GET pour parcourir les pages. Dans cette méthode, nous définissons le nombre de lignes à afficher par page et récupérons toutes les lignes de la base de données pour calculer le nombre total de pages nécessaires. On peut utiliser le tableau $_GET avec la fonction isset() pour obtenir le numéro de page demandé par l’utilisateur.

Par exemple, créez une variable $results_per_page et stockez 2 dedans. Utilisez la fonction mysqli_num_rows() pour trouver le nombre de lignes dans la base de données et stocker dans la variable $number_of_results. Utilisez la fonction ceil() pour déterminer le nombre total de pages nécessaires pour afficher les lignes. Divisez la variable $number_of_results par la variable $results_per_page à l’intérieur de la fonction ceil(). Utilisez la variable superglobale $_GET avec la fonction isset() pour vérifier si la variable page a été définie. S’il n’a pas été défini, définissez la variable $page sur 1. Si la variable a été définie, affectez la valeur à la variable $page. Soustrayez la variable page par 1 et multipliez-la par la variable $this_page_first_result. Stockez l’opération dans la variable $this_page_first_result. Écrivez une instruction SQL avec la clause LIMIT sous la forme SELECT * FROM alpha LIMIT ' . $this_page_first_result . ',' . $results_per_page. Exécutez la requête et affichez les résultats. A la fin, créez une boucle for pour boucler entre la variable page et le $number_of_page. A l’intérieur de la boucle, faites écho à la balise anchor et écrivez la valeur de l’attribut href comme index.php?page'.$page. Entre les balises anchor écrivez la variable page.

Dans l’exemple ci-dessous, la table alpha de la base de données contient six lignes. Après avoir effectué la pagination, deux lignes sont affichées par page. La fonction ceil() détermine le nombre total de pages nécessaires pour afficher les lignes. Initialement, la variable $page n’est pas définie, la page commence donc à partir de la page 1. La variable $this_page_first_result détermine le numéro de la page sur laquelle se trouve actuellement l’utilisateur. La variable $this_page_first_result désigne la première ligne de la page. La variable $results_per_page désigne le nombre de résultats par page. La section de sortie affiche la page index.php. Lorsque vous cliquez sur la page 2, il sort les deux lignes suivantes de la base de données.

Exemple de code :

#php 7.x
<?php
$number_of_pages = ceil($number_of_results/$results_per_page);
if (!isset($_GET['page'])) {
    $page = 1;
} else {
    $page = $_GET['page'];
}
$this_page_first_result = ($page-1)*$results_per_page;
$sql='SELECT * FROM alpha LIMIT ' . $this_page_first_result . ',' . $results_per_page;
$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_array($result)) {
    echo $row['id'] . ' ' . $row['value']. '<br>';
}
for ($page=1;$page<=$number_of_pages;$page++) {
    echo '<a href="index.php?page=' . $page . '">' . $page . '</a> ';
}
?>

Production:

1 A 
2 B 
1 2 3

Ajouter la fonctionnalité de navigation Previous et Next dans la pagination en PHP

Nous pouvons ajouter des extraits de code supplémentaires à l’exemple de code de la première méthode pour fournir la fonctionnalité de navigation Previous et Next dans la pagination. On peut incrémenter et décrémenter la variable $page de 1 pour pointer vers la page précédente et suivante. Nous pouvons utiliser les variables incrémentées et décrémentées dans la balise anchor pour obtenir les fonctionnalités Next et Previous.

Par exemple, créez deux variables, $prev et $next. Soustraire la variable $page par un et affecter l’opération à la variable $prev. De même, ajoutez-en un à la variable $page et affectez-le à la variable $next. Faites écho à une balise anchor indiquant Previous juste avant la boucle for des numéros de page. Écrivez la valeur index.php?page=' . $prev . dans l’attribut href de la balise anchor. De la même manière, créez une autre balise anchor pour $next en utilisant la variable $next comme valeur de $page dans l’attribut href.

Dans la section de sortie ci-dessous, il montre la deuxième page. En cliquant sur Previous vous accédez à la première page et en cliquant sur Next, vous accédez à la troisième page.

Exemple de code :

# php 7.x
<?php
$prev = $page -1;
$next = $page +1;
echo ' <a href="index.php?page=' . $prev . '"> Previous </a> ';
for ($page=1;$page<=$number_of_pages;$page++) {
    echo '<a href="index.php?page=' . $page . '">' . $page . '</a> ';
}
echo ' <a href="index.php?page=' . $next . '"> Next </a> ';
?>

Production:

3 C 
4 D 
Previous 1 2 3 Next
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn