通用分页类
php通用分页类,返回二维数组或者字符串。
<?php
/**
+----------------------------------------------------------
* 兄 弟 你 该 努 力 了!- 西 木
+----------------------------------------------------------
* 用 途 通用分页类
+----------------------------------------------------------
* 文 件 名 paging.class.php
+----------------------------------------------------------
* 时 间 2011-1-8
+----------------------------------------------------------
*/
class paging{
public $con_sum; //内容总数
public $rows; //每页行数
public $page_sum; //分页总数
public $page; //当前页码
/**
*构造函数
*@access public
*@param int 内容总数
*@param int 单页数量
*/
public function __construct($con_num,$rows){
$this->con_sum=$con_num;
$this->rows=$rows;
$this->process();
}
/**
* 计算
*/
private function process(){
if($this->con_sum<=$this->rows){ //分页不足一页
$this->page_sum=1;
}
else{
$this->page_sum=(int)($this->con_sum/$this->rows);
$this->page_sum=$this->con_sum%$this->rows>0?$this->page_sum+1:$this->page_sum;//处理最后一页不足一页
}
}
/**
* 根据当前页返回数据区间
* @access public
* @param int 当前页
* @return int 起始条数
*/
public function get_limit($page=''){
$page=empty($page)?$this->page=1:$this->page=$page;
return $page<=$this->page_sum?($page-1)*$this->rows:0;
}
/**
* 返回分页数组
* @access public
* @param string 分页链接:http://xxx.com/id=*[*为分页参数]
* @param int 当前页
* @return array 二维数组array(lists=>array(),first,piror,present,next,last,page_sum,con_sum)
*/
public function get_arr($link='',$page=''){
$link=empty($link)?'*':$link; //设置链接为空情况
empty($page)?null:$this->page=$page; //设置系统当前页
$lists=array();
for($i=1;$i<=$this->page_sum;$i++){
$lists+=array($i=>$i); //得到分页列表数组
}
foreach($lists as $key=>$value){ //处理分页列表中的链接
is_array($lists[$key])?null:$lists[$key]=strtr($link,array('*'=>$value));
}
$pages=array('lists'=>$lists); //链接数组
$pages+=array(
'first'=>1,
'piror'=>($this->page==1)?1:($this->page-1), //获取上一页
'present'=>$this->page, //当前页
'next' =>($this->page>=$this->page_sum)?$this->page_sum:($this->page+1), //获取下一页
'last' =>$this->page_sum //最后页
);
foreach($pages as $key=>$value){ //处理数组中的链接
is_array($pages[$key])?null:$pages[$key]=strtr($link,array('*'=>$value));
}
$pages+=array(
'page_sum' =>$this->page_sum, //总页码
'con_sum' =>$this->rows //总内容
);
return $pages;
}
/**
* 返回分页字符串
* @access public
* @param string 分页链接:http://xxx.com/id=*【*为分页参数】
*
* @return string 分页字符串
*/
public function get_str($link='',$page=''){
$arr=$this->get_arr($link,$page);
$str='<li><a href="'.$arr['piror'].'">上一页</a></li>';
foreach($arr['lists'] as $key=>$value){
$str=$str.'<li><a href="'.$value.'">'.$key.'</a></li>';
}
$str=$str.'<li><a href="'.$arr['next'].'">下一页</a></li>';
$str=$str.'<li>共'.$this->page_sum.'页|第'.$this->page.'页</li>';
return $str;
}
}
浙公网安备 33010602011771号