Maison  >  Article  >  développement back-end  >  Principes et étapes pour implémenter la pagination en php

Principes et étapes pour implémenter la pagination en php

王林
王林original
2019-09-02 14:55:058137parcourir

Principes et étapes pour implémenter la pagination en php

1. Informations de configuration de l'encapsulation

1. Nous pouvons créer un fichier de configuration config.php. Définissez toutes les configurations qui doivent être utilisées comme constantes. Le code est le suivant :

<?php
//数据库服务器
define(&#39;DB_HOST&#39;, &#39;localhost&#39;);
//数据库用户名
define(&#39;DB_USER&#39;, &#39;root&#39;);
//数据库密码
define(&#39;DB_PWD&#39;, &#39;secret&#39;);
//库名
define(&#39;DB_NAME&#39;, &#39;book&#39;);
//字符集
define(&#39;DB_CHARSET&#39;, &#39;utf8&#39;);

2. Nous extrayons la page connection.php lorsque nous aurons besoin de nous connecter à la base de données à l'avenir. il suffit d'inclure le fichier connection.php.

Le code est le suivant :

<?php
include &#39;config.php&#39;;$conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);
if (mysqli_errno($conn))
 {  mysqli_error($conn);
    exit;
  }
mysqli_set_charset($conn, DB_CHARSET);
?>

Nous pouvons réaliser la connexion à la base de données en incluant directement le fichier connection.php dans chaque fichier à l'avenir :

include &#39;connection.php&#39;;

2. Afficher la pagination pour mettre en œuvre

la page pour mettre en œuvre la pagination contient les éléments de base suivants :

Principes et étapes pour implémenter la pagination en php

Nous sont aux commandes En ce qui concerne les numéros de page, le contrôle du numéro de page est obtenu en transmettant la valeur du numéro de page via la barre d'adresse URL. En ajoutant les informations relatives au numéro de page à page.php, nous pouvons calculer des informations plus efficaces. L'effet de la pagination contrôlant l'url est le suivant :

Principes et étapes pour implémenter la pagination en php

Dans l'implémentation du code, ces deux valeurs​​sont en fait réalisées à travers le décalage (offset) et la quantité ( num) après la limite de pagination.

limit offset , num

Principes et étapes pour implémenter la pagination en php

Supposons que 5 éléments soient affichés par page. La formule finale de limite de contrôle pour la pagination est la suivante :

offset的值为 (n-1)*5
num 为规定的5

3. Étapes de mise en œuvre

1. Paramètres requis pour la pagination

1-1, nombre total

通过查询user表的count(id),得到总数$count。
$count_sql = &#39;select count(id) as c from user&#39;;
$result = mysqli_query($conn, $count_sql);
$data = mysqli_fetch_assoc($result);
//得到总的用户数
$count = $data[&#39;c&#39;];

1-2, page actuelle

lorsque vous entrez pour la première fois dans la page .php page , l'url est http://www.php.com/page.php, et il n'y a pas de numéro d'identification de page ?page=1 après.

Nous devons donc créer manuellement un numéro d'identification de page et le transmettre à la variable de numéro de page actuelle $page.

Nous avons peur qu'il y ait des décimales dans la page passée par l'utilisateur, nous faisons donc une conversion de type forcée : (int) $_GET['page'].

La première façon d'écrire :

$page = isset($_GET[&#39;page&#39;]) ? (int) $_GET[&#39;page&#39;] : 1;

La deuxième façon d'écrire :

if (isset($_GET[&#39;page&#39;])) {
    $page = (int) $_GET[&#39;page&#39;];
} else {
    $page = 1;
}

1-3, la dernière page

Chaque page doit être un entier. Tout comme les mathématiques à l'école primaire. En moyenne, 5,6 personnes devraient préparer combien de pommes. La réponse doit être 6.

Si la page sort avec 20,3 pages, il faut utiliser la fonction d'arrondi plafond. Que le nombre de pagination devienne 21.

Nous divisons le nombre total par le nombre d'éléments de données affichés sur chaque page pour obtenir le nombre total de pages.

//每页显示数
$num = 5;
$total = ceil($count / $num);

1-4. Contrôle des situations anormales sur les pages supérieures et inférieures

Que dois-je faire si l'utilisateur clique sur la page précédente de la première page et clique sur la page suivante la dernière page ?

Dans ce cas, les données dépasseront la plage, ce qui entraînera l'affichage d'aucune donnée lors de la pagination.

Il faut évidemment tenir compte de cette situation inhabituelle. Par conséquent, si la première page est soustraite de un lors de la pagination, nous en faisons la première page.
Lorsque nous en ajoutons un à la dernière page, nous en faisons la dernière page, ce qui complète le contrôle des exceptions.

if ($page <= 1) {
    $page = 1;
}
if ($page >= $total) {
    $page = $total;
}

2. Instruction SQL

Nous avons dit précédemment que le cœur de la pagination est de contrôler le nombre d'affichages par page via le décalage et le nombre dans le Instruction SQL.

$num = 5;
$offset = ($page - 1) * $num;

Nous appliquons $num et $offset aux instructions SQL :

$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";

Contrôlez la valeur de pagination dans l'URI

echo &#39;<tr>
    <td colspan="5">
    <a href="page.php?page=1">首页</a>
    <a href="page.php?page=&#39; . ($page - 1) . &#39;">上一页</a>
    <a href="page.php?page=&#39; . ($page + 1) . &#39;">下一页</a>
    <a href="page.php?page=&#39; . $total . &#39;">尾页</a>
    当前是第 &#39; . $page . &#39;页  共&#39; . $total . &#39;页
    </td>
    </tr>&#39;;

4.

include &#39;connection.php&#39;;
$count_sql = 'select count(id) as c from user';
$result = mysqli_query($conn, $count_sql);
$data = mysqli_fetch_assoc($result);
//得到总的用户数
$count = $data['c'];
$page = isset($_GET[&#39;page&#39;]) ? (int) $_GET[&#39;page&#39;] : 1;
/*
if (isset($_GET[&#39;page&#39;])) {
    $page = (int) $_GET[&#39;page&#39;];
} else {
    $page = 1;
}
 */
 
//每页显示数
$num = 5;
//得到总页数
$total = ceil($count / $num);
if ($page <= 1) {
    $page = 1;
}
if ($page >= $total) {
    $page = $total;
}
$offset = ($page - 1) * $num;
$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";
$result = mysqli_query($conn, $sql);
if ($result && mysqli_num_rows($result)) {
    //存在数据则循环将数据显示出来
    echo '';
    while ($row = mysqli_fetch_assoc($result)) {
        echo '';
        echo '';
        echo '';
        echo '';
        echo '';
        echo '';
        echo '';
    }
    echo '';
    echo '
' . $row['username'] . '' . date('Y-m-d H:i:s', $row['createtime']) . '' . long2ip($row['createip']) . '编辑用户删除用户
首页 上一页 下一页 尾页 当前是第 ' . $page . '页 共' . $total . '页
'; } else { echo '没有数据'; } mysqli_close($conn);

Le contenu ci-dessus implémente une fonction de pagination simple. Pour plus de contenu connexe, veuillez visiter le site Web PHP chinois : Tutoriel vidéo PHP.

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