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的博客
https://www.dcr163.cn/109.html(转载时请注明本文出处及文章链接)