[英]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;
在文件夾“應用程序/核心”的特定文件中: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); } } }
在控制器的特定功能中
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"); }
更改您的管理功能
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.