用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4941|回复: 11
收起左侧

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

[复制链接]
发表于 2012-4-15 23:05:01 | 显示全部楼层 |阅读模式
PHP复制代码
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;
            }
    }
}
复制代码

评分

参与人数 1威望 +5 收起 理由
Hex + 5 很给力!

查看全部评分

 楼主| 发表于 2012-4-15 23:07:31 | 显示全部楼层
沙发自己拿介绍用法,返回的是个数组,$page['result']是返回的数据库中调用出来的结果,也是数组形式,直接随便你们怎么使用了,放表格,标签里随便你们了,$page['spage']是用来点击的下面一行,随便放哪里
 楼主| 发表于 2012-4-15 23:10:07 | 显示全部楼层
板凳也给抢了,传值中的uri忘记赋值了,直接用了字符串'admin/admin_news/showtitle/',把这个当成uri的值,传进去的,就是你在哪个控制下调用这个model就是哪个控制器的uri
 楼主| 发表于 2012-4-15 23:10:26 | 显示全部楼层
没人啊,第一次发帖,包含了
 楼主| 发表于 2012-4-15 23:13:14 | 显示全部楼层
第一次发帖真的很无语,是分页类,不是分类,太激动打错字了
发表于 2012-4-16 12:05:50 | 显示全部楼层
支持楼主~加分了~
发表于 2012-4-16 16:08:50 | 显示全部楼层
很不错哦 支持一下
发表于 2012-4-17 10:37:48 | 显示全部楼层
学习的来喽,哈哈
发表于 2012-8-1 17:49:27 | 显示全部楼层
不错,我也是新手啊
发表于 2012-11-20 09:03:35 | 显示全部楼层
CI的原生分页类在构造函数和初始化方法中貌似的确是有点问题,但其实不用这么幸苦自己写的,自己拓展一下这个类修复了还是很好用的

本版积分规则