爲 CodeIgniter 寫的分頁類

<?phpif(!defined('BASEPATH'))exit('No direct script access allowed'); 
  
classMypage_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()
      */
     publicfunction__construct($params=array())
        {
            if(count($params) > 0)
            {
                $this->initialize($params);
            }
            log_message('debug',"MyPage Class Initialized");
        }
  
        functioninitialize($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
      */
     functionnext_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
      */
    functionpre_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
      */
    functionfirst_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
    */
    functionlast_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
    */
    functionnowbar($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
    */
    functionselect()
    {
        $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
    */
    functionshow($mode=1)
    {
        switch($mode)
        {
            case1://上一頁 1 2 3 4 5 下一頁 第x頁
                return$this->pre_page().$this->nowbar().$this->next_page();
                break;
            case2://首頁 上一頁 1 2 3 4 5 下一頁  末頁 第x頁
                return$this->first_page().$this->pre_page().$this->nowbar().$this->next_page().$this->last_page().'&nbsp;第'.$this->select().'頁';
                break;
            case3://上一頁 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().'&nbsp;第'.$this->select().'頁';
                break;
        }
    }
/*----------------private function (私有方法)-----------------------------------------------------------*/
  
    /**
    * 設置url頭地址
    * @param: String $url
    * @return boolean
    */
    publicfunction_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>';
    }
  
}
?>

  

把類下了放到library文件夾中,在須要分頁的控制器中初始化,部分代碼以下: php

?
1
2
3
4
5
6
7
8
9
$page_config['perpage']=5;  //每頁條數
$page_config['part']=2;//當前頁先後連接數量
$page_config['url']='work/managework';//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=$this->Work_mdl->count_work();//獲得記錄總數
$page_config['total']=$countnum['count(*)'];
$this->mypage_class->initialize($page_config);

  

視圖裏,在須要顯示分頁條的地方,添加: css

?
1
2
3
<divclass="page">
<?phpecho $this->mypage_class->show(1); ?>
</div>

  

我本身山寨了一下淘寶的分頁的css: html

  css中用到的圖片以下: c++

效果圖示例: 函數

相關文章
相關標籤/搜索