Php 带有get变量的Codeigniter分页始终将第1页显示为当前活动链接

Php 带有get变量的Codeigniter分页始终将第1页显示为当前活动链接,php,codeigniter,pagination,Php,Codeigniter,Pagination,首先,我是CodeIgniter的新手,我已经搜索并发现了很多类似的问题,我已经尝试了所有的解决方案,但都不起作用。我有一个搜索输入,用分页显示我的数据,当第二页的url中设置了get参数时,问题就会出现,显示的数据是第二页的数据,但分页号链接仍在第1页上活动。我将只显示相关代码(我已正确放置构造、索引、加载等) models/model.php public function get_results($search_term='default', $limit, $start) { $

首先,我是CodeIgniter的新手,我已经搜索并发现了很多类似的问题,我已经尝试了所有的解决方案,但都不起作用。我有一个搜索输入,用分页显示我的数据,当第二页的url中设置了get参数时,问题就会出现,显示的数据是第二页的数据,但分页号链接仍在第1页上活动。我将只显示相关代码(我已正确放置构造、索引、加载等)

models/model.php

public function get_results($search_term='default', $limit, $start) {
    $this->db->select('*');
    $this->db->from('table');
    $this->db->like('title', $search_term');
    $this->db->order_by('PID DESC');
    $query = $this->db->get('', $limit, $start);
    return $query->result();
}
controllers/controller.php

public function execute_search() {
    // Retrieve the posted search term
    $search_term = $this->input->post('search');

    // Retrieve get variables if goes to second page
    // url example: localhost:/index/main/execute_search/query/15
    // If segment is 4, the third segment is the query get variable passed through link
    $search_term = ($this->uri->segment(4)) ? $this->uri->segment(3) : $search_term;

    // Pagination settings
    $config['base_url'] = site_url('main/execute_search/' . $search_term . '/');
    $this->db->like('title', $search_term);
    $this->db->from('table');
    $totalrows = $this->db->count_all_results();
    $config['total_rows'] = $totalrows;
    $config['per_page'] = '15';
    $config['uri_segment'] = 3;
    $choice = $config['total_rows'] / $config['per_page'];
    $config['num_links'] = floor($choice);

    // config for bootstrap pagination class integration
    $config['full_tag_open'] = '<ul class="pagination">';
    $config['full_tag_close'] = '</ul>';
    $config['first_link'] = false;
    $config['last_link'] = false;
    $config['first_tag_open'] = '<li>';
    $config['first_tag_close'] = '</li>';
    $config['prev_link'] = '&laquo';
    $config['prev_tag_open'] = '<li class="prev">';
    $config['prev_tag_close'] = '</li>';
    $config['next_link'] = '&raquo';
    $config['next_tag_open'] = '<li>';
    $config['next_tag_close'] = '</li>';
    $config['last_tag_open'] = '<li>';
    $config['last_tag_close'] = '</li>';
    $config['cur_tag_open'] = '<li class="active"><a href="#">';
    $config['cur_tag_close'] = '</a></li>';
    $config['num_tag_open'] = '<li>';
    $config['num_tag_close'] = '</li>';

    $this->pagination->initialize($config);

    // If segment is 4, current page is the fourth segment
    $data['page'] = ($this->uri->segment(4)) ? $this->uri->segment(4) : 0;

    // Use a model to retrieve the results
    $data['datalist'] = $this->model->get_results($search_term, $config['per_page'], $data['page']);

    $data['pagination'] = $this->pagination->create_links();

    // Pass the results to the view
    $this->load->view('main', $data);
public函数执行_search(){
//检索已发布的搜索词
$search_term=$this->input->post('search');
//如果转到第二页,则检索get变量
//url示例:localhost:/index/main/execute\u search/query/15
//如果段为4,则第三段是通过链接传递的查询get变量
$search\u term=($this->uri->segment(4))?$this->uri->segment(3):$search\u term;
//分页设置
$config['base_url']=site_url('main/execute_search/'.$search_term./');
$this->db->like('title',$search\u term);
$this->db->from('table');
$totalrows=$this->db->count_all_results();
$config['total_rows']=$totalrows;
$config['per_page']='15';
$config['uri_段]]=3;
$choice=$config['total_rows']/$config['per_page'];
$config['num_links']=floor($choice);
//引导分页类集成的配置
$config['full_tag_open']='
    ; $config['full_tag_close']='
'; $config['first_link']=false; $config['last_link']=false; $config['first_tag_open']='
  • '; $config['first_tag_close']='
  • ; $config['prev_link']='laquo'; $config['prev_tag_open']='
  • '; $config['prev_tag_close']='
  • ; $config['next_link']='raquo'; $config['next_tag_open']='
  • '; $config['next_tag_close']='
  • ; $config['last_tag_open']='
  • '; $config['last_tag_close']='
  • ; $config['cur_tag_open']='
  • ; $config['num_tag_open']='
  • '; $config['num_tag_close']='
  • ; $this->pagination->initialize($config); //如果段为4,则当前页为第四段 $data['page']=($this->uri->segment(4))?$this->uri->segment(4):0; //使用模型检索结果 $data['datalist']=$this->model->get_results($search_term,$config['per_page'],$data['page']); $data['pagination']=$this->pagination->create_links(); //将结果传递给视图 $this->load->view('main',$data);
    views/main.php

    <!DOCTYPE HTML>
    <html>
    <head>
        <!-- Bootstrap css -->
        <link rel='stylesheet' href='<?= base_url('assets/css/bootstrap.css'); ?>'></link>
    </head>
    <body>
    <?php
    
        echo form_open('main/execute_search');
    
        echo form_input(array('name'=>'search'));
    
        echo form_submit('search_submit', 'Search');
    
        // result
        for($i = 0; $i < count($datalist); $i++) {
            echo $datalist[$i]->title;
        }
    
        // Pagination
        echo $pagination
    
    ?>
    </body>
    </html>
    
    
    
    localhost/index/main/execute\u search

    localhost/index/main/execute\u search/15

    localhost/index/main/execute\u search/query/15

    localhost/index/main/execute\u search/query/30

    当我在url中添加get参数时出现了问题,请帮我解决。提前非常感谢。

    移动:

    $data['page'] = ($this->uri->segment(4)) ? $this->uri->segment(4) : 0;
    
    以上:

    $config['base_url'] = site_url('main/execute_search/' . $search_term . '/');
    

    然后改变:

    $config['base_url'] = site_url('main/execute_search/' . $search_term . '/');
    


    也改变了:

    $search_term = ($this->uri->segment(4)) ? $this->uri->segment(3) : $search_term;
    


    感谢您的回答,您是否建议添加另一个“查询”段?这样我的url应该是localhost/index/main/execute\u search/query/query\u user\u search/15?我给出的url中的查询是用户输入的搜索。好的,谢谢,所以我做了您建议的一切,它正确显示了数据,分页显示了正确的cur租用活动链接,但是分页上的链接仍然错误,我找不到原因,例如我在第二页的localhost/index/main/execute_search/15/query中,第三页的分页链接是localhost/index/main/execute_search/15/query/30,第四页是localhost/index/main/execute_search/15/query/45,15应该更改,但不确定原因。尝试注释行:
    $config['uri_段']=3;
    并将
    $config['num_段']=floor($choice);
    更改为
    $config['num_段']=20;
    用于测试。是的,找到了,问题是$config['uri_段']=3,将其更改为$config['uri_段']=4,一切正常。非常感谢!
    $search_term = ($this->uri->segment(4)) ? $this->uri->segment(3) : $search_term;
    
    $search_term = ($this->uri->segment(5)) ? $this->uri->segment(5) : $search_term;