VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • php实现分页显示

这篇文章主要介绍了php实现分页显示的方法,感兴趣的小伙伴们可以参考一下

所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:

每页多少条记录($PageSize)?

当前是第几页($CurrentPageID)?

现在只要再给我一个结果集,我就可以显示某段特定的结果出来。

至于其他的参数,比如:上一页($PReviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据之前的知识获得。

以MySQL数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。

前10条记录:select * from table limit 0,10

第11至20条记录:select * from table limit 10,10

第21至30条记录:select * from table limit 20,10

……

这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:

select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize

利用这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。

简单代码实现

请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能,比如搜索等等。

  1. // 建立数据库连接  
  2. $link = mysql_connect("localhost""mysql_user""mysql_passWord")   
  3.    or die("Could not connect: " . mysql_error());   
  4. // 获取当前页数  
  5. if( isset($_GET['page']) ){  
  6.   $page = intval$_GET['page'] );  
  7. }  
  8. else{  
  9.   $page = 1;  
  10. }   
  11. // 每页数量  
  12. $PageSize = 10;   
  13. // 获取总数据量  
  14. $sql = "select count(*) as amount from table";  
  15. $result = mysql_query($sql);  
  16. $row = mysql_fetch_row($result);  
  17. $amount = $row['amount'];   
  18. // 记算总共有多少页  
  19. if$amount ){  
  20.   if$amount < $page_size ){ $page_count = 1; }        //如果总数据量小于$PageSize,那么只有一页  
  21.   if$amount % $page_size ){                 //取总数据量除以每页数的余数  
  22.     $page_count = (int)($amount / $page_size) + 1;      //如果有余数,则页数等于总数据量除以每页数的结果取整再加一  
  23.   }else{  
  24.     $page_count = $amount / $page_size;           //如果没有余数,则页数等于总数据量除以每页数的结果  
  25.   }  
  26. }  
  27. else{  
  28.   $page_count = 0;  
  29. }  
  30. // 翻页链接  
  31. $page_string = '';  
  32. if$page == 1 ){  
  33.   $page_string .= '第一页|上一页|';  
  34. }  
  35. else{  
  36.   $page_string .= '第一页|.($page-1).'>上一页|';  
  37. }   
  38. if( ($page == $page_count) || ($page_count == 0) ){  
  39.   $page_string .= '下一页|尾页';  
  40. }  
  41. else{  
  42.   $page_string .= '.($page+1).'>下一页|.$page_count.'>尾页';  
  43. }  
  44. // 获取数据,以二维数组格式返回结果  
  45. if$amount ){  
  46.   $sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";  
  47.   $result = mysql_query($sql);  
  48.   while ( $row = mysql_fetch_row($result) ){  
  49.     $rowset[] = $row;  
  50.   }  
  51. }else{  
  52.   $rowset = array();  
  53. }  
  54. // 没有包含显示结果的代码,那不在讨论范围,只要用foreach就可以很简单的用得到的二维数组来显示结果  
  55. ?>
  56.  

出处:http://www.phpfensi.com/php/20210625/16656.html


相关教程