在uri-Codeigniter中使用GET数据进行分页

在uri-Codeigniter中使用GET数据进行分页,codeigniter,pagination,Codeigniter,Pagination,我正在尝试对数据库返回的结果进行分页。但当我尝试从URI获取偏移量时: questions/search?content=foobar/4 /4应该是偏移量,但它被分配给$\u GET值 这是控制器中的整个方法: $results=$this->question->search\u results\u count($content); $this->load->library('pagination'); $config['total_rows']=计数($results); $offset=

我正在尝试对数据库返回的结果进行分页。但当我尝试从URI获取偏移量时:

questions/search?content=foobar/4

/4
应该是偏移量,但它被分配给
$\u GET

这是控制器中的整个方法:

$results=$this->question->search\u results\u count($content);
$this->load->library('pagination');
$config['total_rows']=计数($results);
$offset=$this->uri->segment(3);
如果($offset==false)$offset=0;
$config['full_tag_open']='
    '; $config['full_tag_close']='
'; $config['num_tag_open']='
  • '; $config['num_tag_close']='
  • ; $config['cur_tag_open']='
  • '; $config['cur_tag_close']='
  • ; $config['prev_tag_open']='
  • '; $config['prev_tag_close']='
  • '; $config['next_tag_open']='
  • ; $config['next_tag_close']='
  • ; $config['num_tag_open']='
  • '; $config['num_tag_close']='
  • ; $config['first_link']=''; $config['last_tag_open']='
  • '; $config['last_tag_close']='
  • ; $config['per_page']=1; $config['uri_segment']=2; $config['page\u query\u string']=TRUE; $config['use_page_number']=TRUE; $config['suffix']='?content='。$content; $config['base_url']=base_url().'questions/search/'; $this->pagination->initialize($config);
    我相信您知道,URI不是这样工作的。查询字符串必须位于末尾(或
    #
    哈希片段之前)。此查询字符串:

    questions/search?content=foobar/4
    
    表示
    $\u GET['content']='foobar/4'

    您需要将分页URL更改为以下内容:

    questions/search/4/?content=foobar
    
    4后面的
    /
    也是可选的

    您必须从分页的
    $config['base_url']
    中删除查询字符串,并将其附加到视图中的链接中,这很遗憾地涉及到对分页类的攻击

    或者尝试此未记录的功能:

    // After loading the pagination class
    $this->pagination->suffix = '{YOUR QUERY STRING}';
    
    或者更好,只需添加
    $config['suffix']='{YOUR QUERY STRING}'添加到配置中。这将自动将查询字符串添加到每个链接的
    href

    还需要对配置区域进行一些调整:

    // Make sure to encode these
    // $config['first_link'] = '<<';
    $config['first_link'] = '&lt;&lt;';
    // $config['last_link'] = '>>';
    $config['last_link'] = '&gt;&gt;';
    
    $offset = $this->uri->segment(3);
    // Default URI segment is 3, and it's what you use above. Remove this.
    // $config['uri_segment'] = 2;
    
    // This should be FALSE (default). Remove it.
    // $config['page_query_string'] = TRUE;
    
    // This should be FALSE (default) if you're
    // using the URI segment as your OFFSET. Remove it.
    // $config['use_page_numbers'] = TRUE;
    
    // Add your query string
    $config['suffix'] = '?content='.$content;
    $config['base_url'] = base_url().'questions/search/';
    $this->pagination->initialize($config);
    
    //确保对这些代码进行编码
    //$config['first_link']='';
    $config['last_link']='';
    $offset=$this->uri->segment(3);
    //默认URI段是3,这是您在上面使用的。去掉这个。
    //$config['uri_segment']=2;
    //这应该是FALSE(默认值)。移除它。
    //$config['page\u query\u string']=TRUE;
    //如果您是
    //使用URI段作为偏移量。移除它。
    //$config['use_page_number']=TRUE;
    //添加查询字符串
    $config['suffix']='?content='。$content;
    $config['base_url']=base_url().'questions/search/';
    $this->pagination->initialize($config);
    
    查询字符串必须是url中的最后一个内容。类似于/search/4?content=foo的东西可以工作?如何在config中查看base_url?查看config/config.php文件和$config['base_url]=xxxxxx的条目;类似于
    ?content=foobar
    。无论您希望在href中的页码后面显示什么。我做了如下操作:
    $config['suffix']='?content='。$content但是当我创建链接()时,输出是空字符串。您是否记得
    echo
    ?。。。编辑你的问题,并将你的完整代码添加到你的帖子中,我会看一看。完成。我粘贴在pastebin.com=)我看不到你在哪里显示链接,应该有一个视图文件,你在那里使用
    echo$pagination。删除
    后缀
    部件是否会使链接再次显示?您还需要删除配置中的
    page\u query\u string
    。还要确保对
    $config['first_link']='中的括号进行HTML编码
    
    // Make sure to encode these
    // $config['first_link'] = '<<';
    $config['first_link'] = '&lt;&lt;';
    // $config['last_link'] = '>>';
    $config['last_link'] = '&gt;&gt;';
    
    $offset = $this->uri->segment(3);
    // Default URI segment is 3, and it's what you use above. Remove this.
    // $config['uri_segment'] = 2;
    
    // This should be FALSE (default). Remove it.
    // $config['page_query_string'] = TRUE;
    
    // This should be FALSE (default) if you're
    // using the URI segment as your OFFSET. Remove it.
    // $config['use_page_numbers'] = TRUE;
    
    // Add your query string
    $config['suffix'] = '?content='.$content;
    $config['base_url'] = base_url().'questions/search/';
    $this->pagination->initialize($config);