Php自用分页函数程序代码

一个简单好用的Php自用分页函数,有需要使用分页函数又不想手写的朋友可进入参考,代码如下:

  1. /*
  2. * 前台分页
  3. *
  4. * $page_array = array(
  5. * 'totle' =>10, //总数
  6. * 'dispage' =>10, //每页显示条数
  7. * 'url' =>'/article/list/',//url地址
  8. * 'now_page', =>1, //当前所在页数
  9. * );
  10. *
  11. * @return pagenav
  12. */
  13. function front_page( $page_array ){
  14. //分页判断
  15. $lastpage = ceil($page_array['total'] / $page_array['dispage']); //最后一页
  16. $page_array['now_page'] = min( $lastpage , $page_array['now_page'] );//比较当前页数和最后一页
  17. $prepage = $page_array['now_page'] - 1;//上一页
  18. $nextpage = ($page_array['now_page'] == $lastpage ? 0 : $page_array['now_page'] + 1 );//下一页
  19. $firstcount = ($page_array['now_page']-1) * $page_array['dispage'];
  20. if( $lastpage <= 1) return false;//最后一页小于1,则直接返回
  21. //首页
  22. if($prepage){
  23. $page_array[]="<a href='{$page_array['url']}"."1/'>首页</a>";
  24. }else{
  25. $page_array[]="<span class=\"nolink\">首页</span>";
  26. }
  27. //上一页
  28. if($prepage) {
  29. $page_array[]="<a href='{$page_array['url']}$prepage/'> 上一页 </a> ";
  30. }else{
  31. $page_array[]='';
  32. }
  33. //显示的数字分页条数
  34. $pagenum=5;
  35. $offset=2;//偏移两
  36. $from=$page_array['now_page'] - $offset;//起始
  37. $to=$page_array['now_page'] + $pagenum-$offset-1;//终止
  38. if($pagenum>$lastpage){
  39. $from=1;
  40. $to=$lastpage;
  41. }else{
  42. if($from<1){
  43. $to=$page_array['now_page'] + 1 - $from;
  44. $from=1;
  45. if(($to-$from)<$pagenum && ($to-$from)<$lastpage){
  46. $to=$pagenum;
  47. }
  48. }elseif($to>$lastpage){
  49. $from=$page_array['now_page'] - $lastpage+$to;
  50. $to=$lastpage;
  51. if(($to-$from)<$pagenum && ($to-$from)<$lastpage){
  52. $from=$lastpage-$pagenum+1;
  53. }
  54. }
  55. }
  56. for($i=$from;$i<=$to;$i++){
  57. if($i == $page_array['now_page']){
  58. $pagenav.="<a href=\"#\" title=\"\">$i</a> ";
  59. }else{
  60. $pagenav.="<a href=\"{$page_array['url']}$i/\" title=\"\">$i</a> ";
  61. }
  62. }
  63. //数字分页
  64. $page_array[]= $pagenav;
  65. //下一页
  66. if($nextpage){
  67. $page_array[]="<a href='{$page_array['url']}"."$nextpage/'> 下一页 </a> ";
  68. }else {
  69. $page_array[]='';
  70. }
  71. //尾页
  72. if($nextpage){
  73. $page_array[]="<a href='{$page_array['url']}"."$lastpage/'>尾页</a>";
  74. }else{
  75. $page_array[]='<span class="nolink">尾页</span>';
  76. }
  77. //记录数
  78. $page_array[]="<span>每页 ".$page_array['dispage']." 条</span> <span>共 ".$page_array['total']." 条纪录</span>";
  79. //分页数
  80. $page_array[]="共 ".$lastpage." 页";
  81. //跳页
  82. $page_array[] = '<span>跳转到:</span><input size="4" type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value<0)?1:this.value;location=\''.$page_array['url'].'\'+page;}" /> //开源软件:phpfensi.com
  83. <a href="javascript:void(0)" onclick="javascript:var spage=(window.document.getElementById(\'pagenu\').value==\'\')?1:window.document.getElementById(\'pagenu\').value;location=\''.$page_array['url'].'\'+spage;">Go</a>';
  84. //第一页总数
  85. $firstcount=$firstcount < 1 ? 0 : $firstcount;
  86. return array('pagenav'=>$page_array,'limit'=>$firstcount,'offset'=> $page_array['dispage'],'allpage'=>$lastpage);
  87. }