js333 > 计算机互联网 > 完美php文章分页类,二个php分页程序代码

原标题:完美php文章分页类,二个php分页程序代码

浏览次数:107 时间:2019-09-27

 class SubPages{
  private   $each_disNums;//每页展现的条目款项数
  private   $nums;//总条目款项数
  private   $current_page;//当前被选中的页
  private   $sub_pages;//每便展现的页数
  private   $pageNums;//总页数
  private   $page_array = array();//用来布局分页的数组
  private   $subPage_link;//每一个分页的链接
  private   $subPage_type;//显示分页的类型
     /*
     __construct是SubPages的构造函数,用来在开立类的时候自动运维.
     @$each_disNums   每页呈现的条款数
     @nums     总条目款项数
     @current_num     当前被选中的页
     @sub_pages       每一回展现的页数
     @subPage_link    种种分页的链接
     @subPage_type    展现分页的体系
   
     当@subPage_type=1的时候为平日分页格局
     example:   共4523条记下,每页展现10条,当前第半数53页 [首页] [上页] [下页] [尾页]
     当@subPage_type=2的时候为特出分页样式
     example:   当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
     */
  function __construct($each_disNums,$nums,$current_page,$sub_pages,$subPage_link,$subPage_type){
   $this->each_disNums=intval($each_disNums);
   $this->nums=intval($nums);
   if(!$current_page){
    $this->current_page=1;
   }else{
    $this->current_page=intval($current_page);
   }
   $this->sub_pages=intval($sub_pages);
   $this->pageNums=ceil($nums/$each_disNums);
   $this->subPage_link=$subPage_link;
   $this->show_SubPages($subPage_type);     //调用show_SubPages函数
    //echo $this->pageNums."--".$this->sub_pages;
  }
  function __destruct(){
   unset($each_disNums);
   unset($nums);
   unset($current_page);
   unset($sub_pages);
   unset($pageNums);
   unset($page_array);
   unset($subPage_link);
   unset($subPage_type);
  }
   /*
   show_SubPages函数用在构造函数里面。何况用来判定展现怎么体统的分页 
     */
  function show_SubPages($subPage_type){
   if($subPage_type == 1){
    $this->subPageCss1();
   }elseif ($subPage_type == 2){
    $this->subPageCss2();
   }
  }
   
   
     /*
   用来给创立分页的数组初叶化的函数。
     */
  function initArray(){
   for($i=0;$i<$this->sub_pages;$i++){
    $this->page_array[$i]=$i;
   }
   return $this->page_array;
  }
   /*
   construct_num_Page该函数使用来组织展现的条条框框
   即使:[1][2][3][4][5][6][7][8][9][10]
     */
  function construct_num_Page(){
   if($this->pageNums < $this->sub_pages){
    $current_array=array();
    for($i=0;$i<$this->pageNums;$i++){
     $current_array[$i]=$i+1;
    }
   }else{
    $current_array=$this->initArray();
    if($this->current_page <= 3){
     for($i=0;$i<count($current_array);$i++){
      $current_array[$i]=$i+1;
     }
    }elseif ($this->current_page <= $this->pageNums && $this->current_page > $this->pageNums - $this->sub_pages + 1 ){
     for($i=0;$i<count($current_array);$i++){
      $current_array[$i]=($this->pageNums)-($this->sub_pages)+1+$i;
     }
    }else{
     for($i=0;$i<count($current_array);$i++){
      $current_array[$i]=$this->current_page-2+$i;
     }
    }
   }   
   return $current_array;
  }
   /*
     构造普通情势的分页
     共4523条记下,每页展现10条,当前第54%53页 [首页] [上页] [下页] [尾页]
     */
  function subPageCss1(){
   $subPageCss1Str="";
   $subPageCss1Str.="共".$this->nums."条记录,";
   $subPageCss1Str.="每页显示".$this->each_disNums."条,";
   $subPageCss1Str.="当前第".$this->current_page."/".$this->pageNums."页 ";
   if($this->current_page > 1){
    $firstPageUrl=$this->subPage_link."1";
    $prewPageUrl=$this->subPage_link.($this->current_page-1);
    $subPageCss1Str.="[<a href='$firstPageUrl'>首页</a>] ";
    $subPageCss1Str.="[<a href='$prewPageUrl'>上一页</a>] ";
   }else {
    $subPageCss1Str.="[首页] ";
    $subPageCss1Str.="[上一页] ";
   }
     
   if($this->current_page < $this->pageNums){
    $lastPageUrl=$this->subPage_link.$this->pageNums;
    $nextPageUrl=$this->subPage_link.($this->current_page+1);
    $subPageCss1Str.=" [<a href='$nextPageUrl'>下一页</a>] ";
    $subPageCss1Str.="[<a href='$lastPageUrl'>尾页</a>] ";
   }else {
    $subPageCss1Str.="[下一页] ";
    $subPageCss1Str.="[尾页] ";
   }  
   echo $subPageCss1Str;  
  }
   
   /*
     构造杰出形式的分页
     当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
     *//* 产品页用*/
  function subPageCss2(){
   $subPageCss2Str="";
   
   //jason edit
   //$subPageCss2Str.="<li class="text">当前第".$this->current_page."/".$this->pageNums."页 </li>";
     
   if($this->current_page > 1){
    $firstPageUrl=$this->subPage_link."1";
    $prewPageUrl=$this->subPage_link.($this->current_page-1);
    //$subPageCss2Str.="<li class="pre"><a href='$firstPageUrl'>首 页</a></li>";
    $subPageCss2Str.="<li class="pre"><a href='$prewPageUrl'>上一页</a></li>";
   }else {
    //$subPageCss2Str.="<li class="prea">首 页</li> ";
    $subPageCss2Str.="<li class="prea">上一页</li> ";
   }
     
   $a=$this->construct_num_Page();
   for($i=0;$i<count($a);$i++){
    $s = $a[$i];
    if($s == $this->current_page ){
     $subPageCss2Str.="<li class="num">".$s."</li>";
    }else{
     $url=$this->subPage_link.$s;
     //echo $url;exit;
     $subPageCss2Str.="<li class="num2"><a href='$url'>".$s."</a></li>";
     //echo $subPageCss2Str;
    }
   }
   //exit;
   if($this->current_page < $this->pageNums){
    $lastPageUrl=$this->subPage_link.$this->pageNums;
    $nextPageUrl=$this->subPage_link.($this->current_page+1);
    $subPageCss2Str.=" <li class="next"><a href='$nextPageUrl'>下一页</a></li> ";
    //$subPageCss2Str.="<li class="next"><a href='$lastPageUrl'>尾 页</a></li> ";
   }else {
    $subPageCss2Str.="<li class="nexta">下一页</li>";
    //$subPageCss2Str.="<li class="nexta">尾 页</li> ";
   }
   echo $subPageCss2Str;
  }
 }

 
<?php  
 class My_Lib_pages{  
  
   private  $each_disNums;//每页呈现的条文数  
   private  $nums;//总条约数  
   var  $current_page;//当前被入选的页  
   private  $sub_pages;//每一趟呈现的页数  
   private  $pageNums;//总页数  
   private  $page_array = array();//用来布局分页的数组  
   private  $subPage_link;//各个分页的链接  
   private  $subPage_type;//展现分页的连串  
    /* 
    __construct是SubPages的构造函数,用来在开立类的时候自动运营. 
    @$each_disNums   每页显示的条规数 
    @nums     总条目款项数 
    @current_num     当前被入选的页 
    @sub_pages       每一遍展现的页数 
    @subPage_link    各个分页的链接 
    @subPage_type    显示分页的等级次序 
  
    当@subPage_type=1的时候为经常分页情势 
    example:   共4523条记下,每页展现10条,当前第50%53页 [首页] [上页] [下页] [尾页] 
    当@subPage_type=2的时候为卓绝分页样式 
    example:   当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页] 
    */ 
   function __construct($each_disNums,$nums,$current_page,$sub_pages,$subPage_link,$subPage_type){  
    $this->each_disNums=intval($each_disNums);
    $nums = $nums==0 ? 1: $nums;
    $this->nums=intval($nums);
    $this->pageNums=ceil($nums/$each_disNums);
    $this->current_page=intval($current_page);
    $this->current_page=  $this->current_page<=0 ? 1: $this->current_page; 
    $this->current_page= $this->current_page > $this->pageNums ? 1 : $this->current_page;
    $this->sub_pages=intval($sub_pages);  
    $this->subPage_link=$subPage_link;   
    $this->show_SubPages($subPage_type);   
    //echo $this->pageNums."--".$this->sub_pages;  
   }  
  
  
   /* 
  __destruct析构函数,当类不在使用的时候调用,该函数用来刑释财富。 
    */ 
   function __destruct(){  
  unset($each_disNums);  
  unset($nums);  
  unset($current_page);  
  unset($sub_pages);  
  unset($pageNums);  
  unset($page_array);  
  unset($subPage_link);  
  unset($subPage_type);  
    }  
  
   /* 
  show_SubPages函数用在构造函数里面。並且用来判断展现怎么体统的分页   
    */ 
   function show_SubPages($subPage_type){  
  if($subPage_type == 1){  
  $this->subPageCss1();  
  }elseif ($subPage_type == 2){  
  $this->subPageCss2();  
  }  
    }  
  
  
   /* 
  用来给创立分页的数组开首化的函数。 
    */ 
   function initArray(){  
  for($i=0;$i<$this->sub_pages;$i++){  
  $this->page_array[$i]=$i;  
  }  
  return $this->page_array;  
    }  
  
  
   /* 
  construct_num_Page该函数使用来布局展现的条约 
  即使:[1][2][3][4][5][6][7][8][9][10] 
    */ 
   function construct_num_Page(){  
  if($this->pageNums < $this->sub_pages){  
  $current_array=array();  
   for($i=0;$i<$this->pageNums;$i++){   
   $current_array[$i]=$i+1;  
   }  
  }else{  
  $current_array=$this->initArray();  
   if($this->current_page <= 3){  
    for($i=0;$i<count($current_array);$i++){  
    $current_array[$i]=$i+1;  
    }  
   }elseif ($this->current_page <= $this->pageNums && $this->current_page > $this->pageNums - $this->sub_pages + 1 ){  
    for($i=0;$i<count($current_array);$i++){  
    $current_array[$i]=($this->pageNums)-($this->sub_pages)+1+$i;  
    }  
   }else{  
    for($i=0;$i<count($current_array);$i++){  
    $current_array[$i]=$this->current_page-2+$i;  
    }  
   }  
  }  
   
  return $current_array;  
    }  
  
   /* 
    构造普通情势的分页 
    共4523条记下,每页呈现10条,当前第55%53页 [首页] [上页] [下页] [尾页] 
    */ 
   function subPageCss1(){  
    $subPageCss1Str="";  
    $subPageCss1Str.="共".$this->nums."条记录,";  
    $subPageCss1Str.="每页展现".$this->each_disNums."条,";  
    $subPageCss1Str.="当前第".$this->current_page."/".$this->pageNums."页 ";  
  if($this->current_page > 1){  
  $firstPageUrl=$this->subPage_link."1";  
  $prewPageUrl=$this->subPage_link.($this->current_page-1);  
  $subPageCss1Str.="[<a href='$firstPageUrl'>首页</a>] ";  
  $subPageCss1Str.="[<a href='$prewPageUrl'>上一页</a>] ";  
  }else {  
  $subPageCss1Str.="[首页] ";  
  $subPageCss1Str.="[上一页] ";  
  }  
   
  if($this->current_page < $this->pageNums){  
  $lastPageUrl=$this->subPage_link.$this->pageNums;  
  $nextPageUrl=$this->subPage_link.($this->current_page+1);  
  $subPageCss1Str.=" [<a href='$nextPageUrl'>下一页</a>] ";  
  $subPageCss1Str.="[<a href='$lastPageUrl'>尾页</a>] ";  
  }else {  
  $subPageCss1Str.="[下一页] ";  
  $subPageCss1Str.="[尾页] ";  
  }  
   
  return $subPageCss1Str;  
   
    }  
  
  
   /* 
    构造优秀格局的分页 
    当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页] 
    */ 
   function subPageCss2(){  
    $subPageCss2Str="";  
    $subPageCss2Str.="当前第<span style=color:red;>".$this->current_page."</span>/".$this->pageNums."页 ";  
   
   
  if($this->current_page > 1){  
  $firstPageUrl=$this->subPage_link."1";  
  $prewPageUrl=$this->subPage_link.($this->current_page-1);  
  $subPageCss2Str.="<a href='$firstPageUrl'>首页</a> ";  
  $subPageCss2Str.="<a href='$prewPageUrl'><<</a>";  
  }else {
  $subPageCss2Str.="<span class=disabled>首页</span>";
  $subPageCss2Str.="<span class=disabled><<</span>";
  }  
   
    $a=$this->construct_num_Page();  
  for($i=0;$i<count($a);$i++){  
  $s=$a[$i];  
   if($s == $this->current_page ){  
   $subPageCss2Str.="<span style='color:red;font-weight:bold;'>".$s."</span>";  
   }else{  
   $url=$this->subPage_link.$s;  
   $subPageCss2Str.="<span class=current><a href='$url'>".$s."</a></span>";  
   }  
  }   
  if($this->current_page < $this->pageNums){  
  $lastPageUrl=$this->subPage_link.$this->pageNums;  
  $nextPageUrl=$this->subPage_link.($this->current_page+1);  
  $subPageCss2Str.=" <a href='$nextPageUrl'>>></a> ";  
  $subPageCss2Str.="<a href='$lastPageUrl'>尾页</a> ";  
  }else {
  $subPageCss2Str.="<span class=disabled>>></span>";
  $subPageCss2Str.="<span class=disabled>尾页</span>";
  }    
  return $subPageCss2Str;  
    }  
 }  
?>  

有了那多少个参数就足以很有益的写出分页程序,我们以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
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_金沙js333娱乐场 ,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);

切实到每一页的显示内容能够通过剧情截取来促成。举个例子:页容纳500字,小说内容有2200字,那么当页面传递page=2时理应出示第501至1000之内的内容。

            }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;
    }

这种办法轻便,但出示时或者会遇见麻烦,作品内容平常伴有HTML标签,实行内容切割时落到实处HTML标签的关闭有早晚难度,假若那个专门的工作没做好,那么分页后的效劳显著也是不好的。  

    /***
     * 创立分页控件
    * @param
    * @return String
    */
    public function echoPageAsDiv(){
        $pageList = $this->generatePageList();
       
        $pageString ="<div class='pagination'><div class='page-bottom'>";
   
        if(!empty($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

大致理念:在编写小说内容时往内容之中插入分页符(如:<hr class="page">),在文章显示时对文章内容实行剪切,每一部分代表二个页的剧情,通过传递参数调控显示第几页。

 代码如下

这种措施比较人性化,究竟通过人工调整出来的分页截取的原委更符全大家的构思,何况能够明确水平上防止HTML标签不闭合的情状。

<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>

分类
PHP分页分为列表分页和剧情分页,不管是列表分页还是内容分页,基本原理是同一的,将数据分批发送到客商端。

应用情势

pager.class.php
那是三个简易的PHP分页展现类,如今支持两种分页形式。一种是最简便的经常性分页格局[首页] [上页] [下页] [尾页]形式,另一种是精华分页情势,即:[1][2][3][4][5][6][7][8][9][10][下一页][尾页]。  

 代码如下

选用办法

$pageNo = $_GET['pageNo'];
        if(empty($pageNo)){
            $pageNo = 1;
        }
        //分页数据
        $pageData = News::getNewsPage($pageNo,$pageSize);
       //取得总行数
        $count = News::getNewsCount();
        //创造分页器
        $p = new PageView($count['0']['TOTAL'],$pageSize,$pageNo,$pageData);
     //生成页码
$pageViewString = $p->echoPageAsDiv();

 代码如下

 

require_once 'pager.class.php';
$pager = new pager($totalPage,$currentPage);  // $pager对象
echo $pager->showpager();       // 输出分页

上边再介绍三个分页类

此分页展现类的构造函数
/*
@total_page     总页数
@current_num    当前页
@sub_pages      每趟展现的页数
@subPage_link   各类分页的链接
@subPage_type  分页模式

 代码如下

当@subPage_type=1的时候为常见分页格局
如: 共4523条记下,每页展现10条,当前第三分之一53页 [首页] [上页] [下页] [尾页]
当@subPage_type=2的时候为非凡分页样式
如: 当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
*/

<?php  
class SubPages{  
     
   private  $each_disNums;//每页展现的条规数  
  private  $nums;//总条款数  
  private  $current_page;//当前被选中的页  
  private  $sub_pages;//每一次彰显的页数  
  private  $pageNums;//总页数  
  private  $page_array = array();//用来布局分页的数组  
  private  $subPage_link;//每一个分页的链接  
  private  $subPage_type;//展现分页的连串  
   /* 
   __construct是SubPages的构造函数,用来在开立类的时候自动运维. 
   @$each_disNums   每页呈现的条目款项数 
   @nums     总条目款项数 
   @current_num     当前被选中的页 
   @sub_pages       每一次彰显的页数 
   @subPage_link    每种分页的链接 
   @subPage_type    展现分页的品种 
    
   当@subPage_type=1的时候为经常分页情势 
         example:   共4523条记下,每页突显10条,当前第十分二53页 [首页] [上页] [下页] [尾页] 
         当@subPage_type=2的时候为杰出分页样式 
         example:   当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页] 
   */ 
  function __construct($each_disNums,$nums,$current_page,$sub_pages,$subPage_link,$subPage_type){  
   $this->each_disNums=intval($each_disNums);  
   $this->nums=intval($nums);  
    if(!$current_page){  
    $this->current_page=1;  
    }else{  
    $this->current_page=intval($current_page);  
    }  
   $this->sub_pages=intval($sub_pages);  
   $this->pageNums=ceil($nums/$each_disNums);  
   $this->subPage_link=$subPage_link;   
   $this->show_SubPages($subPage_type);   
   //echo $this->pageNums."--".$this->sub_pages;  
  }  
     
     
  /* 
    __destruct析构函数,当类不在使用的时候调用,该函数用来释放能源。 
   */ 
  function __destruct(){  
    unset($each_disNums);  
    unset($nums);  
    unset($current_page);  
    unset($sub_pages);  
    unset($pageNums);  
    unset($page_array);  
    unset($subPage_link);  
    unset($subPage_type);  
   }  
     
  /* 
    show_SubPages函数用在构造函数里面。况兼用来判定显示怎么体统的分页   
   */ 
  function show_SubPages($subPage_type){  
    if($subPage_type == 1){  
    $this->subPageCss1();  
    }elseif ($subPage_type == 2){  
    $this->subPageCss2();  
    }  
   }  
     
     
  /* 
    用来给构造建设分页的数组起初化的函数。 
   */ 
  function initArray(){  
    for($i=0;$i<$this->sub_pages;$i++){  
    $this->page_array[$i]=$i;  
    }  
    return $this->page_array;  
   }  
     
     
  /* 
    construct_num_Page该函数使用来组织突显的条目款项 
    即使:[1][2][3][4][5][6][7][8][9][10] 
   */ 
  function construct_num_Page(){  
    if($this->pageNums < $this->sub_pages){  
    $current_array=array();  
     for($i=0;$i<$this->pageNums;$i++){   
     $current_array[$i]=$i+1;  
     }  
    }else{  
    $current_array=$this->initArray();  
     if($this->current_page <= 3){  
      for($i=0;$i<count($current_array);$i++){  
      $current_array[$i]=$i+1;  
      }  
     }elseif ($this->current_page <= $this->pageNums && $this->current_page > $this->pageNums - $this->sub_pages + 1 ){  
      for($i=0;$i<count($current_array);$i++){  
      $current_array[$i]=($this->pageNums)-($this->sub_pages)+1+$i;  
      }  
     }else{  
      for($i=0;$i<count($current_array);$i++){  
      $current_array[$i]=$this->current_page-2+$i;  
      }  
     }  
    }  
      
    return $current_array;  
   }  
     
  /* 
   构造普通模式的分页 
   共4523条记下,每页呈现10条,当前第59%53页 [首页] [上页] [下页] [尾页] 
   */ 
  function subPageCss1(){  
   $subPageCss1Str="";  
   $subPageCss1Str.="共".$this->nums."条记录,";  
   $subPageCss1Str.="每页展现".$this->each_disNums."条,";  
   $subPageCss1Str.="当前第".$this->current_page."/".$this->pageNums."页 ";  
    if($this->current_page > 1){  
    $firstPageUrl=$this->subPage_link."1";  
    $prewPageUrl=$this->subPage_link.($this->current_page-1);  
    $subPageCss1Str.="[<a href='$firstPageUrl'>首页</a>] ";  
    $subPageCss1Str.="[<a href='$prewPageUrl'>上一页</a>] ";  
    }else {  
    $subPageCss1Str.="[首页] ";  
    $subPageCss1Str.="[上一页] ";  
    }  
      
    if($this->current_page < $this->pageNums){  
    $lastPageUrl=$this->subPage_link.$this->pageNums;  
    $nextPageUrl=$this->subPage_link.($this->current_page+1);  
    $subPageCss1Str.=" [<a href='$nextPageUrl'>下一页</a>] ";  
    $subPageCss1Str.="[<a href='$lastPageUrl'>尾页</a>] ";  
    }else {  
    $subPageCss1Str.="[下一页] ";  
    $subPageCss1Str.="[尾页] ";  
    }  
      
    echo $subPageCss1Str;  
      
   }  
     
     
  /* 
   构造杰出方式的分页 
   当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页] 
   */ 
  function subPageCss2(){  
   $subPageCss2Str="";  
   $subPageCss2Str.="当前第".$this->current_page."/".$this->pageNums."页 ";  
      
      
    if($this->current_page > 1){  
    $firstPageUrl=$this->subPage_link."1";  
    $prewPageUrl=$this->subPage_link.($this->current_page-1);  
    $subPageCss2Str.="[<a href='$firstPageUrl'>首页</a>] ";  
    $subPageCss2Str.="[<a href='$prewPageUrl'>上一页</a>] ";  
    }else {  
    $subPageCss2Str.="[首页] ";  
    $subPageCss2Str.="[上一页] ";  
    }  
      
   $a=$this->construct_num_Page();  
    for($i=0;$i<count($a);$i++){  
    $s=$a[$i];  
     if($s == $this->current_page ){  
     $subPageCss2Str.="[<span style='color:red;font-weight:bold;'>".$s."</span>]";  
     }else{  
     $url=$this->subPage_link.$s;  
     $subPageCss2Str.="[<a href='$url'>".$s."</a>]";  
     }  
    }  
      
    if($this->current_page < $this->pageNums){  
    $lastPageUrl=$this->subPage_link.$this->pageNums;  
    $nextPageUrl=$this->subPage_link.($this->current_page+1);  
    $subPageCss2Str.=" [<a href='$nextPageUrl'>下一页</a>] ";  
    $subPageCss2Str.="[<a href='$lastPageUrl'>尾页</a>] ";  
    }else {  
    $subPageCss2Str.="[下一页] ";  
    $subPageCss2Str.="[尾页] ";  
    }  
    echo $subPageCss2Str;  
   }  
}  
?>

 代码如下

调用方法

pager($total_page,$current_page,$sub_pages=10,$subPage_link='',$subPage_type=2)

 代码如下

上述说的PHP分页的二种等级次序(列表分页和剧情分页),相信列表分页对大家并不不熟悉,对于剧情分页,常用的办法是以分页符的款式(举个例子:<hr class="pager">)将内容分割成多段,求出总页数,用当下页码去取得分页突显列表。

<?php  
require_once("SubPages.php");  
//每页呈现的条数  
  $page_size=20;  
//总条约数  
  $nums=1024;  
//每一次显示的页数  
  $sub_pages=10;  
//得到当前是第几页  
  $pageCurrent=$_GET["p"];  
  //if(!$pageCurrent) $pageCurrent=1;  
     
  $subPages=new SubPages($page_size,$nums,$pageCurrent,$sub_pages,"test.php?p=",2);  
?>

 代码如下

<?php
/**
 * 示例:
 * <?php
 * require_once("pager.class.php");
 * $subPages=new pager($totalPage,$currentPage);
 * echo $subPages->showpager();
 * ?>
 * */
class pager{

 var $each_disNums;//每页呈现的条目款项数
 var $nums;//总条目款项数
 var $current_page;//当前被入选的页
 var $sub_pages;//每一次呈现的页数
 var $pageNums;//总页数
 var $page_array = array();//用来组织分页的数组
 var $subPage_link;//每一种分页的链接
 var $subPage_type;//呈现分页的门类
 var $_lang = array(
  'index_page' => '首页',
  'pre_page' => '上一页',
  'next_page' => '下一页',
  'last_page' => '尾页',
  'current_page' => '当前页:',
  'total_page' => '总页数:',
  'current_show' => '当前展现:',
  'total_record' => '总记录数:'
 );
 /*
 __construct是SubPages的构造函数,用来在成立类的时候自动运营.
 @total_page    总页数
 @current_num    当前被入选的页
 @sub_pages      每回显示的页数
 @subPage_link   每一种分页的链接
 @subPage_type   展现分页的连串
 
 当@subPage_type=1的时候 www.111cn.net 为普通分页格局
 example: 共4523条记下,每页显示10条,当前第四分之二53页 [首页] [上页] [下页] [尾页]
 当@subPage_type=2的时候为优异分页样式
 example: 当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
 */
 function __construct($total_page,$current_page,$sub_pages=10,$subPage_link='',$subPage_type=2){
  $this->pager($total_page,$current_page,$sub_pages,$subPage_link,$subPage_type);
 }
 
 function pager($total_page,$current_page,$sub_pages=10,$subPage_link='',$subPage_type=2){
  if(!$current_page){
   $this->current_page=1;
  }else{
   $this->current_page=intval($current_page);
  }
  $this->sub_pages=intval($sub_pages);
  $this->pageNums=ceil($total_page);
  if($subPage_link){
   if(strpos($subPage_link,'?page=') === false AND strpos($subPage_link,'&page=') === false){
    $subPage_link .= (strpos($subPage_link,'?') === false ? '?' : '&') . 'page=';
   }
  }
  $this->subPage_link=$subPage_link ? $subPage_link : $_SERVER['PHP_SELF'] . '?page=';
  $this->subPage_type = $subPage_type;
 }
 
 /*
    show_SubPages函数用在构造函数里面。而且用来判定展现如何子的分页
 */
 function showpager(){
  if($this->subPage_type == 1){
   return $this->pagelist1();
  }elseif ($this->subPage_type == 2){
   return $this->pagelist2();
  }
 }
 
 
 /*
    用来给建设构造分页的数组初叶化的函数。
 */
 function initArray(){
  for($i=0;$i<$this->sub_pages;$i++){
   $this->page_array[$i]=$i;
  }
  return $this->page_array;
 }
 
 
 /*
    construct_num_Page该函数使用来组织显示的条规
    即使:[1][2][3][4][5][6][7][8][9][10]
 */
 function construct_num_Page(){
  if($this->pageNums < $this->sub_pages){
   $current_array=array();
   for($i=0;$i<$this->pageNums;$i++){
    $current_array[$i]=$i+1;
   }
  }else{
   $current_array=$this->initArray();
   if($this->current_page <= 3){
    for($i=0;$i<count($current_array);$i++){
     $current_array[$i]=$i+1;
    }
   }elseif ($this->current_page <= $this->pageNums && $this->current_page > $this->pageNums - $this->sub_pages + 1 ){
    for($i=0;$i<count($current_array);$i++){
     $current_array[$i]=($this->pageNums)-($this->sub_pages)+1+$i;
    }
   }else{
    for($i=0;$i<count($current_array);$i++){
     $current_array[$i]=$this->current_page-2+$i;
    }
   }
  }
  
  return $current_array;
 }
 
 /*
 构造普通方式的分页
 共4523条记下,每页展现10条,当前第三分之二53页 [首页] [上页] [下页] [尾页]
 */
 function pagelist1(){
  $subPageCss1Str="";
  $subPageCss1Str.= $this->_lang['current_page'] . $this->current_page." / " .$this->pageNums."   ";
  if($this->current_page > 1){
   $firstPageUrl=$this->subPage_link."1";
   $prewPageUrl=$this->subPage_link.($this->current_page-1);
   $subPageCss1Str.="<a href='$firstPageUrl'>{$this->_lang['index_page']}</a> ";
   $subPageCss1Str.="<a href='$prewPageUrl'>{$this->_lang['pre_page']}</a> ";
  }else {
   $subPageCss1Str.="{$this->_lang['index_page']} ";
   $subPageCss1Str.="{$this->_lang['pre_page']} ";
  }
  
  if($this->current_page < $this->pageNums){
   $lastPageUrl=$this->subPage_link.$this->pageNums;
   $nextPageUrl=$this->subPage_link.($this->current_page+1);
   $subPageCss1Str.=" <a href='$nextPageUrl'>{$this->_lang['next_page']}</a> ";
   $subPageCss1Str.="<a href='$lastPageUrl'>{$this->_lang['last_page']}</a> ";
  }else {
   $subPageCss1Str.="{$this->_lang['next_page']} ";
   $subPageCss1Str.="{$this->_lang['last_page']} ";
  }
  
  return $subPageCss1Str;
 }
 
 
 /*
 构造精华情势的www.111cn.net分页
 当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
 */
 function pagelist2(){
  $subPageCss2Str="";
  $subPageCss2Str.=$this->_lang['current_page'] . $this->current_page."/" . $this->pageNums." ";
  
  if($this->current_page > 1){
   $firstPageUrl=$this->subPage_link."1";
   $prewPageUrl=$this->subPage_link.($this->current_page-1);
   $subPageCss2Str.="<a href='$firstPageUrl'>{$this->_lang['index_page']}</a> ";
   $subPageCss2Str.="<a href='$prewPageUrl'>{$this->_lang['pre_page']}</a> ";
  }else {
   $subPageCss2Str.="{$this->_lang['index_page']} ";
   $subPageCss2Str.="{$this->_lang['pre_page']} ";
  }
  
  $a=$this->construct_num_Page();
  for($i=0;$i<count($a);$i++){
   $s=$a[$i];
   if($s == $this->current_page ){
     $subPageCss2Str.="[<span style='color:red;font-weight:bold;'>".$s."</span>]";
   }else{
     $url=$this->subPage_link.$s;
     $subPageCss2Str.="[<a href='$url'>".$s."</a>]";
   }
  }
  
  if($this->current_page < $this->pageNums){
   $lastPageUrl=$this->subPage_link.$this->pageNums;
   $nextPageUrl=$this->subPage_link.($this->current_page+1);
   $subPageCss2Str.=" <a href='$nextPageUrl'>{$this->_lang['next_page']}</a> ";
   $subPageCss2Str.="<a href='$lastPageUrl'>{$this->_lang['last_page']}</a> ";
  }else {
   $subPageCss2Str.="{$this->_lang['next_page']} ";
   $subPageCss2Str.="{$this->_lang['last_page']} ";
  }
  return $subPageCss2Str;
 }
 
 
 /*
    __destruct析构函数,当类不在使用的时候调用,该函数用来释放财富。
 */
 function __destruct(){
  unset($each_disNums);
  unset($nums);
  unset($current_page);
  unset($sub_pages);
  unset($pageNums);
  unset($page_array);
  unset($subPage_link);
  unset($subPage_type);
 }
}
?>

好了大家假若把它保存在二个文书,在其他地点要采纳时从来调用就足以了,相当好用的三个内容或记录分页类函数哦,那也究竟二个入门级其余php教程吧。

本文由js333发布于计算机互联网,转载请注明出处:完美php文章分页类,二个php分页程序代码

关键词:

上一篇:金沙js333娱乐场文件夹与文件移动类,批量创建文

下一篇:没有了