Home > Article > Backend Development > Detailed explanation of paging program in php based on message board_PHP tutorial
The article focuses on the paging principle in PHP. At the same time, we use an implementation to explain how to implement paging in PHP. This is based on the square board program I wrote. Friends in need can refer to it. It is very useful. Suitable for beginners.
The key problem of paging actually lies in the two numbers following the limit keyword of Mysql. The first one is the starting row number that needs to be recorded, and the second number is how many rows are obtained after this starting row number. Recording - Don’t mistake this for the starting line and the ending line, which are very different.
Look at line 19 of our index.php:
The code is as follows | Copy code | ||||
|
代码如下 | 复制代码 |
if(isset($_GET['page'])&&$_GET['page']!=”) $page=$_GET['page']; |
The code is as follows | Copy code |
if(isset($_GET['page'])&&$_GET['page']!=”) $page=$_GET['page']; else $page=0;
|
代码如下 | 复制代码 |
$recordSql = "SELECT a . * , b.name, b.email, b.qq, c.revert_time, c.revert FROM post a LEFT JOIN revert c ON ( a.id = c.post_id ) , guest b WHERE a.guest_id = b.id ORDER BY a.id DESC " LIMIT 0,10"; |
We define the variable $pagesize ourselves on line 7, which is how many records are displayed on each page. We define 10. When the variable $page=0, our statement will eventually look like this:
It is to get 10 record results starting from 0 record - this includes the 0th record;
What about when $page=1? As you can imagine - at this time $page*$pagesize=10, of course it has never been... I won't say it anymore, it would be too long to say.代码如下 | 复制代码 |
mysql_num_rows(mysql_query($sql)); |
The code is as follows | Copy code |
mysql_num_rows(mysql_query($sql)); |
Get the total number of records and then add the limit keyword.
Okay, we have obtained the total number of records and set the number of records displayed on each page to 10. Now all we need is the total number of pages. I won’t talk about this elementary school problem, right? Of course, the total number of records divided by the number displayed on each page is the total number of pages. Of course, there are times when the division is inexhaustible. For example, the total number of records is 11 and 10 are displayed on each page. How many pages do we need to divide it into? Of course it's two pages. How can we make 11/10=2? -Obviously wrong, but real life is not perfect mathematics. Use the ceil function. This was mentioned in the previous chapter, so I won’t go into detail here.
Look what we have now:
代码如下 | 复制代码 |
总记录数,$numRecord = mysql_num_rows(mysql_query($sql)); 总页数,$totalpage = ceil($numRecord/$pagesize); |
We have nothing missing, except how to display "previous page, next page". It's very simple, just two judgments. Look at lines 159-163 of index.php:
Line 160:
代码如下 | 复制代码 |
if($page>0) echo "上一页|" ; |
If the variable $page>0, that is, the current page number is greater than 0, indicating that there is a previous page, then the "previous page" link will be displayed. The $page in this link needs to be reduced by one, for example, the current page is 2 , then of course the previous page is 1, right? When we click on the previous page, page=1 will be passed along with this link. This method of passing variables based on the link is the get method. This returns to line 8 and line 9 of the program for processing.
In line 161, our judgment is that if the current page number is less than the total number of records -1 - because our page number starts from 0, the total number of records must be subtracted by one to make the judgment realistic. If this judgment is true, it means that there is the next page. Of course, $page will be increased by one on the next page.
That’s it for the entire paging. Just remember how to get the total number of records, how to add the limit keyword to the sql statement, and how to determine whether to display the previous or next page. Everything is ok
Complete code
The code is as follows
|
Copy code | |||||||||
Message from:name?> |Email:email?>|QQ: php echo $rs->qq?>|Message time:post_time+8*3600)?> |
reply | Delete |
Message content: post))?> Reply content:revert))?>[revert_time!="") echo date("Y-m-d H:i: s",$rs->revert_time+8*3600)?> ] |
if($page>0) echo "Previous page|" ; if($page<$totalpage-1) echo "Next page" ; ?> |