通用分页类

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;
    }
}

posted on 2011-01-12 15:07  justup  阅读(544)  评论(0)    收藏  举报

导航