贴一个在用的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"> <span style="white-space: pre;" mce_style="white-space: pre;"></span><?php echo $this->mypage_class->show(1); ?></div>
页:
[1]