Avant de lire cet article, assurez-vous de maîtriser certaines connaissances de PHP et les bases des opérations de requête MYSQL.
En tant que programme Web, il doit souvent traiter d'innombrables données, telles que les données des membres et les données des articles, s'il n'y a que quelques dizaines de membres, elles peuvent être facilement affichées sur une seule page. . Mais que se passe-t-il si Si votre site Web compte des milliers, voire des centaines de milliers de membres, les ouvrir tous sur une seule page sera une torture à la fois pour le navigateur et pour le spectateur. De plus, s'il y a des centaines de millions de données, les interroger une seule fois. la base de données va mettre la pression sur le serveur. C'est un gros problème, ce n'est pas la bonne façon de procéder.
Je crois que chaque novice qui apprend PHP aura un mal de tête avec la pagination, mais avec le message de Momo, vous allez certainement vous tapoter la tête et dire : hé, il s'avère que la pagination est si simple ? En effet, s’il vous plaît, prenez une grande bouffée d’air frais maintenant et écoutez attentivement pendant que Silence vous l’explique petit à petit.
Supposons que nous voulions traiter 1000 éléments de données et afficher 10 éléments sur chaque page. Dans ce cas, ils seront affichés sur 100 pages. Voyons d'abord comment extraire 10 éléments d'information dans MySQL. .
Select * from table limit 0,10
Ce qui précède est une instruction de requête MySQL très simple. Sa fonction est d'extraire 10 éléments de données d'une table nommée table et d'obtenir les valeurs de tous les champs. L'utilisation de la limite 0,10 est : limiter le point de départ, le montant à extraire
L'élément clé est dans ce paragraphe "limite 0,10", où 0 est le point de départ, et ensuite 10 signifie afficher 10 données, il faut donc en utiliser 10 comme point de départ et comment écrire la 20ème donnée affichée ?
Peut-être que beaucoup de gens diront carrément « limite 10,20 » ! Oh, c'est faux. La bonne façon de l'écrire est "limite 10,10". Le paramètre qui suit n'est pas le point final mais le nombre à extraire.
Comprendre comment extraire 10 éléments de données, puis extraire 1000 éléments signifie faire ce type de requête 100 fois, ce qui signifie faire la requête suivante :
Limite 0,10 Page Limite
Limite 20,10 // Troisième page
Limite 30, 10 // Page 4
…
voir quelles règles y a-t-il Déjà ? Oui, le premier paramètre augmente de 10 à chaque fois que l’on tourne une page, mais le deuxième paramètre reste inchangé.
C'est à dire que si on essaie de changer la valeur du premier paramètre en fonction du nombre de pages, on peut afficher les données en pages. Et le principe est-il très simple ?
Par exemple, index.php?page=18
Je pense que la plupart d'entre vous connaissent ce truc. Ce type d'adresse URL peut être trouvé partout. La fonction du paramètre page est de transmettre le nombre de. pages à afficher.
<?php /* Author:默默 Date :2006-12-03 */ $page=isset($_GET['page'])?intval($_GET['page']):1; //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。 $num=10; //每页显示10条数据 $db=mysql_connect("host","name","pass"); //创建数据库连接 $select=mysql_select_db("db",$db); //选择要操作的数据库 /* 首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,总页数 具体的公式就是 总数据数 除以 每页显示的条数,有余进一 。 也就是说10/3=3.3333=4 有余数就要进一。 */ $total=mysql_num_rows(mysql_query("select * from table")); //查询数据的总数total $pagenum=ceil($total/$num); //获得总页数 pagenum //假如传入的页数参数apge 大于总页数 pagenum,则显示错误信息 If($page>$pagenum || $page == 0){ Echo "Error : Can Not Found The page ."; Exit; } $offset=($page-1)*$num; //获取limit的第一个参数的值 offset ,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。 (传入的页数-1) * 每页的数据 得到limit第一个参数的值 $info=mysql_query("select * from table limit $offset,$num "); //获取相应页数所需要显示的数据 While($it=mysql_fetch_array($info)){ Echo $it['name']."<br />"; } //显示数据 For($i=1;$i<=$pagenum;$i++){ $show=($i!=$page)?"<a href='index.php?page=".$i."'>$i</a>":"<b>$i</b>"; Echo $show." "; } /*显示分页信息,假如是当页则显示粗体的数字,其余的页数则为超连接,假如当前为第三页则显示如下 1 2 3 4 5 6 */ ?>
Résumé : Prototype : Sélectionnez * dans la limite de la table 0,10
Programme : sélectionnez * dans la limite de la table $offset,$num ($la valeur de décalage est : passer le numéro de pages saisies - 1 $num sont les données affichées sur chaque page, principalement une valeur constante fixe)
Nombre total de pages : % des données totales Nombre d'éléments affichés sur chaque page, plus d'un
int totalPage= ( (totalCount%NUM)==0)?totalCount/NUM:totalCount/NUM 1;
limiter l'utilisation : limiter le point de départ, le nombre à extraire
Utiliser PHP pour implémenter des classes de pagination simples et leurs méthodes d'utilisation détaillées
pagination PHP Production d'affichage de pagination PHP explication détaillée