There are three ways to implement paging in php, which are: 1. Paging sql queries through functions such as "mysql_query"; 2. Using ajax to achieve paging; 3. Through "function viewpage(p){ ...}" script implements paging.
The operating environment of this article: windows7 system, PHP7.1 version, DELL G3 computer
How many methods are there to implement paging in php?
3 ways to implement paging function in php
Go directly to the code, I hope you will read it carefully.
Method 1: To perform paging using sql query, you need to call several functions. See the script for details:
1.pager.class.php
<?php class pager { public $sql; //SQL查詢語(yǔ)句 public $datanum; //查詢所有的數(shù)據(jù)總記錄數(shù) public $page_size; //每頁(yè)顯示記錄的條數(shù) protected $_errstr; protected $_conn; protected $_query_id; public function query($query)///這個(gè)函數(shù)有問題,暫時(shí)可以不用 { $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; } //當(dāng)前頁(yè)數(shù) 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']); } } //總頁(yè)數(shù) public function page_num() { if($this->datanum == 0){ return 1; }else{ return ceil($this->datanum/$this->page_size); } } //數(shù)據(jù)庫(kù)查詢的偏移量 public function start() { return ($this->page_id()-1)*$this->page_size; } //數(shù)據(jù)輸出 public function sqlquery() { return $this->sql." limit ".$this->start().",".$this->page_size; } //獲取當(dāng)前文件名 private function php_self() { return $_SERVER['PHP_SELF']; } //上一頁(yè) private function pre_page() { if ($this->page_id() == 1) { //頁(yè)數(shù)等于1 return "<a href=".$this->php_self()."?page_id=1".$this->url().">上一頁(yè)</a> "; }elseif ($this->page_id() != 1) { //頁(yè)數(shù)不等于1 return "<a href=".$this->php_self()."?page_id=".($this->page_id()-1).$this->url().">上一頁(yè)</a> "; } } //顯示分頁(yè) private function display_page() { $display_page = ""; if($this->page_num() <= 10){ //小于10頁(yè) for ($i=1;$i<=$this->page_num();$i++) //循環(huán)顯示出頁(yè)面 $display_page .= "<a href=".$this->php_self()."?page_id=".$i.$this->url().">".$i."</a> "; return $display_page; }elseif($this->page_num() > 10){ //大于10頁(yè) if($this->page_id() <= 6){ for ($i=1;$i<=10;$i++) //循環(huán)顯示出頁(yè)面 $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++) //循環(huán)顯示出頁(yè)面 $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++) //循環(huán)顯示出頁(yè)面 $display_page .= "<a href=".$this->php_self()."?page_id=".$i.$this->url().">".$i."</a> "; return $display_page; } } } //下一頁(yè) private function next_page() { if ($this->page_id() < $this->page_num()) { //頁(yè)數(shù)小于總頁(yè)數(shù) return "<a href=".$this->php_self()."?page_id=".($this->page_id()+1).$this->url().">下一頁(yè)</a> "; }elseif ($this->page_id() == $this->page_num()) { //頁(yè)數(shù)等于總頁(yè)數(shù) return "<a href=".$this->php_self()."?page_id=".$this->page_num().$this->url().">下一頁(yè)</a> "; } } // 設(shè)置分頁(yè)信息 public function set_page_info() { $page_info = "共".$this->datanum."條 "; $page_info .= "<a href=".$this->php_self()."?page_id=1".$this->url().">首頁(yè)</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().">尾頁(yè)</a> "; $page_info .= "第".$this->page_id()."/".$this->page_num()."頁(yè)"; return $page_info; } } ?>
2. Script 2:
<?php //類的用法 // 讀取分頁(yè)類 include("pager.class.php"); // 數(shù)據(jù)庫(kù)連接初始化 // $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); // 這是一個(gè)sql查詢語(yǔ)句,并得到查詢結(jié)果 $sql = "select word from ufeature.spam_accuse_word_list where flag='0'"; // 分頁(yè)初始化 $page = new pager($sql,20); // 20是每頁(yè)顯示的數(shù)量 // $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/>"; } // 頁(yè)碼索引條 echo $page->set_page_info(); ?>
Method 2: Using ajax
1. First understand the usage of limit in SQL statements
SELECT * FROM table …… limit 開始位置 , 操作條數(shù) (其中開始位置是從0開始的)
Example
Take the first 20 items Records: SELECT * FROM table ...... limit 0, 20
Take 20 records starting from the 11th: SELECT * FROM table ...... limit 10, 20
LIMIT n is equivalent to LIMIT 0,n.
Such as select * from table LIMIT 5; //Return the first 5 rows, is the same as select * from table LIMIT 0, 5
2 , Paging principle
The so-called paging display means that the result set in the database is displayed segment by segment. Page)
The first 10 records:
select * from table limit 0,10
The 11th to 20th records: select * from table limit 10,10
Records 21 to 30: select * from table limit 20,10
Paging formula: (current page number - 1) Number, number of items per page
Select * from table limit ($Page- 1) * $PageSize, $PageSize
3, $_SERVER["REQUEST_URI"] function
A type of predefined server variable, all starting with $_SERVER are called predetermined server variables. The function of REQUEST_URI is to obtain the current URI, which is the complete address path behind it except the domain name.
Example:
The current page is: http://www.test.com/home.php?id=23&cid=22
echo $_SERVER["REQUEST_URI"]
The result is:/home .php?id=23&cid=22
4. parse_url() parsing URL function
parse_url() is a function that parses URL into an array with fixed key values.
Example
$ua=parse_url("http://username:password@hostname/path?arg=value#anchor"); print_r($ua);Result:
Array ( [scheme] => http ;協(xié)議 [host] => hostname ;主機(jī)域名 [user] => username ;用戶 [pass] => password ;密碼 [path] => /path ;路徑 [query] => arg=value ;取參數(shù) [fragment] => anchor ; )
5. Code example
This paging for a message is divided into three parts, one is the database design, one is the connection page, and the other is the display page.
(1) Design database The design database is named bbs. There is a data table called message, which contains fields such as title, lastdate, user, and content, which respectively represent the message title, message date, and so on. Message person, message content
(2) Connect page
<?php $conn = @ mysql_connect("localhost", "root", "123456") or die("數(shù)據(jù)庫(kù)鏈接錯(cuò)誤"); mysql_select_db("bbs", $conn); mysql_query("set names 'GBK'"); //使用GBK中文編碼; //將空格,換行轉(zhuǎn)換為HTML可解析 function htmtocode($content) { $content = str_replace("\n", "<br>", str_replace(" ", " ", $content)); //兩個(gè)str_replace嵌套 return $content; } //$content=str_replace("'","‘",$content); //htmlspecialchars(); ?>
(3) Display page
<?php include("conn.php"); $pagesize=2; //設(shè)置每頁(yè)顯示2個(gè)記錄 $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).">上一頁(yè)</a> <a href=$url?page=".($pageval+1).">下一頁(yè)</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>標(biāo)題:<?php echo $row[title]?></td> <td>時(shí)間:<?php echo $row[lastdate]?></td> </tr> <tr bgcolor="#eff3ff"> <td> 用戶:<?php echo $row[user]?></td><td></td> </tr> <tr> <td>內(nèi)容:<?php echo htmtocode($row[content]);?></td> </tr> <br> </table> <?php } ?>
Method 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{ //設(shè)置為第一頁(yè) $page=1; } $first=1; $prev=$page-1; $next=$page+1; $last=$pages; //計(jì)算記錄偏移量 $offset=$pagesize*($page - 1); //讀取指定記錄數(shù) $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> 推薦人數(shù):($countpeople[$a]) |\n"; echo "<SPAN>平均分:<STRONG></STRONG> (".$count."票) | 評(píng)論數(shù):()</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."頁(yè)/總".$pages."頁(yè) | 總".$numrows."條</FONT> | "; if ($page>1) echo "<a onclick=\"viewpage(".$first.")\" href='#'>首頁(yè)</a> | "; if ($page>1) echo "<a onclick=\"viewpage(".$prev.")\" href='#'>上頁(yè)</a> | "; if ($page<$pages) echo "<a onclick=\"viewpage(".$next.")\" href='#'>下頁(yè)</a> | "; if ($page<$pages) echo "<a onclick=\"viewpage(".$last.")\" href='#'>尾頁(yè)</a>"; echo "轉(zhuǎn)到第 <INPUT maxLength=3 size=3 value=1 name=goto_page> 頁(yè) <INPUT hideFocus onclick=\"viewpage(document.all.goto_page.value)\" type=button value=Go name=cmd_goto>"; echo "</P></p></TD></TR></TBODY></TABLE>";Recommended learning: "
PHP Video Tutorial"
The above is the detailed content of There are several ways to implement paging in php. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The method to get the current session ID in PHP is to use the session_id() function, but you must call session_start() to successfully obtain it. 1. Call session_start() to start the session; 2. Use session_id() to read the session ID and output a string similar to abc123def456ghi789; 3. If the return is empty, check whether session_start() is missing, whether the user accesses for the first time, or whether the session is destroyed; 4. The session ID can be used for logging, security verification and cross-request communication, but security needs to be paid attention to. Make sure that the session is correctly enabled and the ID can be obtained successfully.

To extract substrings from PHP strings, you can use the substr() function, which is syntax substr(string$string,int$start,?int$length=null), and if the length is not specified, it will be intercepted to the end; when processing multi-byte characters such as Chinese, you should use the mb_substr() function to avoid garbled code; if you need to intercept the string according to a specific separator, you can use exploit() or combine strpos() and substr() to implement it, such as extracting file name extensions or domain names.

UnittestinginPHPinvolvesverifyingindividualcodeunitslikefunctionsormethodstocatchbugsearlyandensurereliablerefactoring.1)SetupPHPUnitviaComposer,createatestdirectory,andconfigureautoloadandphpunit.xml.2)Writetestcasesfollowingthearrange-act-assertpat

In PHP, the most common method is to split the string into an array using the exploit() function. This function divides the string into multiple parts through the specified delimiter and returns an array. The syntax is exploit(separator, string, limit), where separator is the separator, string is the original string, and limit is an optional parameter to control the maximum number of segments. For example $str="apple,banana,orange";$arr=explode(",",$str); The result is ["apple","bana

JavaScript data types are divided into primitive types and reference types. Primitive types include string, number, boolean, null, undefined, and symbol. The values are immutable and copies are copied when assigning values, so they do not affect each other; reference types such as objects, arrays and functions store memory addresses, and variables pointing to the same object will affect each other. Typeof and instanceof can be used to determine types, but pay attention to the historical issues of typeofnull. Understanding these two types of differences can help write more stable and reliable code.

std::chrono is used in C to process time, including obtaining the current time, measuring execution time, operation time point and duration, and formatting analysis time. 1. Use std::chrono::system_clock::now() to obtain the current time, which can be converted into a readable string, but the system clock may not be monotonous; 2. Use std::chrono::steady_clock to measure the execution time to ensure monotony, and convert it into milliseconds, seconds and other units through duration_cast; 3. Time point (time_point) and duration (duration) can be interoperable, but attention should be paid to unit compatibility and clock epoch (epoch)

ToaccessenvironmentvariablesinPHP,usegetenv()orthe$_ENVsuperglobal.1.getenv('VAR_NAME')retrievesaspecificvariable.2.$_ENV['VAR_NAME']accessesvariablesifvariables_orderinphp.iniincludes"E".SetvariablesviaCLIwithVAR=valuephpscript.php,inApach

PHPhasthreecommentstyles://,#forsingle-lineand/.../formulti-line.Usecommentstoexplainwhycodeexists,notwhatitdoes.MarkTODO/FIXMEitemsanddisablecodetemporarilyduringdebugging.Avoidover-commentingsimplelogic.Writeconcise,grammaticallycorrectcommentsandu
