一个简单好用的php分页类

12,801次阅读
4 条评论

共计 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 = '&nbsp;';
$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;

 

正文完
 0
任侠
版权声明:本站原创文章,由 任侠 于2012-09-15发表,共计3556字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(4 条评论)
验证码
加盟店排行榜 评论达人 LV.1
2012-10-22 18:14:58 回复

我又来了,真的喜欢上楼主的文章了,很吸引人,比一般的文章感觉更真实,读起来很贴近生活,楼主继续努力,你拥有我们这些忠实的粉丝!加油!

     中国上海上海市联通
2012-10-01 21:30:34 回复

很难搞

     中国福建省厦门市联通
木本无心 评论达人 LV.4
2012-09-18 19:36:12 回复

哈,php什么的,不懂。。。
[reply=任侠,2012-09-20 05:02 PM]语言已其实都差不多
最近实习在搞这个[/reply]

     中国福建省南平市电信
2012-09-18 07:19:39 回复

大哥为什么不配个图呢?

     中国上海上海市电信