总的页数是一个长度一定的木块,这把尺子在这个木块上滑动,前提,尺子的两端不能超出木块:d。发现这么一来要做的事情就是去找这个尺子在木块上的起始点,根据用户给传进来的page变量。哈哈,关键代码下面: 代码如下 复制代码 /** * 把中间的看成一个可以
总的页数是一个长度一定的木块,这把尺子在这个木块上滑动,前提,尺子的两端不能超出木块:d。发现这么一来要做的事情就是去找这个尺子在木块上的起始点,根据用户给传进来的page变量。哈哈,关键代码下面:
代码如下 复制代码
/**
* 把中间的看成一个可以滑动的固定长度的尺子
*
* 把$this->_totalshowpages 当成一个可以滑动的固定长度尺子,
* 然后$this->_totalpages就是一个给定长度的木块,尺子在这个
* 木块上滑动。情况两种:
* 1. 尺子长度大于木块长度,那么就直接输出所有的页码;
* 2. 尺子长度小于木块长度,那么就只用找到输出这个尺子长度页
* 数的起始点——$start, $end;
*www.111cn.net
* @access protected
* @return void
* @exception none
*/
protected function _getshowpagenumber()
{
$pagehtml = '';
//找到$start点
if($this->_curpage - 2 > 1) {
$start = $this->_curpage - 2;
} else {
$start = 1;
}
//找到$end 点
$end = $start + $this->_totalshowpages;
if($end >= $this->_totalpages) {
$end = $this->_totalpages;
$start = $end - $this->_totalshowpages; //保证页面显示的长度为$this->_totalshowpages
}
if($start != 1) {
$pagehtml .= $this->_getpagehtml(1);
$premore = $this->_curpage - $this->_totalshowpages;
if($premore $premore = 1;
}
$pagehtml .= $this->_getmorepagehtml($premore);
}
for($page = $start; $page $pagehtml .= $this->_getpagehtml($page);
}
if($end != $this->_totalpages) {
$pagehtml .= $this->_getmorepagehtml($end);
}
$pagehtml .= $this->_getnormalpagehtml($this->_totalpages);
return $pagehtml;
}
第一种老想法的代码实现:
代码如下 复制代码
/**
* 一步步的来
*
* @desc
*
* @access protected
* @return void
* @exception none
*/
protected function _getshowpagenumbertwo()
{
if($this->_curpage _totalshowpages) {
for($page = 1; $page _totalshowpages; $page ++) {
$pagehtml .= $this->_getpagehtml($page);
}
$pagehtml .= $this->_getmorepagehtml($this->_totalshowpages);
$pagehtml .= $this->_getnormalpagehtml($this->_totalpages);
} else {
$pagehtml .= $this->_getnormalpagehtml(1);
if($this->_curpage == $this->_totalshowpages) {
$pagehtml .= $this->_getmorepagehtml(1);
} else {
$pagehtml .= $this->_getmorepagehtml($this->_curpage - $this->_totalshowpages);
}
if($this->_curpage + $this->_totalshowpages >= $this->_totalpages) {
for($page = $this->_totalpages - $this->_totalshowpages; $page _totalpages; $page ++) {
$pagehtml .= $this->_getpagehtml($page);
}
} else {
$start = $this->_curpage - 2;
$end = $this->_curpage + $this->_totalshowpages - 2;
for($page = $start; $page $pagehtml .= $this->_getpagehtml($page);
}
$pagehtml .= $this->_getmorepagehtml($this->_curpage + $this->_totalshowpages - 2);
$pagehtml .= $this->_getnormalpagehtml($this->_totalpages);
}
}
return $pagehtml;
}
示例图:
类文件下载:hpage.php (等我这个小类库完成了再一起放上 :d)。
更多详细内容请查看:http://www.111cn.net/phper/php/56745.htm