2010-06-10 | millken Posted On :
<pre style="background:none repeat scroll 0 0 #F3F3F3;border:1px solid #CCCCCC;padding:9px;word-wrap:word-break;font-size:12px !important;font-family:monospace !important;margin:0;">
</pre>
class pages_class {
public $count; #结果总数
public $page; #当前页
public $pagesize; #每页结果数
public $baseurl; #url
public $result; #结果数组集
public $max; #最大记录数
private $permalink ; #是否固定链接
#构造函数,初始化变量
function __construct( $count , $page , $pagesize , $baseurl = false, $max = 0 )
{
$this->count = $count;
$this->page = max(intval($page),1);
$this->pagesize = $pagesize;
$this->permalink = false;
$this->baseurl = $baseurl ? $baseurl : $this->__geturl();
$this->max = max(0, $max);
$this->pagecount = ($this->max>0 && ceil($this->count/$this->pagesize)>$this->max)?$this->max:ceil($this->count/$this->pagesize);
}
#获得当前url
function __geturl()
{
$permalink = URL_REWREITE_MODE;
if ( $permalink && 'search' !== $GLOBALS['router']->getController() ) {
$this->permalink = true;
$link = preg_replace("~(\/)page/\d+~i", "", $_SERVER['REQUEST_URI']);
}else{
$link = preg_replace('/((\?)p=\d+[&])|(&p=\d+|(&))|(\?p=\d+$)/eis','"\\2\\4"',$_SERVER['REQUEST_URI']);
}
return $link;
}
#获得分页列表
function get_list()
{
$this->result['count'] = $this->count;
$this->result['page'] = $this->page;
$this->result['pagesize'] = $this->pagesize;
$this->result['pagecount'] = $this->pagecount;
if($this->result['pagecount']<=1) //只有一页以下
{
$this->result['pagelist'] = 0;
}
else //一页以上
{
#前一页,第一页的算法
$this->result['first'] = ($this->page == 1) ? 0 : 1;
$this->result['firsturl'] = $this->baseurl . ($this->permalink? '/page/1':'&p=1');
$this->result['pre'] = ($this->page > 1) ? ($this->page - 1) : 0;
$this->result['preurl'] = $this->baseurl . ($this->permalink? '/page/':'&p=') . $this->result['pre'];
#后一页,最后一页的算法
$this->result['next'] = ($this->page >= $this->pagecount ) ? 0 : $this->page + 1;
$this->result['nexturl'] = $this->baseurl . ($this->permalink? '/page/':'&p=') . $this->result['next'];
$this->result['last'] = ($this->page >= $this->pagecount ) ? 0 : $this->pagecount;
$this->result['lasturl'] = $this->baseurl . ($this->permalink? '/page/':'&p=') . $this->result['last'];
#起始
$pagearray = array();
$start =max( floor(($this->page-1)/10),0)*10+1;
for($i=0;$i<($this->pagecount<10?$this->pagecount :10) ;$i++)
{
if( ($start+$i) <= $this->result['pagecount'])
{
$pagearray[$i]['page'] = $start+$i;
}
if( ($start+$i) != $this->page )
{
$pagearray[$i]['url'] = $this->baseurl . ($this->permalink? '/page/':'&p='). ($start+$i);
}
}
#分页导航列表
$this->result['pagelist'] = $pagearray;
$this->result['baseurl'] = $this->baseurl;
}
return $this->result;
}
}
引用:0