Home  >  Article  >  Backend Development  >  Detailed explanation of paging program in php based on message board_PHP tutorial

Detailed explanation of paging program in php based on message board_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 16:59:381118browse

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
 代码如下 复制代码

$recordSql = $sql. ” LIMIT “.$page*$pagesize.”,”.$pagesize;

$recordSql = $sql. ” LIMIT “.$page*$pagesize.”,”.$pagesize;

The judgment of the variable $page is obtained in lines 8 and 9 of the program:
 代码如下 复制代码

if(isset($_GET['page'])&&$_GET['page']!=”) $page=$_GET['page'];
else $page=0;

The code is as follows Copy code

if(isset($_GET['page'])&&$_GET['page']!=”) $page=$_GET['page'];

else $page=0;

Of course you have also seen the $_GET['page'] variable which will be discussed below.
 代码如下 复制代码
$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));
What needs to be said is why do we add this limit after getting the total number of rows? It’s very simple. If we add this limit when we get the number of result records, our total number of rows will never be It's greater than 10, because after adding it, the maximum number of records he can return is 10, brother. ——This is obviously not in line with the actual situation. So we are executing:
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
 代码如下 复制代码

$pagesize = 10;//每一页显示多少留言记录
if(isset($_GET['page'])&&$_GET['page']!='') $page=$_GET['page'];
else $page=0;

$sql = "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";
$numRecord = mysql_num_rows(mysql_query($sql));
$totalpage = ceil($numRecord/$pagesize);

$recordSql = $sql. " LIMIT ".$page*$pagesize.",".$pagesize;
$result = mysql_query($recordSql);


while($rs=mysql_fetch_object($result)){
?>
 
   
 
  if(isset($_SESSION['login'])&&$_SESSION['login']){
?>
   
   
 
  }
?>
 
   
 
 
}
?>
留言人:name?> |Email:email?>|QQ:qq?>|留言时间:post_time+8*3600)?>
回复 | 删除
留言内容:post))?>

   
    回复内容:revert))?>[revert_time!="") echo date("Y-m-d H:i:s",$rs->revert_time+8*3600)?> ]
   

   
   


 
   
 

if($page>0) echo "上一页|" ;
if($page<$totalpage-1) echo "下一页" ;
?>

Copy code
$pagesize = 10;//How many message records are displayed on each page
if(isset($_GET['page'])&&$_GET['page']!='') $page=$_GET['page'];
else $page=0; $sql = "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";
$numRecord = mysql_num_rows(mysql_query($sql));
$totalpage = ceil($numRecord/$pagesize); $recordSql = $sql. " LIMIT ".$page*$pagesize.",".$pagesize;
$result = mysql_query($recordSql);
while($rs=mysql_fetch_object($result)){
?>



if(isset($_SESSION['login'])&&$_SESSION['login']){
?>



}
?>




}
?>
Message from:name?> |Email:email?>|QQ: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" ;
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/631302.htmlTechArticleThe article focuses on the paging principle in php, and we use an implementation to explain how to implement it in php Pagination, this is based on the square board program I wrote, friends in need...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn