返回首页
当前位置: 主页 > 网络编程 > Php实例教程 >

一个简单好用的php分页类

时间:2016-12-10 23:04来源:知行网www.zhixing123.cn 编辑:麦田守望者

在列表翻页实现中常会用到分页设计,这是一个简单易用的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)
0%
踩一下
(0)
0%
标签(Tag):php分页类
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片