共计 3556 个字符,预计需要花费 9 分钟才能阅读完成。
提醒:本文最后更新于2021-02-09 08:59,文中所关联的信息可能已发生改变,请知悉!
在列表翻页实现中常会用到分页设计,这是一个简单易用的php的分页类,摘录参考。(来自《PHP典型模块与项目实战大全》第17章)
<? | |
/**************************************/ | |
/* @ Pager */ | |
/* @ */ | |
/* @ Designer AnVy */ | |
/**************************************/ | |
class listPage | |
{ | |
//public | |
var $firstPage; | |
var $endPage; | |
var $lastPage; | |
var $nextPage; | |
var $thisPage; | |
var $pageSize; | |
var $rowNum; | |
var $listNum; | |
var $cssClass; | |
var $splitStr; | |
var $pageLast; | |
var $pageNext; | |
var $pageFirst; | |
var $pageEnd; | |
var $pageList; | |
var $pageSelect; | |
var $pageAll; | |
var $links; | |
function __construct($rowNum,$pageSize = '10',$listNum = '8') | |
{ | |
$this->rowNum = $rowNum; | |
$this->pageSize = $pageSize; | |
$this->listNum = $listNum; | |
$this->splitStr = ' '; | |
$this->lastPage = '上一页'; | |
$this->nextPage = '下一页'; | |
$this->firstPage = '首页'; | |
$this->endPage = '末页'; | |
$this->thisPage = $_GET['page'] ? $_GET['page'] : 1; | |
} | |
function getStrWhere() | |
{ | |
$temp = array(); | |
foreach ($_GET as $key=>$val) | |
if($key != 'page') $temp[] = urlencode($key) . '=' . urlencode($val); | |
foreach ($_POST as $key=>$val) | |
$temp[] = urlencode($key) . '=' . urlencode($val); | |
$str = @ join('&',$temp); | |
unset($temp); | |
return $str; | |
} | |
function getPageNum() | |
{ | |
if ($this->thisPage < 1) | |
$this->thisPage = 1; | |
if ($this->rowNum < 1) | |
return 1; | |
return ceil($this->rowNum/$this->pageSize); | |
} | |
function createSelect($s,$e) | |
{ | |
$temp = array(); | |
$temp[] = '<select class="'.$this->cssClass.'" onchange="window.location=this.options[this.selectedIndex].value">'; | |
for($i = $s ; $i <= $e;$i ++) | |
$temp[] = '<option value="?page='.$i.'&'.$this->getStrWhere().'" '.(($i == $this->thisPage)?'selected':'').'>'.$i; | |
$temp[] = '<select>'; | |
return join(chr(13),$temp); | |
} | |
function createPage() | |
{ | |
$strWhere = $this->getStrWhere(); | |
$lastPage = $this->lastPage; | |
$firstPage = $this->firstPage; | |
$endPage = $this->endPage; | |
$nextPage = $this->nextPage; | |
$thisPage = $this->thisPage; | |
$pageNum = $this->getPageNum(); | |
$listNum = $this->listNum; | |
$startNum = $thisPage - (ceil($listNum/2)-1); | |
if ($startNum < 1 ) $startNum = 1; | |
$endNum = $startNum + $listNum - 1; | |
if ($endNum > $pageNum) $endNum = $pageNum; | |
$this->links['first'] ='?'.$strWhere.'&page=1'; | |
$this->links['last'] ='?'.$strWhere.'&page='.(($thisPage-1<1)?1:($thisPage-1)); | |
$this->links['next'] ='?'.$strWhere.'&page='.(($thisPage+1>$pageNum)?$pageNum:($thisPage+1)); | |
$this->links['end'] ='?'.$strWhere.'&page='.$pageNum; | |
$this->pageFirst = '<a href="'.$this->links['first'].'" class="'.$this->cssClass.'">'.$firstPage.'</a>'.$this->splitStr; | |
$this->pageLast = '<a href="'.$this->links['last'].'" class="'.$this->cssClass.'">'.$lastPage.'</a>'; | |
$this->pageNext = '<a href="'.$this->links['next'].'" class="'.$this->cssClass.'">'.$nextPage.'</a>'; | |
$this->pageEnd = $this->splitStr.'<a href="'.$this->links['end'].'" class="'.$this->cssClass.'">'.$endPage.'</a>'; | |
$pageList; | |
for($i = $startNum ; $i <= $endNum ; $i ++) | |
if ($thisPage != $i) | |
$pageList[] = '<a href="?'.$strWhere.'&page='.$i.'" class="'.$this->cssClass.'">'.$i.'</a>'; | |
else | |
$pageList[] = '<a class="'.$this->cssClass.'"><b>'.$i.'</b></a>'; | |
$this->pageList = @ join($this->splitStr,$pageList); | |
$this->pageSelect = $this->createSelect($startNum,$endNum); | |
$this->pageAll = $this->pageFirst.$this->splitStr.$this->pageLast.$this->splitStr.$this->pageList.$this->splitStr.$this->pageNext.$this->splitStr.$this->pageEnd.$this->splitStr.$this->pageSelect; | |
} | |
} | |
?> |
用法示例:
$obj = new listPage(22222222); | |
$obj->createPage(); | |
echo $obj->pageAll; |
正文完