Home  >  Article  >  Backend Development  >  A simple and easy-to-use PHP paging class_PHP tutorial

A simple and easy-to-use PHP paging class_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:25:44765browse

Copy code The code is as follows:

class Page {
    // 分页栏每页显示的页数
    public $rollPage = 6;
    // 页数跳转时要带的参数
    public $parameter  ;
    // 默认列表每页显示行数
    public $listRows = 20;
    // 起始行数
    public $firstRow ;
    // 分页总页面数
    protected $totalPages  ;
    // 总行数
    protected $totalRows  ;
    // 当前页数
    protected $nowPage    ;
    // 分页的栏的总页数
    protected $coolPages   ;
    // 分页显示定制
    protected $config  = array(
     'redirect'=>false,
     'header'=>'条记录',
     'prev'=>'上一页',
     'next'=>'下一页',
     'first'=>'1',
     'last'=>'最后一页',
     'theme'=>'
%upPage% %first%  %prePage%  %linkPage%  %nextPage% %downPage%
共  %totalPage% 页');
    // 默认分页变量名
    protected $varPage;

    /**
     +----------------------------------------------------------
     * 架构函数
     +----------------------------------------------------------
     * @access public
     +----------------------------------------------------------
     * @param array $totalRows  总的记录数
     * @param array $listRows  每页显示记录数
     * @param array $parameter  分页跳转的参数
     +----------------------------------------------------------
     */
    public function __construct($totalRows,$listRows='',$parameter='') {
        $this->totalRows = $totalRows;
        $this->parameter = $parameter;
        $this->varPage = C('VAR_PAGE') ? C('VAR_PAGE') : 'p' ;
        if(!empty($listRows)) {
            $this->listRows = intval($listRows);
        }
        $this->totalPages = ceil($this->totalRows/$this->listRows);     //总页数
        $this->coolPages  = ceil($this->totalPages/$this->rollPage);
        //$_GET验证
        $this->nowPage = intval($_GET[$this->varPage]);
        $this->nowPage = $this->nowPage > 0 ? $this->nowPage : 1;

        if(!empty($this->totalPages) && $this->nowPage>$this->totalPages) {
            $this->nowPage = $this->totalPages;
        }
        $this->firstRow = $this->listRows*($this->nowPage-1);
    }

    public function setConfig($name,$value) {
        if(isset($this->config[$name])) {
            $this->config[$name]    =   $value;
        }
    }

/**
+------------------------------------------------- ------------
* Display output in pages
+--------------------------- ----------------------------------
* @access public
+-------- --------------------------------------------------
*/
public function show() {

if(0 == $this->totalRows) return '';

// Processing parameters
$p = $this->varPage;
$url = $_SERVER['REQUEST_URI'].(strpos($_SERVER['REQUEST_URI'],'?')?'':"? ").$this->parameter;
        $parse = parse_url($url);
                                          ],$params);
unset($params[$p]);
$url = $parse['path'].'?'.http_build_query($params);
}

                                                                                                                                                                 Start = 1;
$ END = $ This-& GT; TotalPages;
}
Else {
//
if ($ this- & gt; nowPage & lt; = $ this- & gt; rollPage - 1) {
$start = 1;
$end = $this->rollPage;

$islast = true;
}  
el se if ($this- >nowPage > $this->totalPages - $this->rollPage + 1) {
            $start = $this->totalPages - ($this->rollPage - 1);                    end = $this->totalPages;

$isfirst = true;
}
else{
$size = floor($this-& gt;rollPage / 2);

$start = $this->nowPage - $size;
$end = $this->nowPage + $size;

$isfirst = true;
$islast = true;
}
}

//Page up and down string
$upRow = $this->nowPage - 1; $downRow = $this->nowPage + 1;

                                                                                                                isfirst){
$theFirst = "".$this->config['first ']."";
}
if ($islast){
$theEnd = "".$this->config['last']."";
}

if ($ upRow > 0){
             $upPage = "".$this-> config['prev']."";
}

        if ($downRow <= $this->totalPages){
         $downPage = "".$this->config['next']."";
        }

       if($start==3){
         $linkPage .= "2";
        }
        if($start>=4){
         $linkPage .= "2 ...";
        }
        //1 2 3 4 5
        for($i=$start;$i<=$end;$i++){
         if($i!=$this->nowPage){
          $linkPage .= "  ".$i." ";
         }else{
          $linkPage .= " ".$i."";
         }
         if($i==$end){
          if($i<$this->totalRows){
           $linkPage .= " ...";
          }
         }
        }

        $pageStr = str_replace(
            array('%header%','%nowPage%','%totalRow%','%totalPage%','%upPage%','%first%','%prePage%','%linkPage%','%nextPage%','%downPage%','%end%'),
            array($this->config['header'],$this->nowPage,$this->totalRows,$this->totalPages,$upPage,$theFirst,$prePage,$linkPage,$nextPage,$downPage,$theEnd),$this->config['theme']);

        //显示模式  普通false 带跳转ture
        if (!empty($this->config['redirect'])){
         $html = $pageStr;

        }else{
         //传递参数
         if($this->totalPages > 1){
          $redirect = " 到第

";
          if ($params){
           foreach($params as $k => $v){
            $string .= "";
           }
           $redirect = $redirect . $string . '
';
          }else{
           $redirect = $redirect . '
';
          }
         }
         //生成Html字符串
         $html = $pageStr . $redirect;      
        } 
        return $html;
    }

}

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/824939.htmlTechArticleCopy the code as follows: class Page { // The number of pages displayed on each page of the paging bar public $rollPage = 6; //Parameters to be taken when page jumps public $parameter; //The default list displays the number of rows per page...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Adjusting the performance of PHP_PHP tutorialNext article:Adjusting the performance of PHP_PHP tutorial

Related articles

See more