php 分页类

花了一会时间自己写另一个分页,当然也参考了别人的代码,觉得很多都不符合我自己的要求,或则说自己不满意。

分页类,自己可以再进行扩展

mypage.class.php

<?php
/*
created data:2009-06-10
created by: windy
*/
class myPage{
   
    var $currentPage=1; //当前页码
    var $dataArray;   //传递的数组
    var $pagerPageRowNum = 5; //每页有多少数据
    var $pagerRowNum;    //总数据
    var $pagerPage;     //总页数
    var $pageBarNum = 3;//控制记录条的个数。
    var $ajax_action_name='';//AJAX动作名
    var $url="";//url地址头
    var $pageName = "p"; //参数名称
    var $nextPage='>';//下一页
    var $prePage='<';//上一页
    var $firstPage='First';//首页
    var $lastPage='Last';//尾页
    var $isAjax=false;//尾页
    var $formatLeft='[';
    var $formatRight=']';

    public  function __construct($pageArray) {
       
        $dataArray = $pageArray['dataArray'];
        $currentPage = $pageArray['currentPage'];
        $pagerPageRowNum = $pageArray['pagerPageRowNum'];
        $pageBarNum = $pageArray['pageBarNum'];
        $pageName = $pageArray['pageName'];
        $url = $pageArray['url'];
        $isAjax = $pageArray['isAjax'];
        $formatLeft = $pageArray['formatLeft'];
        $formatRight = $pageArray['formatRight'];
        $nextPage = $pageArray['nextPage'];
        $prePage = $pageArray['prePage'];
        $firstPage = $pageArray['firstPage'];
        $lastPage = $pageArray['lastPage'];

        $list = array_values($dataArray);
        $pager = array();

        if($pagerPageRowNum){
            $this->pagerPageRowNum = $pagerPageRowNum;
        }

        if($currentPage){
            $this->currentPage = $currentPage;
           
        }
       
        if($pageName){
            $this->pageName = $pageName;
        }
        if($pageBarNum){
            $this->pageBarNum = $pageBarNum;
        }
        if($isAjax){
            $this->isAjax = $isAjax;
        }

        if($formatLeft){
            $this->formatLeft = $formatLeft;
        }

        if($formatRight){
            $this->formatRight = $formatRight;
        }

        if($firstPage){
            $this->firstPage = $firstPage;
        }

        if($lastPage){
            $this->lastPage = $lastPage;
        }
       
        if($prePage){
            $this->prePage = $prePage;
        }

        if($nextPage){
            $this->nextPage = $nextPage;
        }
       
        if($this->isAjax == true){
            echo '<SCRIPT LANGUAGE="JavaScript">
                    function ajaxSelected(obj){
                            var url = document.URL;
                            var re = re = /[?&]p=[^&]*/;
                            url = url.replace(re, "");
                            if (url.indexOf("?") > -1) {
                                url += "&p=" + obj.value;
                            } else {
                                url += "?p=" + obj.value;
                            }
                            location.href = url;
                    }
                  </SCRIPT>';
        }
        $this->_set_currentPage();
        $this->_set_url($url);
       
        $this->pagerRowNum = count($list);
        $this->pagerPageRowNum = $this->pagerPageRowNum;
        $this->pagerPage = ceil($this->pagerRowNum / $this->pagerPageRowNum );
        if($this->pagerPage < $this->pageBarNum){
            $this->pageBarNum = $this->pagerPage;
        }else{
            $this->pageBarNum = $this->pageBarNum;
        }
   
        $start = ($this->currentPage - 1) * $this->pagerPageRowNum;
        $end = $start + $this->pagerPageRowNum;
        $end = $end > $this->pagerRowNum ? $this->pagerRowNum : $end;
        $pager = array();
        for ($i = $start; $i < $end; $i++) {
                $pager[] = $list[$i];
            }
        $this->dataArray = $pager;
       
       
    }
   
    /**
  * 设置url头地址
  * @param: String $url
  * @return boolean
  */
     function _set_url($url=""){
          if(!empty($url)){
              //手动设置
           $this->url=$url.((stristr($url,'?'))?'&':'?').$this->pageName."=";
          }else{
              //自动获取
               if(empty($_SERVER['QUERY_STRING'])){
                   //不存在QUERY_STRING时
                $this->url=$_SERVER['REQUEST_URI']."?".$this->pageName."=";
               
               }else{
                   //
                    if(stristr($_SERVER['QUERY_STRING'],$this->pageName.'=')){
                        //地址存在页面参数
                         $this->url=str_replace($this->pageName.'='.$this->currentPage,'',$_SERVER['REQUEST_URI']);
                         $last=$this->url[strlen($this->url)-1];
                         if($last=='?'||$last=='&'){
                             $this->url.=$this->pageName."=";
                         }else{
                             $this->url.='&'.$this->pageName."=";
                         }
                    }else{
                            //
                         $this->url=$_SERVER['REQUEST_URI'].'&'.$this->pageName.'=';
                    }//end if  
                }//end if
          }//end if
     }
     /**
      * 设置当前页面
      *
      */
     function _set_currentPage(){

       if(isset($_GET[$this->pageName])){
            //系统获取
           
            $this->currentPage=intval($_GET[$this->pageName]);

       }else{
            //手动设置
            $this->currentPage=intval($currentPage);
       }

     }
    public function show(){
       
        foreach($this->dataArray as $key=>$value){
            echo '$key: '.$key.'=>$value: '.$value."<br/>";
        }
    }

    public function showPagerList($mode){

        $pagesList = "";
       
        if($this->pagerRowNum == 0){
            return "";
        }
        switch($mode){
            case 1:
                //基础模式
                $pagesList .= "Pages:";
                $pagesList .= $this->nowbar();
               
                break;
            case 2:
                //基础模式 + AJAX
                $pagesList .= "Pages:";
                $pagesList .= $this->nowbar(). $this->ajaxSelect();
                break;
            case 3:
                //普通模式无首页末页
                $pagesList .= "Pages:";
                $pagesList .= $this->prePage() . $this->nowbar() . $$this->nextPage() ;
                break;
            case 4:
                //全能模式除ajax
                $pagesList .= "Pages:";
                $pagesList .= $this->firstPage() . $this->prePage() . $this->nowbar() . $this->nextPage() . $this->lastPage() ;
                break;
            default:
                //全能模式
                $pagesList .= "Pages:";
                $pagesList .= $this->firstPage() . $this->prePage() . $this->nowbar() . $this->nextPage() . $this->lastPage() . $this->ajaxSelect();
                break;
        }
       
        return $pagesList;

    }
    public function _get_text($str){

        return $this->formatLeft . $str . $this->formatRight;
    }
    public function nowbar(){
       $plus=ceil($this->pageBarNum/2);
       if($this->pageBarNum-$plus+$this->currentPage>$this->pagerPage){
            $plus= $this->pageBarNum-$this->pagerPage+$this->currentPage;
       }
       $begin=$this->currentPage-$plus+1;
       $begin=($begin>=1)?$begin:1;
        for($i=$begin;$i<$begin+$this->pageBarNum;$i++){
            if($i == $this->currentPage){
                $pagesList .= $this->_get_text($i)."/n";
            }else{
                $pagesList .= $this->_get_text($this->getLinkUrl($i,$i))."/n";
            }
           
        }

        return $pagesList;
    }

    public function getLinkUrl($i,$word){
        $link = "";
        $link .= '<a href="'.$this->url.$i.'">'.$word.'</a>';
        return $link;
    }

    public function firstPage(){
        $firstPage = "";
        if($this->currentPage == 1){
            $firstPage .= $this->firstPage."/n";
        }else{
            $firstPage .= $this->getLinkUrl(1,$this->firstPage)."/n";
        }
        return $firstPage;
    }

    public function lastPage(){
        $firstPage = "";
        if($this->currentPage == $this->pagerPage){
            $firstPage .= $this->lastPage."/n";
        }else{
            $firstPage .= $this->getLinkUrl($this->pagerPage,$this->lastPage)."/n";
        }
        return $firstPage;
    }

    public function prePage(){
        $prePage = "";
        if($this->currentPage == 1){
            $prePage .= $this->prePage."/n";
        }else{
            $prePage .= $this->getLinkUrl(($this->currentPage-1),$this->prePage)."/n";
        }
        return $prePage;
    }

    public function nextPage(){
        $nextPage = "";
        if($this->currentPage == $this->pagerPage){
            $nextPage .= $this->nextPage."/n";
        }else{
            $nextPage .= $this->getLinkUrl(($this->currentPage+1),$this->nextPage)."/n";
        }
        return $nextPage;
    }

    public function ajaxSelect(){
        $return='<select name="PB_Page_Select" onchange="ajaxSelected(this)">';
        for($i=1;$i<=$this->pagerPage;$i++){
            if($i==$this->currentPage){
                $return.='<option value="'.$i.'" selected>'.$i.'</option>';
            }else{
                $return.='<option value="'.$i.'">'.$i.'</option>';
            }
        }
        unset($i);
        $return.='</select>';
        return 'Go ' . $return ;
    }



}

?>

调用页面:

mypage.php

<?php
require_once('mypage.class.php');
$array = range(0,22);
$pageArray = array('dataArray'=>$array,'isAjax'=>true,'pageBarNum'=>'100','prePage'=>'上一页','nextPage'=>'下一页','firstPage'=>'首页', 'lastPage'=>'末页');
$page = new myPage($pageArray);
echo $page->show();
echo "<br />";
echo $page->showPagerList(0);

?>

可以直接使用的 放在同个目录下,不像有些类,需要修改或有错误。

直接测试

扫描二维码关注公众号,回复: 5868340 查看本文章

猜你喜欢

转载自blog.csdn.net/wccczxm/article/details/4258462