0

I am new in CodeIgniter. I am stuck some where in search with pagination. Somebody help me.

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);
   }
}

Problem:

When i generate query string eg. ?per_page=2 its given me a fatal error, and can't be able to manipulate query string.

eg:

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

Error:

404 Page Not Found

Please give me some solution. If you have code regrading it please share with me.

Regards

4
  • What is the error exactly? Commented Mar 26, 2017 at 8:31
  • manipulation of query-strings. Commented Mar 26, 2017 at 8:32
  • Please, paste exact text of an error. Commented Mar 26, 2017 at 8:34
  • if($this->input->get('book_name')){ $this->db->like('name', $search); } $this->db->limit($per_page,$page); $res = $this->db->get('tbl_books'); $data['content_fb'] = $res->result(); Commented Mar 26, 2017 at 13:49

1 Answer 1

1

1.Create SQL table for saving queries

        --
        -- 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. in folder "application/core" cerate file: 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. In your Controller cerate function

        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. Change your manage function

     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);
    
            }   
    
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.