cxllovefyy 发表于 2012-4-15 23:05:01

新手没看CI的分页类,自己写了个供大家调用

class Seperatepage_model extends CI_Model {

    function __construct()
    {
      parent::__construct();
      $this->load->database();
    }
    /*
   * 分页类,参数形式
   * array(
   * 'sqlstate'=>'' //数据库查询语句
   * 'begin'=>''   //开始的数目
   * 'step'=>''    //跳跃的步长
   * );
   * */
    function seperatepage($value=array('sqlstate'=>'','begin'=>'0','step'=>'10','uri'=>'')){
            if(is_array($value)){
                  $state='';
                  // 取得总数目
                  $allres=$this->db->query($value['sqlstate']);
                  $num=$allres->num_rows;
                  // 向上取整获得总页面
                  $numpage=ceil($num/$value['step']);
                  // 当前页面,以0开始,显示时页面为+1
                  $nowpage=($value['begin']/$value['step']);
                  foreach($value as $key => $val){
                            switch($key){
                                    case 'sqlstate':$state.=$val;break;
                                    case 'begin':$state.=' limit '.$val;break;
                                    case 'step':$state.=' , '.$val;break;
                            }
                  }
                  $query=$this->db->query($state);
                  $result=$query->result_array();
                  // 返回结果
                  $page['result']=$result;
                  // 翻页字符串
                  $spage='<a href="'.site_url('admin/admin_news/showtitle/0/'.$value['step']).'">首页</a>  ';
                  $spage.='总第:'.($nowpage+1).'/'.$numpage.'页  ';
                  if(($nowpage-1)<0){
                            $uppage=0;
                  }else{
                            $uppage=$nowpage-1;
                  }
                $spage.='<a href="'.site_url('admin/admin_news/showtitle/'.$uppage*$value['step'].'/'.$value['step']).'">上一页 </a>  ';
                  for($i=0;$i<5;$i++){
                            $setpage=$nowpage+$i+1;
                            //if($setpage<=$numpage){
                                    if($nowpage+1<=3){
                                 $spage.='<a href="'.site_url('admin/admin_news/showtitle/'.$i*$value['step'].'/'.$value['step']).'"> '.$this->add0($i+1).'</a> ';
                                    }else if($nowpage+3<=$numpage){
                                          $setpage2=$setpage-2;
                                          $spage.='<a href="'.site_url('admin/admin_news/showtitle/'.($setpage-3)*$value['step'].'/'.$value['step']).'"> '.$this->add0($setpage2).'</a> ';
                                    }else if($nowpage+3>$numpage){
                                          $spage.='<a href="'.site_url('admin/admin_news/showtitle/'.($numpage+$i-5)*$value['step'].'/'.$value['step']).'"> '.$this->add0($numpage+$i-4).'</a> ';
                                    }
                            //}
                  }
                  if(($nowpage+1>=$numpage-1)){
                            $lastpage=$numpage-1;
                  }else{
                            $lastpage=$nowpage+1;
                  }
                  $spage.=' <a href="'.site_url('admin/admin_news/showtitle/'.$lastpage*$value['step'].'/'.$value['step']).'">下一页</a>';
                  $spage.='  <a href="'.site_url('admin/admin_news/showtitle/'.($numpage-1)*$value['step'].'/'.$value['step']).'">尾页 </a>';
                  // 返回翻页字符串
                  $page['spage']=$spage;
                  return $page;
            }
    }
    /*不到十补0
   * */
    function add0($value){
            if($value<10){
                  return '0'.$value;
            }else{
                  return $value;
            }
    }
}

cxllovefyy 发表于 2012-4-15 23:07:31

沙发自己拿介绍用法,返回的是个数组,$page['result']是返回的数据库中调用出来的结果,也是数组形式,直接随便你们怎么使用了,放表格,标签里随便你们了,$page['spage']是用来点击的下面一行,随便放哪里

cxllovefyy 发表于 2012-4-15 23:10:07

板凳也给抢了,传值中的uri忘记赋值了,直接用了字符串'admin/admin_news/showtitle/',把这个当成uri的值,传进去的,就是你在哪个控制下调用这个model就是哪个控制器的uri

cxllovefyy 发表于 2012-4-15 23:10:26

没人啊,第一次发帖,包含了

cxllovefyy 发表于 2012-4-15 23:13:14

第一次发帖真的很无语,是分页类,不是分类,太激动打错字了

Hex 发表于 2012-4-16 12:05:50

支持楼主~加分了~

diergod 发表于 2012-4-16 16:08:50

很不错哦 支持一下

richardw 发表于 2012-4-17 10:37:48

学习的来喽,哈哈

hlh54321 发表于 2012-8-1 17:49:27

不错,我也是新手啊

ichou 发表于 2012-11-20 09:03:35

CI的原生分页类在构造函数和初始化方法中貌似的确是有点问题,但其实不用这么幸苦自己写的,自己拓展一下这个类修复了还是很好用的
页: [1] 2
查看完整版本: 新手没看CI的分页类,自己写了个供大家调用