Maison >développement back-end >Problème PHP >Comment écrire une requête de pagination en php
La requête de pagination PHP est écrite comme "sélectionnez un mot dans ufeature.spam_accuse_word_list où flag='0'". Cette instruction est une instruction de requête SQL et vous pouvez obtenir les résultats de la requête.
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur Dell G3.
Comment écrire une requête de pagination en php ? 3 façons d'implémenter la fonction de pagination en php
Allez directement au code, j'espère que vous pourrez le lire attentivement.
Méthode 1 : requête SQL pour effectuer 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. Comprenez d'abord l'utilisation de la limite dans les instructions SQL
SELECT * FROM table... limite la position de départ, le nombre d'opérations (la position de départ commence à 0)
Exemple
Obtenez les 20 premiers enregistrements : SELECT * FROM table …… limite 0 , 20
Prendre 20 enregistrements à partir du 11 : SELECT * FROM table …… limite 10 , 20
LIMIT n est équivalent à LIMIT 0,n.
Comme select * from table LIMIT 5; //Renvoie les 5 premières lignes, comme select * from table LIMIT 0, 5
2 Principe de pagination
L'affichage dit de pagination signifie que le résultat est défini dans. la base de données est divisée en paragraphes. Affichez-la
Comment la segmenter, dans quel paragraphe se trouve-t-elle actuellement (combien d'enregistrements par page, sur quelle page se trouve-t-elle actuellement)
Les 10 premiers enregistrements : sélectionnez * dans la limite de la table 0, 10
Du 11ème au 20ème enregistrement : sélectionnez * dans la limite du tableau 10,10
Du 21ème au 30ème enregistrement : sélectionnez * dans la limite du tableau 20,10
Formule de pagination :
(numéro de page actuel - 1) X nombre de éléments par page, nombre d'éléments par page
Sélectionnez * dans la limite de la table ($Page- 1) * $PageSize, $PageSize
3 fonction $_SERVER["REQUEST_URI"]
Un type de variables de serveur prédéfinies, toutes. ceux commençant par $_SERVER sont appelés planifiés sur la variable serveur.
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. est divisé 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. "
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!