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

[库 Library] 自己扩展了CI的sql写一个分页函数

[复制链接]
发表于 2012-6-5 16:23:15 | 显示全部楼层 |阅读模式
        /*
         * 分页函数
         * 参数1:查询类型   0:查询数量   1:查询数据
         * 参数2:表
         * 参数3:查询条件  where 条件  格式arrar(array('k1'=>v1),array('k2'=>v2))
         * 参数4rder 条件 格式array('字段'=>排序)   
         * 参数5:分页数
         * 参数6:分页偏移量
         * 参数7:like条件  因为用的少..所以放后面..以后全部同理   用法   条件 格式array('字段'=>值)  ==  WHERE title LIKE '%value%'  目前用的是最简单的like   以后遇到复杂的在改   
         * 参数8:joinArr   join连接表  格式  array(array('表名','连接条件','连接方向'))
         * 参数9:要查询的字段  $string
         * 参数10:加入in查询    传入array('字段'=>'值的数组') 例如  $names = array('Frank', 'Todd', 'James'); $this->db->where_in('username', $names); 生成: WHERE username IN ('Frank', 'Todd', 'James')
         * 参数11rlike条件  用法和like一样...没有把这2个合并是因为括号不兼容
         * 参数12:加入not in查询   用法和in一样...主要是SB  CI不支持" and c.isnew != 1 and c.isnew != 3"这种模式..只能用not in 来代替
         */
       
        function get_fenye_fun($type,$table,$whereArr=array(),$orderArr=array(),$page,$offset=0,$likeArr=array(),$joinArr=array(),$selectStr='',$inWhereArr=array(),$orlikeArr=array(),$noinWhereArr=array()){
//                        $this->db->from('kehu_member_gendan');
//                    return $this->db->count_all_results();
                if(!empty($whereArr)){
                        foreach($whereArr as $k=>$v){
//                                var_dump($v);
                                foreach($v as $kk=>$vv){
                                        $this->db->where($kk,$vv);
                                }
                        }
                }
                if(!empty($orderArr)){
                        foreach($orderArr as $k=>$v){
                                $this->db->order_by($k,$v);
                        }
                }
                if(!empty($likeArr)){
                        foreach($likeArr as $k=>$v){
                                $this->db->like($k,$v);
                        }
                }
                if(!empty($orlikeArr)){
                        foreach($orlikeArr as $k=>$v){
                                $this->db->or_like($k,$v);
                        }
                }
                if(!empty($joinArr)){
                        foreach($joinArr as $k=>$v){
                                $this->db->join($v[0], $v[1], $v[2]);
                        }
                }
                if(!empty($selectStr)){
                        $this->db->select($selectStr);
                }
                if(!empty($inWhereArr)){
                        foreach($inWhereArr as $k=>$v){
                                $this->db->where_in($k,$v);
                        }
                }
                if(!empty($noinWhereArr)){
                        foreach($noinWhereArr as $k=>$v){
                                $this->db->where_not_in($k,$v);
                        }
                }
               
                if(empty($type)){
                        $this->db->from($table);
                    return $this->db->count_all_results();
                }else{
                        $this->db->limit($page, $offset);
                        return $this->db->get($table);
                }
        }


我的博客
发表于 2012-6-8 10:15:02 | 显示全部楼层
问一下楼主,普通列表形式不传参的话比较容易,用CI原生的分页类也可以
就是问一下,如果有查询条件的情况,这个查询条件您是怎么传递的呢?URL么?

本版积分规则