簡體   English   中英

使用查詢字符串和搜索進行CodeIgniter分頁

[英]CodeIgniter pagination using query string with search

我是CodeIgniter的新手。 我被卡在尋找分頁的地方。 來人幫幫我。

class Pagination2 extends My_controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->helper('form');
        $this->load->helper('url');
        $this->load->database();
        $this->load->library('pagination');
        $this->load->model('pagination_model');
        $userdata=$this->session->userdata('userdata');
        if(!isset($userdata['user_role']))
        {
            redirect(base_url('admin'));
        }
    }

    public function manage($page = 0)
    {

       $this->load->library('pagination');
       $per_page = 10;   
       $_POST = $_GET;
       $search= $this->input->get('book_name')?$this->input->get('book_name'):'NIL';
       $this->db->limit($per_page,$page);
       if($search=='NIL')
       {
        $data['content_fb'] = $this->db->get('tbl_books')->result();
       }
       else
       {
        $this->db->like('name', $search);
        $res = $this->db->get('tbl_books');
        $data['content_fb'] =  $res->result();
       }
       // $data['content_fb'] = $this->db->select('id')->limit($per_page,$page)->get('content_fb')->result();

        $config['base_url'] = base_url('pagintion2/manage');
        $config['total_rows'] = $this->db->count_all('tbl_books');
        $config['per_page'] = $per_page;
        $choice = $config["total_rows"]/$config["per_page"];
        $config["num_links"] = floor($choice);
        $config['use_page_numbers'] = TRUE;
        $config['page_query_string'] = TRUE;
        $config['uri_segment'] = 3;
        $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'] = '«';
        $config['prev_tag_open'] = '<li class="prev">';
        $config['prev_tag_close'] = '</li>';
        $config['next_link'] = '»';
        $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>';
        // CodeIgniter Pagination URL with GET Parameters
        // http://subhra.me/codeigniter-pagination-url-get-parameters/
        if (count($_GET) > 0) $config['suffix'] = '?' . http_build_query($_GET, '', "&");
        $config['first_url'] = $config['base_url'].'?'.http_build_query($_GET);

        $this->pagination->initialize($config);
        $data['pagination_links'] = $this->pagination->create_links();   
        // echo $data['pagination_links'];   
        $data['templatepart']='backend/pagination2';
        $userdata= $this->session->userdata('userdata');
        $data['data']= $this->Admin_model->getdata('user',array('id'=>$userdata['id']));
        $this->load->view('backend/layout',$data);
   }
}

問題:

當我生成查詢字符串例如。 ?per_page = 2它給了我一個致命錯誤,並且無法操縱查詢字符串。

例如:

localhost/xxx/pagintion2/manage?per_page=2&book_name=Learning

錯誤:

404 Page Not Found

請給我一些解決方案。 如果您對代碼進行了分級,請與我分享。

問候

1.創建用於保存查詢的SQL表

        --
        -- Table structure for table `ci_query`
        --

        CREATE TABLE `ci_query` (
          `id` int(11) NOT NULL,
          `query_string` text,
          `date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  1. 在文件夾“應用程序/核心”的特定文件中:My_input.php

     if (!defined('BASEPATH')) exit('No direct access allowed.'); /** * Description of My_input * * @author Dragan */ class MY_Input extends CI_Input{ function __construct() { parent::__construct(); } /** * Save query in database */ function save_query($query_array){ $CI =& get_instance(); $CI->db->insert('ci_query', array('query_string' => http_build_query($query_array))); return $CI->db->insert_id(); } /** * Load query from database */ function load_query($query_id) { $CI =& get_instance(); $rows = $CI->db->get_where('ci_query', array('id' => $query_id))->result(); if (isset($rows[0])) { parse_str($rows[0]->query_string, $_GET); } } } 
  2. 在控制器的特定功能中

      public function search() { $query_array = array( 'book_name' => $this->input->post('book_name') ); $query_id = $this->input->save_query($query_array); redirect("pagintion2/manage/$query_id"); } 
  3. 更改您的管理功能

      public function manage ($query_id = 0,$start=0){ $this->input->load_query($query_id); $query_array = array( 'book_name' => $this->input->get('book_name') ); $per_page = 10; $search= $this->input->get('book_name')?$this->input->get('book_name'):'NIL'; if($search=='NIL') { $data['content_fb'] = $this->db->get('tbl_books')->result(); } else { $this->db->like('name', $search); $res = $this->db->get('tbl_books'); $data['content_fb'] = $res->result(); } $this->load->library('pagination'); $config['base_url'] = site_url()."pagintion2/manage/$query_id"; $config['total_rows'] = $this->db->count_all('tbl_books'); $config['uri_segment'] = 4; $config['per_page'] = 10; $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'] = '«'; $config['prev_tag_open'] = '<li class="prev">'; $config['prev_tag_close'] = '</li>'; $config['next_link'] = '»'; $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); $data['pagination_links'] = $this->pagination->create_links(); // output search data $data['list_of_books_by_category'] = $this->model_your_model_name->get_list_of_books_by_category($query_array, $per_page, $start); $data['templatepart']='backend/pagination2'; $userdata= $this->session->userdata('userdata'); $data['data']= $this->Admin_model->getdata('user',array('id'=>$userdata['id'])); $this->load->view('backend/layout',$data); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM