<?php
/*
- Copyright (c) 2013
- 数据分页类
$Id: page.class.php 1 2013-04-24 19:54:30 DuZeFang $
*/
class Page
{
private $total; //数据总数
private $pageSize = 8; //一页多少条数据
private $pageCurrent; //页数
private $page; //当前页码
private $nextPage; //下一页
private $prevPage; //上一页
private $url; //跳转url
private $pageFirst = 1; //首页
private $pageTail; //尾页
private $offset; //偏移量
private $startPage; //序列字号开始 1 2 3 4 5 6 7 8 9 10
private $endPage; //序列字号结束 1 2 3 4 5 6 7 8 9 10public function __construct($total,$pageSize = 8){
$this->total = $total; $this->pageSize = $pageSize; $this->pageCurrent = $this->getPageCurrent(); $this->page = $this->getPage(); $this->nextPage = $this->getNextPage(); $this->prevPage = $this->getPrevPage(); $this->pageTail = $this->getPageCurrent(); $this->offset = $this->getOffset(); $this->getSeq();
}
private function getPageCurrent(){
return ceil($this->total/$this->pageSize);
}
private function getNextPage(){
$page = $this->page + 1; if($page > $this->pageCurrent) return $this->pageCurrent; return $page;
}
private function getPrevPage(){
$page = $this->page - 1; if($page < 1) return 1; return $page;
}
private function getOffset(){
return ($this->page - 1)*$this->pageSize;
}
//获取序列号的开始和结束
private function getSeq(){if($this->page <= 5) { $this->startPage = 1; if($this->pageCurrent <= 10){ $this->endPage = $this->pageCurrent; }else{ $this->endPage = 10; } }elseif($this->page < $this->pageCurrent){ $this->startPage = $this->page - 5; $this->endPage = $this->page + 4; if($this->endPage >= $this->pageCurrent){ $this->endPage = $this->pageCurrent; } }else{ $this->startPage = $this->page - 6; $this->endPage = $this->pageCurrent; }
}
private function getPage(){
if(isset($_GET['page'])){ return ($_GET["page"] < 1)?1:(($_GET["page"] > $this->pageCurrent)?$this->pageCurrent:$_GET["page"]); }else{ return 1; }
}
public function showPage(){
$pager = array( 'total' => $this->total, 'pageSize' => $this->pageSize, 'pageCurrent' => $this->pageCurrent, 'page' => $this->page, 'nextPage' => $this->nextPage, 'prevPage' => $this->prevPage, 'pageFirst' => $this->pageFirst, 'pageTail' => $this->pageTail, 'offset' => $this->offset, 'startPage' => $this->startPage, 'endPage' => $this->endPage ); return $pager;
}
}