通用分页类
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号
浙公网安备 33010602011771号