写了个php分页类 功能还算可以 以后慢慢完善 里面有我的注释 分页公式需要熟记。
<?php
/*
分页是我们读取数据库显示内容必须要用到的
所谓分页,也就是将数据库中的结果集人为的分为一段一段来显示
需要参数
当前第几页? GET
每页多少条? pageSize
总记录数? total
公式
(当前页码 -1) * 每页几条 , 每页几条
*/
class Page {
private $total = null;
private $page = null;
private $pageNum = null;
private $pageSize = null;
public $limit = null;
private $url;
private $offset = 3;
public function __construct ($_total,$_pageSize = 10) {
$this->total = $_total;
$this->pageSize = $_pageSize;
$this->pageNum = ceil($this->total / $this->pageSize);
$this->page = $this->getPage();
$this->url = $this->setUrl();
$this->limit = ($this->page-1)*$this->pageSize .",".$this->pageSize;
}
private function getPage () {
$_page = (int)$_GET['page'];
if(empty($_page) || $_page <= 0) return 1;
if($_page > $this->pageNum) return $this->pageNum;
return $_page;
}
public function setUrl () {
$_url = $_SERVER['REQUEST_URI'];
$_url = parse_url($_url);
if(isset($_url['query'])) {
parse_str($_url['query'],$query);
unset($query['page']);
$_url = $_url['path'].'?'.http_build_query($query);
} else {
$_url = $_url['path'];
}
return $_url;
}
//数字分页
private function numPage () {
for($i=$this->offset;$i>=1;$i--) {
$_page = $this->page-$i;
if ($_page < 1) continue;
$numPage .= '[<a href="'.$this->url.'&page='.($this->page-$i).'">'.($this->page-$i).'</a>]';
}
$numPage .= '[<a href="'.$this->url.'&page='.($this->page).'">'.($this->page).'</a>]';
for($i=1;$i<=$this->offset;$i++) {
$_page = $this->page +$i;
if ($_page > $this->pageNum) break;
$numPage .= '[<a href="'.$this->url.'&page='.($this->page+$i).'">'.($this->page+$i).'</a>]';
}
return $numPage;
}
//首页
private function first () {
if($this->page > $this->offset+1) {
return '[<a href="'.$this->url.'&page=1">1</a>]...';
}
}
//上一页
private function prev () {
return '<a href="'.$this->url.'&page='.($this->page-1).'">上一页</a>';
}
//下一页
private function next () {
return '<a href="'.$this->url.'&page='.($this->page+1).'">下一页</a>';
}
//尾页
private function last () {
if($this->pageNum - $this->page > $this->offset ) {
return '...[<a href="'.$this->url.'&page='.$this->pageNum.'">'.$this->pageNum.'</a>]';
}
}
public function showPage () {
$data = "";
$data .= $this->first();
$data .= $this->numPage();
$data .= $this->last();
$data .= $this->prev();
$data .= $this->next();
return $data;
}
}
?>
分页样式
过往云烟 2010/06/28