贴一个在用的codeigniter分页类

贴自己自己正在使用的codeigniter中的分页类。供大家参考下。也谢谢这个类的书写者。因为您的分享,所以让大家得到了便捷。


先贴出来这个分页类:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');    
class Mypage_class {
	/**
	* @author :leanhunter<heww@live.com>
 	* @create:2011-9-23
	* 本分页类专为三段式CI分页缩写,即site_url('control/function/2');
	*/
	
	 /**
	  * config
	  */
	public $part=2;//控制数字列表当前页前后链接数量
	public $totalpage=0;//总页数
	public $url='';//url地址,不含分页所在的段,形如:'control/function'
	public $total=0;//总条数
	public $perpage=5;//每页条数
 	public $nowindex=1;//当前页
 	public $seg=3;//页码参数取 index.php之后的段数,默认为3,即index.php/control/function/18 这种形式
 	public $next_page='下一页';//下一页
	public $pre_page='上一页';//上一页
	public $first_page='首页';//首页
	public $last_page='末页';//尾页
	 /**
	  * constructor构造函数
	  *
	  * @param $params=array()
	  */
	 public function __construct($params = array())
		{
			if (count($params) > 0)
			{
				$this->initialize($params);
			}
			log_message('debug', "MyPage Class Initialized");
		}

		function initialize($params)
		{
			if (count($params) > 0)
			{
				$this->total=isset($params['total']) ? intval($params['total']) : 0;//总条数
		     	$this->perpage=isset($params['perpage']) ? intval($params['perpage']) : 5;//每页条数
		     	$this->nowindex=isset($params['nowindex']) ? intval($params['nowindex']) : 1;//当前页
		     	$this->url=isset($params['url']) ? $params['url'] : '';//url地址,不含分页所在的段,形如:'control/function'
				$this->part=isset($params['part']) ? $params['part'] : 2;//控制数字列表当前页前后链接数量
				$this->seg=isset($params['seg']) ? $params['seg'] : 3;//页码参数取 index.php之后的段数,默认为3,即index.php/control/function/18 这种形式
				$this->next_page=isset($params['next_page']) ? $params['next_page'] : '下一页';
				$this->pre_page=isset($params['pre_page']) ? $params['pre_page'] : '上一页';
				$this->first_page=isset($params['first_page']) ? $params['first_page'] : '首页';
				$this->last_page=isset($params['last_page']) ? $params['last_page'] : '末页';
			}
			$this->totalpage=ceil( $this->total / $this->perpage);//总页数
			$this->_myset_url($this->url);//设置链接地址
		}

	 /**
	  * 获取显示"下一页"的代码
	  * 
	  * @param string $style
	  * @return string
	  */
	 function next_page($style='pg_next')
	 {
		 if($this->nowindex < $this->totalpage){
		 	return $this->_get_link($this->_get_url($this->nowindex + 1), $this->next_page, $style);
		 }
		 return '<span class="'.$style.'">'.$this->next_page.'</span>';
	 }
 
	 /**
	  * 获取显示“上一页”的代码
	  *
	  * @param string $style
	  * @return string
	  */
	function pre_page($style='pg_pre')
	{
		if($this->nowindex > 1){
			return $this->_get_link($this->_get_url($this->nowindex-1),$this->pre_page,$style);
		}
		return '<span class="'.$style.'">'.$this->pre_page.'</span>';
	}
 
	 /**
	  * 获取显示“首页”的代码
	  *
	  * @param string $style
	  * @return string
	  */
	function first_page($style='pg_first')
	{
		if($this->nowindex == 1){
			return '<span class="'.$style.'">'.$this->first_page.'</span>';
		}
		return $this->_get_link($this->_get_url(1),$this->first_page,$style);
	}
 
	/**
	* 获取显示“尾页”的代码
	*
	* @param string $style
	* @return string
	*/
	function last_page($style='pg_last')
	{
		if($this->nowindex == $this->totalpage){
			return '<span class="'.$style.'">'.$this->last_page.'</span>';
		}
		return $this->_get_link($this->_get_url($this->totalpage),$this->last_page,$style);
	}
	/**
	* 获取显示“当前页”的代码
	*
	* @param string $style
	* @param string $nowindex_style
	* @return string
	*/
	function nowbar($style='pg_link',$nowindex_style='pg_curr')
	{
		$plus=$this->part;
		$begin=1;
		$end=$this->totalpage;
		
		if ($this->nowindex > $plus) {
			$begin=$this->nowindex-$plus;
			$end = $this->nowindex + $plus;
			if ($end > $this->totalpage) {
				$begin= ($begin - $end + $this->totalpage>0) ? ($begin - $end + $this->totalpage) : 1;
				$end = $this->totalpage;
			}
		} else {
			$begin=1;
			$end = $begin + 2*$plus;
			$end = $end > $this->totalpage ? $this->totalpage : $end;
		}
		$out='';
		for($i = $begin;$i <= $end; $i++)
		{
			if($i != $this->nowindex){
				$out.= $this->_get_link($this->_get_url($i),$i,$style);
			}else{
				$out.= '<span class="'.$nowindex_style.'">'.$i.'</span>';
			}
			
		}
		
		return $out;
	}
	/**
	* 获取显示跳转按钮的代码
	*
	* @return string
	*/
	function select()
	{
		$out='<select name="pagelect" class="pg_select">';
		for($i=1;$i <= $this->totalpage;$i++)
		{
			if($i==$this->nowindex){
				$out.='<option value="'.$i.'" selected>'.$i.'</option>';
			}else{
				$out.='<option value="'.$i.'">'.$i.'</option>';
			}
		}
		$out.='</select>';
		return $out;
	}
	/**
	* 控制分页显示风格
	* 
	* @param int $mode
	* @return string
	*/
	function show($mode=1)
	{
		switch ($mode)
		{
			case 1://上一页 1 2 3 4 5 下一页 第x页
				return $this->pre_page().$this->nowbar().$this->next_page();
				break;
			case 2://首页 上一页 1 2 3 4 5 下一页  末页 第x页
				return $this->first_page().$this->pre_page().$this->nowbar().$this->next_page().$this->last_page().' 第'.$this->select().'页';
				break;
			case 3://上一页 1 2 3 4 5 下一页 
				return $this->pre_page().$this->nowbar().$this->next_page();
				break;
			default://上一页 1 2 3 4 5 下一页  第x页
				return $this->pre_page().$this->nowbar().$this->next_page().' 第'.$this->select().'页';
				break;
		}
	}
/*----------------private function (私有方法)-----------------------------------------------------------*/

	/**
	* 设置url头地址
	* @param: String $url
	* @return boolean
	*/
	public function _myset_url($url)
	{
		$CI=&get_instance();
		$CI->load->helper('url');
		if (empty($url)) {//如果$url为空,要用uri_string()函数取uri段
			$cururl='';
			$cururl=uri_string();
			$segementarray=explode("/",$cururl);
			$c=0;
			for ($i=0; $i < sizeof($segementarray); $i++) {
				if ($segementarray[$i] && $c < $this->seg-1) {//取uri_string()的seg-1段
					$url=$url.'/'.$segementarray[$i];
					$c++;
				}
			}	
		}
		$this->url=site_url($url);
	}
	
	/**
	* 为指定的页面返回地址值
	*
	* @param int $pagenum
	* @return string $url
	*/
	function _get_url($pagenum=1)
	{
		return $this->url.'/'.$pagenum;
	}
 
	/**
	* 获取链接地址
	*/
	function _get_link($url,$text,$style=''){
		$style=$style?'class="'.$style.'"':'';
		return '<a '.$style.' href="'.$url.'">'.$text.'</a>';
	}

}//end class
/* End of file Mypage.php */
/* Location: ./application/libraries/Mypage.php */


大家可以在相应的控制器中写下具体配置:



$page_config['perpage']=5;   //每页条数
		$page_config['part']=2;//当前页前后链接数量
		$page_config['url']='vote/getview';//url
		$page_config['seg']=3;//参数取 index.php之后的段数,默认为3,即index.php/control/function/18 这种形式
		$page_config['nowindex']=$this->uri->segment($page_config['seg']) ? $this->uri->segment($page_config['seg']):1;//当前页
		$this->load->library('mypage_class');
		$countnum=100;//得到记录总数--应该是调用model中的某方法得来的。这里省略。
		$page_config['total']=$countnum;
		$this->mypage_class->initialize($page_config);
		
		$this->load->view('template/replist');	



视图里code:


<div class="page"> 
	<?php echo $this->mypage_class->show(1); ?> 
 </div>







                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值