PHP 分页类笔记
<?php /** * * 分页类 * Date: 2016/11/13 * Time: 14:52 */ class Page{ private $p; //当前页 private $total; //总条数 private $startPage=0; //开始页数 private $pageSize; //分页条数 private $limit; //分页sql字符 private $totalPage; //总页数 private $pageOffset; //页码的偏移量 public function __construct($total,$pageSize){ $this->total=$total ? $total : 1; //初始化总页数 $this->pageSize=$pageSize; //初始化分页条数 $this->p=$this->pageCheck(); //初始化单前页 $this->pageOffset=2; //初始化偏移量 $this->startPage=($this->pageCheck()-1)*$this->pageSize; $this->limit=" LIMIT $this->startPage,$this->pageSize"; } //取得保护对象的值 public function __get($key){ return $this->$key; } //获取当前页码 public function pageCheck(){ $_GET['p']=isset($_GET['p'])?intval($_GET['p']):1; $this->totalPage=ceil($this->total / $this->pageSize); //计算总页数 if(!$_GET['p'] || $_GET['p']<0){ return 1; } if($_GET['p'] > $this->totalPage){ return $this->totalPage; } return $_GET['p']; } //前台分页 public function pages(){ $pages=''; $pages.='<ul class="pager">'; $pages.=$this->firstPage(); $pages.=$this->prevPage(); $pages.=$this->numPage(); $pages.=$this->nextPage(); $pages.=$this->lastPage(); $pages.='</ul>'; return $pages; } //首页 private function firstPage(){ if($this->p-1 < 1){ return '<li><a href="javascript:;" class="disabled">首页</a></li>'; }else{ return '<li><a href="'.$this->setUrl().'">首页</a></li>'; } } //上一页 private function prevPage(){ if($this->p-1 < 1){ return '<li><a href="javascript:;" class="disabled">上一页</a></li>'; }else{ return '<li><a href="'.$this->setUrl().'&p='.($this->p-1).'">上一页</a></li>'; } } //下一页 private function nextPage(){ if(($this->p+1) > $this->totalPage){ return '<li><a href="javascript:;" class="disabled">下一页</a></li>'; }else { return '<li><a href="' . $this->setUrl() . '&p=' . ($this->p + 1) . '">下一页</a></li>'; } } //最后一页 private function lastPage(){ if(($this->p+1) > $this->totalPage){ return '<li><a href="javascript:;" class="disabled">尾页</a></li>'; }else{ return '<li><a href="'.$this->setUrl().'&p='.$this->totalPage.'">尾页</a></li>'; } } //数字分页 private function numPage(){ $numPage=''; if($this->p-$this->pageOffset>1){ //如果当前页间偏移量大于1的时候显示。。。 $numPage.='<li><a href="javascript:;">..</a></li>'; } for($i=$this->pageOffset;$i>=1;$i--){ $page=$this->p-$i; if($page<1) continue; $numPage.='<li><a href="'.$this->setUrl().'&p='.$page.'">'.$page.'</a></li>'; } $numPage.='<li><a class="active" href="javascript:;">'.$this->p.'</a></li>'; for($i=1;$i<=$this->pageOffset;$i++){ $page=$this->p+$i; //当前页的下一页 if($page > $this->totalPage) break; //如果下一页大于总页数,就跳出不执行 $numPage.='<li><a href="'.$this->setUrl().'&p='.$page.'">'.$page.'</a></li>'; } if($this->p+$this->pageOffset<$this->totalPage && $this->showPage<$this->totalPage){ //如果当前页+偏移量 小于 总页数的时候显示 ... $numPage.='<li><a href="javascript:;">..</a></li>'; } return $numPage; } //获取当前url,去掉P分页参数 public function setUrl(){ $url=parse_url($_SERVER['REQUEST_URI']); if($url['query']){ parse_str($url['query'],$arr); unset($arr['p']); foreach($arr as $k =>$v){ $arr2[]=$k.'='.$v; } if(is_array($arr2)){ $urlStr=implode('&',$arr2); } } return $url['path'].'?'.$urlStr; } }
Dcr163的博客
http://dcr163.cn/109.html(转载时请注明本文出处及文章链接)