


Il existe 3 façons d'implémenter la pagination en PHP, à savoir : 1. Paginer les requêtes SQL via des fonctions telles que "mysql_query" ; 2. Utiliser ajax pour implémenter la pagination ; 3. Utiliser "function viewpage(p){...} "Le script implémente la pagination.
L'environnement d'exploitation de cet article : système Windows 7, version PHP 7.1, ordinateur DELL G3
Combien de méthodes existe-t-il pour implémenter la pagination PHP ?
3 façons d'implémenter la fonction de pagination en php
Allez directement au code, j'espère que vous le lirez attentivement.
Méthode 1 : En parlant de requête SQL pour la pagination, vous devez appeler plusieurs fonctions, voir le script pour plus de détails :
1.pager.class.php
<?php class pager { public $sql; //SQL查询语句 public $datanum; //查询所有的数据总记录数 public $page_size; //每页显示记录的条数 protected $_errstr; protected $_conn; protected $_query_id; public function query($query)///这个函数有问题,暂时可以不用 { $ret = false; if (!empty($query)) { if ($this->_conn === false || !is_resource($this->_conn)) { warningLog(__METHOD__ . ': query sql with no connection', true); return false; } $this->_query_id = @mysql_query($query, $this->_conn); if ($this->_query_id === false) { $this->_errstr = @mysql_error(); $ret = false; } else { $this->_errstr = 'SUCCESS'; $ret = $this->_query_id; } } $msg = ($ret === false) ? 'false' : strval($ret); debugLog(__METHOD__.": [$msg] returned for sql query [$query]"); return $ret; } function __construct($sql,$page_size) { $result = mysql_query($sql); $datanum = mysql_num_rows($result); $this->sql=$sql; $this->datanum=$datanum; $this->page_size=$page_size; } //当前页数 public function page_id() { if($_SERVER['QUERY_STRING'] == ""){ return 1; }elseif(substr_count($_SERVER['QUERY_STRING'],"page_id=") == 0){ return 1; }else{ return intval(substr($_SERVER['QUERY_STRING'],8)); } } //剩余url值 public function url() { if($_SERVER['QUERY_STRING'] == ""){ return ""; }elseif(substr_count($_SERVER['QUERY_STRING'],"page_id=") == 0){ return "&".$_SERVER['QUERY_STRING']; }else{ return str_replace("page_id=".$this->page_id(),"",$_SERVER['QUERY_STRING']); } } //总页数 public function page_num() { if($this->datanum == 0){ return 1; }else{ return ceil($this->datanum/$this->page_size); } } //数据库查询的偏移量 public function start() { return ($this->page_id()-1)*$this->page_size; } //数据输出 public function sqlquery() { return $this->sql." limit ".$this->start().",".$this->page_size; } //获取当前文件名 private function php_self() { return $_SERVER['PHP_SELF']; } //上一页 private function pre_page() { if ($this->page_id() == 1) { //页数等于1 return "<a href=".$this->php_self()."?page_id=1".$this->url().">上一页</a> "; }elseif ($this->page_id() != 1) { //页数不等于1 return "<a href=".$this->php_self()."?page_id=".($this->page_id()-1).$this->url().">上一页</a> "; } } //显示分页 private function display_page() { $display_page = ""; if($this->page_num() <= 10){ //小于10页 for ($i=1;$i<=$this->page_num();$i++) //循环显示出页面 $display_page .= "<a href=".$this->php_self()."?page_id=".$i.$this->url().">".$i."</a> "; return $display_page; }elseif($this->page_num() > 10){ //大于10页 if($this->page_id() <= 6){ for ($i=1;$i<=10;$i++) //循环显示出页面 $display_page .= "<a href=".$this->php_self()."?page_id=".$i.$this->url().">".$i."</a> "; return $display_page; }elseif(($this->page_id() > 6) && ($this->page_num()-$this->page_id() >= 4)){ for ($i=$this->page_id()-5;$i<=$this->page_id()+4;$i++) //循环显示出页面 $display_page .= "<a href=".$this->php_self()."?page_id=".$i.$this->url().">".$i."</a> "; return $display_page; }elseif(($this->page_id() > 6) && ($this->page_num()-$this->page_id() < 4)){ for ($i=$this->page_num()-9;$i<=$this->page_num();$i++) //循环显示出页面 $display_page .= "<a href=".$this->php_self()."?page_id=".$i.$this->url().">".$i."</a> "; return $display_page; } } } //下一页 private function next_page() { if ($this->page_id() < $this->page_num()) { //页数小于总页数 return "<a href=".$this->php_self()."?page_id=".($this->page_id()+1).$this->url().">下一页</a> "; }elseif ($this->page_id() == $this->page_num()) { //页数等于总页数 return "<a href=".$this->php_self()."?page_id=".$this->page_num().$this->url().">下一页</a> "; } } // 设置分页信息 public function set_page_info() { $page_info = "共".$this->datanum."条 "; $page_info .= "<a href=".$this->php_self()."?page_id=1".$this->url().">首页</a> "; $page_info .= $this->pre_page(); $page_info .= $this->display_page(); $page_info .= $this->next_page(); $page_info .= "<a href=".$this->php_self()."?page_id=".$this->page_num().$this->url().">尾页</a> "; $page_info .= "第".$this->page_id()."/".$this->page_num()."页"; return $page_info; } } ?>
2 Script 2 : .
<?php //类的用法 // 读取分页类 include("pager.class.php"); // 数据库连接初始化 // $db = new mysql(); $impeach_host = '10.81.43.139'; $impeach_usr = 'vmtest15'; $impeach_passwd = 'vmtest15'; $impeach_name = 'ufeature'; $impeach_con = mysql_connect($impeach_host, $impeach_usr, $impeach_passwd) or die("Can't connect ".mysql_error()); mysql_select_db($impeach_name, $impeach_con); // 这是一个sql查询语句,并得到查询结果 $sql = "select word from ufeature.spam_accuse_word_list where flag='0'"; // 分页初始化 $page = new pager($sql,20); // 20是每页显示的数量 // $res_1 = mysql_query($sql) or // die("Can't get result ".mysql_error()); $result=mysql_query($page->sqlquery()); while($info = mysql_fetch_array($result,MYSQL_ASSOC)){ // while($info = mysql_fetch_array($res_1, MYSQL_ASSOC)){ echo $info["word"]."<br/>"; } // 页码索引条 echo $page->set_page_info(); ?>
Méthode 2 : Utiliser ajax
1. Commencez par comprendre l'utilisation de limit dans les instructions SQL
SELECT * FROM table …… limit 开始位置 , 操作条数 (其中开始位置是从0开始的)
Exemple
Obtenez les 20 premiers enregistrements : SELECT * FROM table... limit. 0, 20
Obtenez 20 enregistrements à partir du 11ème : SELECT * FROM table... limite 10, 20
LIMIT n est équivalent à LIMIT 0,n.
Tels que select * from table LIMIT 5; //Retour aux 5 premières lignes, est identique à select * from table LIMIT 0, 5
2. Principe de pagination
Ce qu'on appelle la pagination. affichage signifie que dans la base de données L'ensemble de résultats est affiché segment par segment
Comment segmenter, sur quel segment se trouve-t-il actuellement (combien d'enregistrements par page, sur quelle page se trouve-t-il actuellement)
Les 10 premiers enregistrements :sélectionnez * dans le tableau limite 0,10
N°11 à 20 enregistrements : sélectionnez * dans la limite de la table 10,10
Du 21ème au 30ème enregistrements : sélectionnez * dans la limite de la table 20,10
Formule de pagination :
(numéro actuel de pages - 1) X enregistrements par page Nombre, nombre d'éléments par page
Select * from table limit ($Page- 1) * $PageSize, $PageSize
3. La fonction $_SERVER["REQUEST_URI"]
est une sorte de variable de serveur prédéfinie. Toutes celles commençant par $_SERVER sont. appelées variables de serveur prédéterminées.
REQUEST_URI est utilisé pour obtenir l'URI actuel, qui est le chemin d'adresse complet à l'exception du nom de domaine.
Exemple :
La page actuelle est : http://www.test.com/home.php?id=23&cid=22
echo $_SERVER["REQUEST_URI"]
Le résultat est :/home.php?id=23&cid =22
4. parse_url() fonction d'analyse d'URL
parse_url() est une fonction qui analyse l'URL dans un tableau avec des valeurs de clé fixes
Exemple
$ua=parse_url("http://username:password@hostname/path?arg=value#anchor"); print_r($ua);
Résultat :
Array ( [scheme] => http ;协议 [host] => hostname ;主机域名 [user] => username ;用户 [pass] => password ;密码 [path] => /path ;路径 [query] => arg=value ;取参数 [fragment] => anchor ; )
5. Exemple de code
Cette pagination de messages est divisée en 3 parties, l'une est la conception de la base de données, l'autre est la page de connexion et l'autre est la page d'affichage.
(1) Base de données de conception
La base de données de conception s'appelle bbs. Il existe une table de données appelée message, qui contient des champs tels que le titre, la dernière date, l'utilisateur et le contenu, qui représentent respectivement le titre du message et la date du message. , la personne qui a laissé le message, et le contenu du message
(2) Connecter la page
<?php $conn = @ mysql_connect("localhost", "root", "123456") or die("数据库链接错误"); mysql_select_db("bbs", $conn); mysql_query("set names 'GBK'"); //使用GBK中文编码; //将空格,换行转换为HTML可解析 function htmtocode($content) { $content = str_replace("\n", "<br>", str_replace(" ", " ", $content)); //两个str_replace嵌套 return $content; } //$content=str_replace("'","‘",$content); //htmlspecialchars(); ?>
(3) Afficher la page
<?php include("conn.php"); $pagesize=2; //设置每页显示2个记录 $url=$_SERVER["REQUEST_URI"]; $url=parse_url($url); $url=$url[path]; $numq=mysql_query("SELECT * FROM `message`"); $num = mysql_num_rows($numq); if($_GET){ $pageval=$_GET; $page=($pageval-1)*$pagesize; $page.=','; } if($num > $pagesize){ if($pageval<=1)$pageval=1; echo "共 $num 条". " <a href=$url?page=".($pageval-1).">上一页</a> <a href=$url?page=".($pageval+1).">下一页</a>"; } $SQL="SELECT * FROM `message` limit $page $pagesize "; $query=mysql_query($SQL); while($row=mysql_fetch_array($query)){ ?> <table width=500 border="0" cellpadding="5" cellspacing="1" bgcolor="#add3ef"> <tr bgcolor="#eff3ff"> <td>标题:<?php echo $row[title]?></td> <td>时间:<?php echo $row[lastdate]?></td> </tr> <tr bgcolor="#eff3ff"> <td> 用户:<?php echo $row[user]?></td><td></td> </tr> <tr> <td>内容:<?php echo htmtocode($row[content]);?></td> </tr> <br> </table> <?php } ?>
Méthode 3 :
<script> function viewpage(p){ if(window.XMLHttpRequest){ var xmlReq = new XMLHttpRequest(); } else if(window.ActiveXObject) { var xmlReq = new ActiveXObject('Microsoft.XMLHTTP'); } var formData = "page="+p; xmlReq.onreadystatechange = function(){ if(xmlReq.readyState == 4){ document.getElementByIdx_x('content2').innerHTML = xmlReq.responseText; } } xmlReq.open("post", "hotel_list.php", true); xmlReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlReq.send(formData); return false; } </script>
Script 2 :
header("Content-Type:text/html;charset=GB2312"); $pagesize=10; //echo $_POST['page']; $result = mysql_query("Select count(DISTINCT hotelname) FROM ".TBL_HOTELS); $myrow = mysql_fetch_array($result); $numrows=$myrow[0]; $pages=intval($numrows/$pagesize); if ($numrows%$pagesize) $pages++; if (isset($_POST['page'])){ $page=intval($_POST['page']); } else{ //设置为第一页 $page=1; } $first=1; $prev=$page-1; $next=$page+1; $last=$pages; //计算记录偏移量 $offset=$pagesize*($page - 1); //读取指定记录数 $result=mysql_query("select `hotelname` , count( * ) from ".TBL_HOTELS." GROUP BY `hotelname` order by id desc limit $offset,$pagesize"); $num = mysql_num_rows($result); while ($row = mysql_fetch_array($result,MYSQL_NUM)) { $hotelname[] = $row[0]; $countpeople[] = $row[1]; } for($a=0;$a<$num;$a++) { //$result=mysql_query("select count(title) from " . TBL_Comments ." where `title`=\"".$title[$a]."\""); //$row = mysql_fetch_row($result); echo "<TABLE style=\"MARGIN-BOTTOM: 20px\" cellSpacing=0 cellPadding=0 width=100% border=0>\n"; echo "<TBODY>\n"; echo "<TR>\n"; echo "<TD style=\"PADDING-TOP: 5px\" vAlign=top align=left width=80>\n"; //rating_bar($title[$a],5); echo "</TD>\n"; echo "<TD style=\"PADDING-TOP: 5px\" align=left width=100%><A title=$hotelname[$a] style=\"FONT-SIZE: 14px\" href=#>$hotelname[$a]</A>\n"; echo "</TD></TR>\n"; echo " <TR>\n"; echo "<TD></TD>\n"; echo "<TD style=\"PADDING-LEFT: 0px\">\n"; echo "<IMG src=\"images/comment.gif\" border=0> 推荐人数:($countpeople[$a]) |\n"; echo "<SPAN>平均分:<STRONG></STRONG> (".$count."票) | 评论数:()</SPAN>\n"; echo "</TD></TR></TBODY></TABLE>\n"; } echo "<TABLE style=\"MARGIN-TOP: 30px\" cellSpacing=0 cellPadding=0 width=\"100%\""; echo "border=0>"; echo "<TBODY><TR><TD colSpan=3 height=20>"; echo "<p align=center>"; echo "<P align=left><FONT color=red>第".$page."页/总".$pages."页 | 总".$numrows."条</FONT> | "; if ($page>1) echo "<a onclick=\"viewpage(".$first.")\" href='#'>首页</a> | "; if ($page>1) echo "<a onclick=\"viewpage(".$prev.")\" href='#'>上页</a> | "; if ($page<$pages) echo "<a onclick=\"viewpage(".$next.")\" href='#'>下页</a> | "; if ($page<$pages) echo "<a onclick=\"viewpage(".$last.")\" href='#'>尾页</a>"; echo "转到第 <INPUT maxLength=3 size=3 value=1 name=goto_page> 页 <INPUT hideFocus onclick=\"viewpage(document.all.goto_page.value)\" type=button value=Go name=cmd_goto>"; echo "</P></p></TD></TR></TBODY></TABLE>";
Apprentissage recommandé : "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!

L'article compare les modèles de base de données d'acide et de base, détaillant leurs caractéristiques et les cas d'utilisation appropriés. L'acide priorise l'intégrité et la cohérence des données, adaptées aux applications financières et de commerce électronique, tandis que Base se concentre sur la disponibilité et

L'article traite de la sécurisation des téléchargements de fichiers PHP pour éviter les vulnérabilités comme l'injection de code. Il se concentre sur la validation du type de fichier, le stockage sécurisé et la gestion des erreurs pour améliorer la sécurité de l'application.

L'article traite des meilleures pratiques pour la validation des entrées PHP pour améliorer la sécurité, en se concentrant sur des techniques telles que l'utilisation de fonctions intégrées, une approche de liste blanche et une validation côté serveur.

L'article traite des stratégies de mise en œuvre de la limitation du taux d'API en PHP, y compris des algorithmes comme un godet de jeton et un seau qui fuit, et en utilisant des bibliothèques comme Symfony / Rate-Limiter. Il couvre également la surveillance, l'ajustement dynamiquement des limites de taux et la main

L'article traite des avantages de l'utilisation de mot de passe_hash et de mot de passe_verify dans PHP pour sécuriser les mots de passe. L'argument principal est que ces fonctions améliorent la protection des mots de passe grâce à la génération automatique de sel, à de forts algorithmes de hachage et à

L'article traite des 10 meilleures vulnérabilités de l'OWASP dans les stratégies PHP et d'atténuation. Les problèmes clés incluent l'injection, l'authentification brisée et les XS, avec des outils recommandés pour surveiller et sécuriser les applications PHP.

L'article traite des stratégies pour empêcher les attaques XSS en PHP, en se concentrant sur la désinfection des entrées, le codage de sortie et l'utilisation de bibliothèques et de cadres améliorant la sécurité.

L'article traite de l'utilisation des interfaces et des classes abstraites en PHP, en se concentrant sur le moment de l'utiliser. Les interfaces définissent un contrat sans mise en œuvre, adapté aux classes non apparentées et à l'héritage multiple. Les cours abstraits fournissent une fusion commune


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Version Mac de WebStorm
Outils de développement JavaScript utiles

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux