贴一个在用的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>

 

 

 

 


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值