php分页类源码与调用示例

发布时间:2020-05-19编辑:脚本学堂
分享一个php分页类源码,附用调用演示效果图,比较简单的php分页代码,可以设置保持数字分页的量,需要的朋友参考下。

一个简单实用的php分页类代码,代码结构简单,用于php入门级分页代码,供大家学习研究使用。

1,php分页类代码
 

复制代码 代码示例:
<?php  
class Page {  
  private $total;  //总记录  
  private $pagesize;//每页显示多少条  
  private $limit;  //limit  
  private $page;   //当前页码  
  private $pagenum;  //总页码  
  private $url;   //地址  
  private $bothnum;  //两边保持数字分页的量  
 
  //构造方法初始化  
  public function __construct($_total, $_pagesize) {  
 $this->total = $_total ? $_total : 1;  
 $this->pagesize = $_pagesize;  
  $this->pagenum = ceil($this->total / $this->pagesize);  
 $this->page = $this->setPage();  
 $this->limit = "LIMIT ".($this->page-1)*$this->pagesize.",$this->pagesize";
 $this->url = $this->setUrl();  
 $this->bothnum = 2;  
  }  
 
  //拦截器  
  private function __get($_key) {  
 return $this->$_key;  
}  
 
//获取当前页码  
private function setPage() {  
 if (!empty($_GET['page'])) {  
if ($_GET['page'] > 0) {  
   if ($_GET['page'] > $this->pagenum) {  
  return $this->pagenum;  
   } else {  
  return $_GET['page'];  
   }  
} else {  
   return 1;  
}  
 } else {  
return 1;  
 }  
  }
 
//获取地址  
private function setUrl() {  
 $_url = $_SERVER["REQUEST_URI"];  
 $_par = parse_url($_url);  
 if (isset($_par['query'])) {  
parse_str($_par['query'],$_query);  
unset($_query['page']);  
$_url = $_par['path'].'?'.http_build_query($_query);  
 }  
 return $_url;  
  } //数字目录  
  private function pageList() {  
 for ($i=$this->bothnum;$i>=1;$i--) {  
$_page = $this->page-$i;  
if ($_page < 1) continue;  
$_pagelist .= ' <a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a> ';  
 }  
 $_pagelist .= ' <span class="me">'.$this->page.'</span> ';  
 for ($i=1;$i<=$this->bothnum;$i++) {  
$_page = $this->page+$i;  
if ($_page > $this->pagenum) break;  
$_pagelist .= ' <a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a> ';  
 }  
 return $_pagelist;  
  }  
 
  //首页  
  private function first() {  
 if ($this->page > $this->bothnum+1) {  
return ' <a href="'.$this->url.'">1</a> ...';  
 }  
  }  
 
  //上一页  
  private function prev() {  
 if ($this->page == 1) {  
return '<span class="disabled">上一页</span>';  
 }  
 return ' <a href="'.$this->url.'&page='.($this->page-1).'">上一页</a> ';  
  }  
 
  //下一页  
  private function next() {  
 if ($this->page == $this->pagenum) {  
return '<span class="disabled">下一页</span>';  
 }  
 return ' <a href="'.$this->url.'&page='.($this->page+1).'">下一页</a> ';  
  }  
 
  //尾页  
  private function last() {  
 if ($this->pagenum - $this->page > $this->bothnum) {  
return ' ...<a href="'.$this->url.'&page='.$this->pagenum.'">'.$this->pagenum.'</a> ';  
 }  
  }  
 
  //分页信息  
  public function showpage() {  
 $_page .= $this->first();  
 $_page .= $this->pageList();  
 $_page .= $this->last();  
 $_page .= $this->prev();  
 $_page .= $this->next();  
 return $_page;  
  }  
 }  
?>

2,分页类调用:
 

复制代码 代码示例:
<?php  
$_page = new Page($_total,$_pagesize); //$_total 是数据集的总条数,$_pagesize 是每页显示的数量.  
?>