加入收藏 | 设为首页 | 会员中心 | 我要投稿 伊春站长网 (https://www.0458zz.com/)- 管理运维、图像技术、数据标注、智能营销、数据计算!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

二个php分页程序代码

发布时间:2022-07-22 09:19:39 所属栏目:PHP教程 来源:互联网
导读:PHP分页器制作,自动生成分面页码,JS调用函数,分页的原理大致如下,分页程序有两个非常重要的参数:每页显示几条记录($pagesize)和当前是第几页($page). 有了这两个参数就可以很方便的写出分页程序,我们以MySql数据库作为数据源,在mysql里如果要想取出表内某段
  PHP分页器制作,自动生成分面页码,JS调用函数,分页的原理大致如下,分页程序有两个非常重要的参数:每页显示几条记录($pagesize)和当前是第几页($page).
 
  有了这两个参数就可以很方便的写出分页程序,我们以MySql数据库作为数据源,在mysql里如果要想取出表内某段特定内容可以使用的 T-SQL语句:select * from table limit offset,rows来实现。这里的offset是记录偏移量,它的计算方法是offset=$pagesize*($page-1),rows是要显示的记录条数,这里就是$page,也就是说select * from table limit 10,10这条语句的意思是取出表里从第11条记录开始的20条记录.
 
  PHP实例代码如下:
 
  <?php
  class PageView{
      /**页码**/
      public $pageNo = 1;
      /**页大小**/
      public $pageSize = 20;
      /**共多少页**/
      public $pageCount = 0;
      /**总记录数**/
      public $totalNum = 0;
      /**偏移量,当前页起始行**/
      public $offSet = 0;
      /**每页数据**/
      public $pageData = array();
       
      /**是否有上一页**/
      public $hasPrePage = true;
      /**是否有下一页**/
      public $hasNextPage = true;
       
      public $pageNoList = array();
       
      public $jsFunction ='jsFunction';
      /**
       *  
       * @param unknown_type $count 总行数
       * @param unknown_type $size 分页大小
       * @param unknown_type $string
       */
      public function __construct($count=0, $size=20,$pageNo=1,$pageData =array(),$jsFunction='jsFunction'){
   
          $this->totalNum = $count;//总记录数
          $this->pageSize = $size;//每页大小
          $this->pageNo = $pageNo;
          //计算总页数
          $this->pageCount = ceil($this->totalNum/$this->pageSize);
          $this->pageCount = ($this->pageCount<=0)?1:$this->pageCount;
          //检查pageNo
          $this->pageNo = $this->pageNo == 0 ? 1 : $this->pageNo;
          $this->pageNo = $this->pageNo > $this->pageCount? $this->pageCount : $this->pageNo;
           
          //计算偏移
          $this->offset = ( $this->pageNo - 1 ) * $this->pageSize;
          //计算是否有上一页下一页
          $this->hasPrePage = $this->pageNo == 1 ?false:true;
   
          $this->hasNextPage = $this->pageNo >= $this->pageCount ?false:true;
           
          $this->pageData = $pageData;
          $this->jsFunction = $jsFunction;
           
      }
      /**
       * 分页算法
       * @return
       */
      private function generatePageList(){
          $pageList = array();
          if($this->pageCount <= 9){
              for($i=0;$i<$this->pageCount;$i++){
                  array_push($pageList,$i+1);
              }
          }else{
              if($this->pageNo <= 4){
                  for($i=0;$i<5;$i++){
                      array_push($pageList,$i+1);
                  }
                  array_push($pageList,-1);
                  array_push($pageList,$this->pageCount);
   
              }else if($this->pageNo > $this->pageCount - 4){
                  array_push($pageList,1);
                   
                  array_push($pageList,-1);
                  for($i=5;$i>0;$i--){
                      array_push($pageList,$this->pageCount - $i+1);
                  }
              }else if($this->pageNo > 4 && $this->pageNo <= $this->pageCount - 4){
                  array_push($pageList,1);
                  array_push($pageList,-1);
                   
                  array_push($pageList,$this->pageNo -2);
                  array_push($pageList,$this->pageNo -1);
                  array_push($pageList,$this->pageNo);
                  array_push($pageList,$this->pageNo + 1);
                  array_push($pageList,$this->pageNo + 2);
                   
                  array_push($pageList,-1);
                  array_push($pageList,$this->pageCount);
                   
              }
          }
          return $pageList;
      }
   
      /***
       * 创建分页控件
      * @param
      * @return String
      */
      public function echoPageAsDiv(){
          $pageList = $this->generatePageList();
           
          $pageString ="<div class='pagination'><div class='page-bottom'>";
       
          if(!emptyempty($pageList)){
              if($this->pageCount >1){
                  if($this->hasPrePage){
                      $pageString = $pageString ."<a class='page-next' href="javascript:" .$this->jsFunction . "(" . ($this->pageNo-1) . ")">上一页</a>";
                  }
                  foreach ($pageList as $k=>$p){
                      if($this->pageNo == $p){
                          $pageString = $pageString ."<span class='page-cur'>" . $this->pageNo . "</span>";
                          continue;
                      }
                      if($p == -1){
                          $pageString = $pageString ."<span class='page-break'>...</span>";
                          continue;
                      }
                      $pageString = $pageString ."<a href="javascript:" .$this->jsFunction . "(" . $p . ")">" . $p . "</a>";
                  }
                   
                  if($this->hasNextPage){
                      $pageString = $pageString ."<a class='page-next' href="javascript:" .$this->jsFunction . "(" . ($this->pageNo+1) . ")">下一页</a>";
                  }
                   
              }
          }
          $pageString = $pageString .("</div></div>");
          return $pageString;
      }
  }
  ?>
  css,代码如下:
 
  <style type="text/css">
  <!--
  .pagination {font-family: Tahoma;overflow: hidden; padding-top: 12px; text-align: center;}
  .pagination-tab { margin-bottom: 20px;}
  .pagination a, .pagination .page-cur, .pagination .page-prev_g, .pagination .page-prev, .pagination .page-next, .pagination .page-next_g, .pagination .page-break, .pagination .page-skip {
      display: inline-block;font-family: Tahoma,SimSun,Arial; height: 22px;line-height:22px; margin: 0; min-width: 16px;padding: 0 5px; text-align: center; vertical-align: top; white-space: nowrap;}
  .pagination a, .pagination .page-prev_g, .pagination .page-prev, .pagination .page-next, .pagination .page-next_g, .pagination .page-cur, .pagination .page-break {
      border: 1px solid #ed3d83; color:#e9357d; font-weight:bold;}
  .pagination a:hover { border: 1px solid #ed3d83;text-decoration: none; background-color:#f95f9d; color:#fff;}
  .pagination .page-prev_g, .pagination .page-prev, .pagination .page-next, .pagination .page-next_g { width: 36px; background-image: url(../static/img/page.gif);}
  .pagination .page-prev { background-position: -0px -38px; padding-left: 16px;}
  .pagination .page-prev_g { background-position:0px -59px; padding-left: 16px; color:#cbcbcb; font-weight:normal;}
  .pagination .page-next { background-position: 0px 0px; padding-right: 16px; font-weight:normal;}
  .pagination .page-next_g { background-position: -0px -19px; padding-right: 16px; color:#cbcbcb;}
  .pagination .page-cur {background-color: #f95f9d; border: 1px solid #ed3d83;color: #fff;font-weight: bold;}
  .pagination .page-break {border: medium none; background:none transparent; color:#333;}
   
  -->
  </style> 

(编辑:伊春站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读