PHP中常用的分页类总结 – php分页

2021年4月16日 作者 liuyizhi

PHP中常用的分页类总结

php分页是目前在显示大量结果时所采用的最好的方式,有了下面这些代码的帮助,开发人员可以在多个页面中显示大量的数据,在互联网上,分​页是一般用于搜索结果或是浏览全部信息.

php基本分页,代码如下:

  1. <?php 
  2. // database connection info 
  3. $conn = mysql_connect(‘localhost’,’dbusername’,’dbpass’) or trigger_error(“SQL”, E_USER_ERROR); 
  4. $db = mysql_select_db(‘dbname’,$conn) or trigger_error(“SQL”, E_USER_ERROR); 
  5.  
  6. // find out how many rows are in the table  
  7. $sql = “SELECT COUNT(*) FROM numbers”; 
  8. $result = mysql_query($sql, $conn) or trigger_error(“SQL”, E_USER_ERROR); 
  9. $r = mysql_fetch_row($result); 
  10. $numrows = $r[0]; 
  11.  
  12. // number of rows to show per page 
  13. $rowsperpage = 10; 
  14. // find out total pages 
  15. $totalpages = ceil($numrows / $rowsperpage); 
  16.  
  17. // get the current page or set a default 
  18. if (isset($_GET[‘currentpage’]) && is_numeric($_GET[‘currentpage’])) { 
  19. // cast var as int 
  20. $currentpage = (int) $_GET[‘currentpage’]; 
  21. } else { 
  22. // default page num 
  23. $currentpage = 1; 
  24. } // end if 
  25.  
  26. // if current page is greater than total pages… 
  27. if ($currentpage > $totalpages) { 
  28. // set current page to last page 
  29. $currentpage = $totalpages; 
  30. } // end if 
  31. // if current page is less than first page… 
  32. if ($currentpage < 1) { 
  33. // set current page to first page 
  34. $currentpage = 1; 
  35. } // end if 
  36.  
  37. // the offset of the list, based on current page  
  38. $offset = ($currentpage – 1) * $rowsperpage; 
  39.  
  40. // get the info from the db  
  41. $sql = “SELECT id, number FROM numbers LIMIT $offset, $rowsperpage”; 
  42. $result = mysql_query($sql, $conn) or trigger_error(“SQL”, E_USER_ERROR); 
  43.  
  44. // while there are rows to be fetched… 
  45. while ($list = mysql_fetch_assoc($result)) { 
  46. // echo data 
  47. echo $list[‘id’] . ” : ” . $list[‘number’] . “<br />”; 
  48. } // end while 
  49.  
  50. /****** build the pagination links ******/ 
  51. // range of num links to show 
  52. $range = 3; 
  53.  
  54. // if not on page 1, don’t show back links 
  55. if ($currentpage > 1) { 
  56. // show << link to go back to page 1 
  57. echo ” <a href='{$_SERVER[‘PHP_SELF’]}?currentpage=1′><<</a> “; 
  58. // get previous page num 
  59. $prevpage = $currentpage – 1; 
  60. // show < link to go back to 1 page 
  61. echo ” <a href='{$_SERVER[‘PHP_SELF’]}?currentpage=$prevpage’><</a> “; 
  62. } // end if 
  63.  
  64. // loop to show links to range of pages around current page 
  65. for ($x = ($currentpage – $range); $x < (($currentpage + $range) + 1); $x++) { 
  66. // if it’s a valid page number… 
  67. if (($x > 0) && ($x <= $totalpages)) { 
  68. // if we’re on current page… 
  69. if ($x == $currentpage) { 
  70. // ‘highlight’ it but don’t make a link 
  71. echo ” [<b>$x</b>] “; 
  72. // if not current page… 
  73. } else { 
  74. // make it a link 
  75. echo ” <a href='{$_SERVER[‘PHP_SELF’]}?currentpage=$x’>$x</a> “; 
  76. } // end else 
  77. } // end if  
  78. } // end for 
  79.  
  80. // if not on last page, show forward and last page links  
  81. if ($currentpage != $totalpages) { 
  82. // get next page 
  83. $nextpage = $currentpage + 1; 
  84. // echo forward link for next page  
  85. echo ” <a href='{$_SERVER[‘PHP_SELF’]}?currentpage=$nextpage’>></a> “; 
  86. // echo forward link for lastpage 
  87. echo ” <a href='{$_SERVER[‘PHP_SELF’]}?currentpage=$totalpages’>>></a> “; 
  88. } // end if 
  89. /****** end build pagination links ******/ 
  90. ?>