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

[讨论/交流] 关于 分页 翻页 传参 问题 求证

[复制链接]
发表于 2012-6-16 15:04:36 | 显示全部楼层 |阅读模式
本帖最后由 花花世界 于 2012-6-16 15:06 编辑

首先 对于PHP 来说  我是新手
最近一直被分页翻页问题困扰   今天做出了个自己认为省事的办法   请高手们发表看法


翻页思路

我想在 模型 里 直接通过URL获得参数,进行查询,如果老大HEX 觉得可行,请通知我一声,我就放心了,如果觉得好,我会写详细点贴出来,自己认为还不错,这里只是写一下思路,请高手们看看。

1.通过URL传参
表单里的action为JS 控制提交    action='http://localhost/index.php/控制器/方法/'+'参数1'     用GET方法提交


控制器(参数1)
{
                $this->load->library('pagination');
                $this->load->library('table');
               
                $config['base_url']=base_url().'index.php/jihuaxinxi/chakanjihua'.'/'.$参数1;

                $config['total_rows']=$this->m_jihuaxinxi->get_rows();您会注意 这个地方没有参数
                $config['per_page']=2;
                $config['uri_segment'] = 4;
                $this->pagination->initialize($config);
                $data['results']=$this->m_jihuaxinxi->chakanjihua($config['per_page'],$this->uri->segment(4));您会注意 这个地方没有参数
               
                $this->load->view('Cfrm/jihuaxinxi/chakanjihua.html',$data);


}

重要  模型



模型()
{
//因为参数在URL里  现在打印出URL看看
http://localhost/index.php/控制器/方法/参数1/页数

现在可以在URL取出你想要的了  用到了这个函数 $this->uri->segment() 在手册里可以看到    参数1是在第3个 取出来
$变量=$this->uri->segment(3);  有人说  这个参数是中文呢?
比如:http://localhost/index.php/jihuaxinxi/chakanjihua/-/%E8%BF%9B%E6%A1%A3/-/1


//用这个函数解码就好
$变量= urldecode($this->uri->segment(3));


//这样就可以取出你想要的参数,进行查询了  ,翻页时候也没有任何问题

}



因是自创武功,始终不知道有没有隐患,老是不放心,请老大予以评价!
 楼主| 发表于 2012-6-16 15:23:14 | 显示全部楼层
自己先顶个
发表于 2012-6-17 09:51:59 | 显示全部楼层
首先,你这个钻研的精神值得肯定。
其次,我觉得分页最好使用 GET 传参,也就是这样:
http://domain.com/index.php/控制器/方法?参数1=value&参数2=value&per_page=页数

分页类是支持这种 URL 的,注意看 http://codeigniter.org.cn/user_guide/libraries/pagination.html 的 $config['page_query_string'] 参数,手册里都有明确说明。
我个人特别不建议在参数很多的情况下使用 URI 分段传参。
 楼主| 发表于 2012-6-17 10:02:08 | 显示全部楼层
哦 那个我也试过了  做个数据库多条件查询 好像得做好多判断,这个有什么隐患没?除了自己会看晕外
 楼主| 发表于 2012-6-17 10:07:29 | 显示全部楼层
我的意思是 安全性有没有什么问题呢?
 楼主| 发表于 2012-6-17 10:35:09 | 显示全部楼层
呵呵  我用了老大说的方法  感觉不错  以前对GET用法有点误会  呵呵
发表于 2012-6-17 14:44:59 | 显示全部楼层
花花世界 发表于 2012-6-17 10:07
我的意思是 安全性有没有什么问题呢?

GET 传参怎么会有安全问题呢?但是你的表单验证类是要支持 GET 参数验证才可以,我一般的做法是把 $_GET 合并到 $_POST 中,那样就不用修改表单验证类实现 GET 参数验证了。
发表于 2016-9-30 18:36:17 | 显示全部楼层
我想捣鼓一句:假如那个在查询的时候,使用的是原生的sql语句,那个url参数如何获取?恶心了,第一次用ci的分页,本打算用ajax的,结果写不出来
发表于 2016-10-18 10:59:26 | 显示全部楼层
shell_ci 发表于 2016-9-30 18:36
我想捣鼓一句:假如那个在查询的时候,使用的是原生的sql语句,那个url参数如何获取?恶心了,第一次用ci的 ...

uri参数的获取是在controller里面的啊~
如果你是用默认的分段传参的方法的话,那么在routes.php里面应该写好了参数的位置吧~ 在controller里通过segment方法来获取对应的参数然后传入model应该就可以了

本版积分规则