[PHP] 分页 一个简单的php分页类代码 →→→→→进入此内容的聊天室

来自 , 2019-03-30, 写在 PHP, 查看 124 次.
URL http://www.code666.cn/view/494ba9ff
  1. <?php
  2.     class Page {
  3.         private $total; //数据表中总记录数
  4.         private $listRows; //每页显示行数
  5.         private $limit;
  6.         private $uri;
  7.         private $pageNum; //页数
  8.         private $config=array('header'=>"个记录", "prev"=>"上一页", "next"=>"下一页", "first"=>"首 页", "last"=>"尾 页");
  9.         private $listNum=8;
  10.         /*
  11.          * $total
  12.          * $listRows
  13.          */
  14.         public function __construct($total, $listRows=10, $pa=""){
  15.             $this->total=$total;
  16.             $this->listRows=$listRows;
  17.             $this->uri=$this->getUri($pa);
  18.             $this->page=!empty($_GET["page"]) ? $_GET["page"] : 1;
  19.             $this->pageNum=ceil($this->total/$this->listRows);
  20.             $this->limit=$this->setLimit();
  21.         }
  22.  
  23.         private function setLimit(){
  24.             return "Limit ".($this->page-1)*$this->listRows.", {$this->listRows}";
  25.         }
  26.  
  27.         private function getUri($pa){
  28.             $url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?").$pa;
  29.             echo $url;
  30.             $parse=parse_url($url);
  31.  
  32.             if(isset($parse["query"])){
  33.                 parse_str($parse['query'],$params);
  34.                 unset($params["page"]);
  35.                 $url=$parse['path'].'?'.http_build_query($params);
  36.  
  37.             }
  38.  
  39.             return $url;
  40.         }
  41.  
  42.         private function __get($args){
  43.             if($args=="limit")
  44.                 return $this->limit;
  45.             else
  46.                 return null;
  47.         }
  48.  
  49.         private function start(){
  50.             if($this->total==0)
  51.                 return 0;
  52.             else
  53.                 return ($this->page-1)*$this->listRows+1;
  54.         }
  55.  
  56.         private function end(){
  57.             return min($this->page*$this->listRows,$this->total);
  58.         }
  59.  
  60.         private function first(){
  61.             if($this->page==1)
  62.                 $html.='';
  63.             else
  64.                 $html.="  <a href="{$this->uri}&page=1">{$this->config["first"]}</a>  ";
  65.  
  66.             return $html;
  67.         }
  68.  
  69.         private function prev(){
  70.             if($this->page==1)
  71.                 $html.='';
  72.             else
  73.                 $html.="  <a href="{$this->uri}&page='.($this->page-1).'">{$this->config["prev"]}</a>  ";
  74.  
  75.             return $html;
  76.         }
  77.  
  78.         private function pageList(){
  79.             $linkPage="";
  80.  
  81.             $inum=floor($this->listNum/2);
  82.  
  83.             for($i=$inum; $i>=1; $i--){
  84.                 $page=$this->page-$i;
  85.  
  86.                 if($page<1)
  87.                     continue;
  88.  
  89.                 $linkPage.=" <a href="{$this->uri}&page={$page}">{$page}</a> ";
  90.  
  91.             }
  92.  
  93.             $linkPage.=" {$this->page} ";
  94.  
  95.             for($i=1; $i<=$inum; $i++){
  96.                 $page=$this->page+$i;
  97.                 if($page<=$this->pageNum)
  98.                     $linkPage.=" <a href="{$this->uri}&page={$page}">{$page}</a> ";
  99.                 else
  100.                     break;
  101.             }
  102.  
  103.             return $linkPage;
  104.         }
  105.  
  106.         private function next(){
  107.             if($this->page==$this->pageNum)
  108.                 $html.='';
  109.             else
  110.                 $html.="  <a href="{$this->uri}&page='.($this->page+1).'">{$this->config["next"]}</a>  ";
  111.  
  112.             return $html;
  113.         }
  114.  
  115.         private function last(){
  116.             if($this->page==$this->pageNum)
  117.                 $html.='';
  118.             else
  119.                 $html.="  <a href="{$this->uri}&page='.($this->pageNum).'">{$this->config["last"]}</a>  ";
  120.  
  121.             return $html;
  122.         }
  123.  
  124.         private function goPage(){
  125.             return '  <input style="WIDTH: 25px" value="'.$this->page.'"><input value="GO" type="button">  ';
  126.         }
  127.         function fpage($display=array(0,1,2,3,4,5,6,7,8)){
  128.             $html[0]="  共有<strong>{$this->total}</strong>{$this->config["header"]}  ";
  129.             $html[1]="  每页显示<strong>".($this->end()-$this->start()+1)."</strong>条,本页<strong>{$this->start()}-{$this->end()}</strong>条  ";
  130.             $html[2]="  <strong>{$this->page}/{$this->pageNum}</strong>页  ";
  131.  
  132.             $html[3]=$this->first();
  133.             $html[4]=$this->prev();
  134.             $html[5]=$this->pageList();
  135.             $html[6]=$this->next();
  136.             $html[7]=$this->last();
  137.             $html[8]=$this->goPage();
  138.             $fpage='';
  139.             foreach($display as $index){
  140.                 $fpage.=$html[$index];
  141.             }
  142.  
  143.             return $fpage;
  144.  
  145.         }
  146.  
  147.     }
  148.  
  149.  

回复 "分页 一个简单的php分页类代码"

这儿你可以回复上面这条便签

captcha