Home >Backend Development >PHP Tutorial >Detailed explanation of understanding PHP paging ideas_PHP tutorial
Paging in php is relatively simple. We only need to understand a few variables, such as pagesize, count, and page. How many pages are there in total? What page is the current page? How many items should be displayed on the page? Record, we only need a formula to calculate it.
Only need to get two variables and half the battle is done:
The number of records to be displayed on each page $pageSize
The total amount of data in the table $rowCount
With the above two variables, we can figure out how many pages there are $pageCount
Then through a for loop, for example, if there are 13 pages in total, it is easy to output the number of pages through the for loop
The code is as follows | Copy code | ||||
$nav='';//Used A variable that holds the number of pages
{ |
代码如下 | 复制代码 |
$step= floor(($pageNow-1)/10)*10+1; for ($i=$step;$i<=$step+10;$i++) { $nav.="第".$i."页 "; } |
The code is as follows | Copy code |
$step= floor(($pageNow-1 )/10)*10+1; for ($i=$step;$i<=$step+10;$i++) <🎜> { <🎜> $nav.="Page ".$i." "; } |
For example, if the current page $pageNow is between 1 and 10, then $step=0
If the current page $pageNow is between 11~20, then $step=10
If the current page $pageNow is between 21~30, then $step=20
Referring to the code of the specific implementation process, it is not difficult to find that the second condition of the for loop only needs to add 10 to achieve the situation of only displaying 10 each time. We will package this step in the getLink in the fenyePage class. () method
Then again, how can we get the values of the $pageSize and $rowCount variables?
$pageSize can be specified by the programmer himself, and $rowCount can be obtained with the help of a simple function that executes sql statements
The code is as follows | Copy code |
代码如下 | 复制代码 |
/** * $sql语句:①获取数据②获取总记录数 */ class fenyePage{ public $pageSize=5;//每页显示的数量-->程序员指定的 public $rowCount;//这是从数据库中获取的(形如SELECT COUNT(id) FROM TABLE)用来保存总共有多少条记录 public $pageNow;//通过$_GET['page']获取的,用来保存当前所在的页码 public $pageCount;//计算得到的,用来保存总共有多少页 public $res_arr;//用来保存要显示到页面的数据(比如保存SELECT * FROM TABLE LIMIT 0,10 检索的数据) public $nav;//显示第几页第几页的导航条 /** * 取得当前页面的超链接 * * @author 小飞 2012/5/30 */ public function getLink() { $this->nav=''; $this->pageCount=ceil(($this->rowCount/$this->pageSize)); $step= floor(($this->pageNow-1)/10)*10+1; if ($this->pageNow>10) { $this->nav.=" << ";//整体每10页向前翻 } if ($this->pageNow!=1) { $this->nav.=" 上一页 "; } if ($this->pageNow!=1) { $this->nav.="首页 "; } for ($start=$step;$start<$step+10 && $start<=$this->pageCount;$start++) { $this->nav.="".$start." "; } if ($this->pageNow!=$this->pageCount) { $this->nav.="末页 "; } if ($this->pageNow!=$this->pageCount) { $this->nav.=" 下一页"; } if ($this->pageCount>10 && $this->pageNow<$this->pageCount-8){ $this->nav.=" >> ";//整体每10页向后翻 } $this->nav.="/共有".$this->pageCount."页"; } } ?> |
Since the task of operating the database in zf is completed by the model layer, I placed the function to obtain the value of $rowCount in the corresponding table model
For example: I operate the order table
Then when I want to display all order information, I get the value of $rowCount through the showorder() method in the order class, and pay it to the $rowCount attribute in the paging class
Similarly, the data information to be displayed on the page is also paid to the $res_arr attribute in the paging class
In this way, we can easily instantiate a paging class (fenyePage), and then pass it to the showorder() function through parameters, and the function will complete the following actions:
①Information to be displayed on the page
②How many records are there in the table
The code is as follows
|
Copy code
|
||||
/**
* * @author Xiaofei 2012/5/30 |
* @param $id userid
*/
//This sql statement is mainly used to calculate the total amount of data $sql2="SELECT COUNT(id) FROM `order`"; $fenye->res_arr=$db->fetchAll($sql1);//Store the data to be displayed in the $res_arr attribute of the paging class for easy callingThe code is as follows | Copy code |
$this->pageCount=ceil(( $this->rowCount/$this->pageSize)); $step= floor(($this->pageNow-1)/10)*10+1; Then there is select * from table where * limit 0,10 in sql, which is $select->limit($fenye->pageSize,($fenye->pageNow-1)*$ in this example fenye->pageSize); http://www.bkjia.com/PHPjc/631620.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/631620.htmlTechArticlePaging in php is relatively simple. We only need to understand a few points, such as pagesize, count ,page variables, how many pages in total, what page is it currently, how many records should be displayed on page,... |