Codeigniter获取查询字符串分页不起作用

时间:2015-09-15 09:44:30

标签: php codeigniter codeigniter-2

我正在传递URL查询字符串参数来控制表单但基本URL我在这里给出了我的控制器/方法名称我不知道如何将查询字符串也传递给基本URL。

结果页面网址:http://localhost/Shop/products?category=10&subcategory=15

分页显示链接,但当我点击下一个链接页面时,网址显示为http://localhost/Shop/products/&per_page=10

我的控制器代码:

$config = array();
$config['page_query_string'] = TRUE;
$config["base_url"] = 'control/method/';
$config["total_rows"] = $this->model->record_count();
$config["per_page"] = 10;
$config["uri_segment"] = 3;
//pagination style
$config['full_tag_open'] = '<ul>';
$config['full_tag_close'] = '</ul>';
$config['prev_link'] = '&lt;';
$config['prev_tag_open'] = '<li>';
$config['prev_tag_close'] = '</li>';
$config['next_link'] = '&gt;';
$config['next_tag_open'] = '<li>';
$config['next_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li class="current"><a href="#">';
$config['cur_tag_close'] = '</a></li>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close'] = '</li>';
$config['first_tag_open'] = '<li>';
$config['first_tag_close'] = '</li>';
$config['last_tag_open'] = '<li>';
$config['last_tag_close'] = '</li>';
$config['first_link'] = '&lt;&lt;';
$config['last_link'] = '&gt;&gt;';
$this->pagination->initialize($config);
$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$data["productcount"] = $config["total_rows"];
$data["records"] = $this->model->fetch_products($config["per_page"], $page);
$data["links"] = $this->pagination->create_links();
$this->load->view('admin/productlist', $data);

2 个答案:

答案 0 :(得分:0)

试试这个 -

控制器 -

 public function blog()
    {
          $this->load->library('pagination');
          $total_row11 = $this->blogs_model->total_rows_count();
          $config = array();
          $config['base_url'] = base_url() . "blogs/blog";
          $config['total_rows'] = $total_row11;
          $config['per_page'] = 5;
          $config['cur_tag_open'] = '&nbsp;<a href="javascript:;">';
          $config['cur_tag_close'] = '</a>';
          $config['next_link'] = 'Next';
          $config['prev_link'] = 'Previous';
          $this->pagination->initialize($config);
          if($this->uri->segment(3)){
          $page = (int) ($this->uri->segment(3)) ;
          }
          else{
          $page = 0;
          }
          $data['all_blogs'] = $this->blogs_model->getAllBlogs($config['per_page'],$page);
          $str_links =  $this->pagination->create_links();
          $data['links'] = explode('&nbsp;',$str_links );
          $this->load->view('other/blogs/blogs',$data);
    }

在模型中 -

public function getAllBlogs($limit,$id)
        {
            $query = $this->db->query(" SELECT * FROM blogs ORDER BY blog_id DESC LIMIT $limit OFFSET $id ");
            if ($query->num_rows() > 0) {
            foreach ($query->result() as $row) {
            $data[] = $row;
            }
            return $data;
            }
            return false;
        }

答案 1 :(得分:0)

更改配置的 base_url ,并使用php http_build_query()添加自定义查询变量:

$query_vars = array('category' => 10, 'subcategory' = 15);
// Or:
$query_vars = array(
  'category' => $this->input->get('category'), 
  'subcategory' = $this->input->get('subcategory')
);
$config['base_url'] = 'control/method/?' . http_build_query($query_vars)

CI之后会将per_page var添加到结尾。

CI3 中,您有以下配置项:

$config['reuse_query_string'] = TRUE;

旁注:http_build_query() php5 方法。

相关问题