最近在用ci框架寫功能的時候,需要用到分頁功能,本來尋常的數據結果分頁是比較簡單的,但是這次寫的功能是多條件搜索查詢分頁,就有點難度了,看官方手冊下面評論好多人問,
正常的分頁功能例子是這樣的:
1 $this->load->library('pagination'); 2 3 $config['base_url'] = 'http://example.com/index.php/test/page/'; 4 $config['total_rows'] = 200; 5 $config['per_page'] = 20; 6 7 $this->pagination->initialize($config); 8 9 echo $this->pagination->create_links();
多條件搜索查詢分頁例子:
1 class Monitors extends CI_Controller { 2 public function warning(){ 3 $config= array(); 4 $config['per_page'] = 15; //每頁顯示的數據數 5 $current_page = intval($this->input->get("per_page")); //獲取當前分頁頁碼數 6 7 $status=$this->input->get("filter-status",TRUE); 8 $level=$this->input->get('filter-level',TRUE); 9 $timestamp=$this->input->get('filter-timestamp',TRUE); 10 $all = $this->monitors_m->getAllData($current_page,$config['per_page'],$status,$timestamp,$level); 11 //這里返回的有總條數和具體的數據,根據自己的情況略加修改即可 12 $data['allevent'] = $all['content']; 13 $config['total_rows'] = $all['count'];//總條數 14 $config['num_links'] = 3;//頁碼連接數 15 $config['use_page_numbers'] = TRUE; 16 $config['page_query_strings'] = TRUE;//關鍵配置 17 $config['base_url'] = base_url().'index.php/monitors/warning?'&filter-status='.$status.'&filter-level='.$level.'&filter-timestamp='.$timestamp;//關鍵配置 18 $this->load->library('pagination');//加載ci pagination類 19 $this->pagination->initialize($config); 20 $data['page'] = $this->pagination->create_links();//關鍵代碼 21 $this->load->view("monitors_v",$data); 22 }
需要注意的幾個地方,第一個:
1 $config['page_query_strings'] = TRUE;//關鍵配置
第二個:
1 $config['base_url'] = base_url().'index.php/monitors/warning?'&filter-status='.$status.'&filter-level='.$level.'&filter-timestamp='.$timestamp;//關鍵配置
第三個:
1 $this->pagination->create_links();//關鍵代碼
第四個:這個是查詢的數據,返回的需要是分頁的數據,這個要注意,
1 $all = $this->monitors_m->getAllData($current_page,$config['per_page'],$status,$timestamp,$level);
把這些配置好,基本上就可以了,感謝大家!