我有一个搜索字段,我想用分页显示结果。
在第一个结果页面中,每件事情都运作良好,但在其他页面中,没有任何错误就显示出来,并且当回到第一页时也会注意到。
我把发布的密钥放在会话中以避免丢失它。
但仍然注意到。
这是我的控制者:
public function search()
{
$this->session->set_userdata('searched',$this->input->post('searchterm'));
$searchterm = $this->session->userdata('searched');
$limit = ($this->uri->segment(3) > 0)?$this->uri->segment(3):0;
$config['base_url'] = base_url() . 'home/search';
$config['total_rows'] = $this->home_model->search_record_count($searchterm,$language);
$config['per_page'] = 10;
$config['uri_segment'] = 3;
$config['display_pages'] = TRUE;
$choice = $config['total_rows']/$config['per_page'];
$config['num_links'] = 3;
$this->pagination->initialize($config);
$data['results'] = $this->home_model->search($searchterm,$limit,$language);
$data['links'] = $this->pagination->create_links();
$data['searchterm'] = $searchterm;
$data['total']= $this->home_model->search_record_count($searchterm,$language);
putHeader();
putTop();
putTopmenu();
putSearch($data);
putFooter();
}
这是我的模特:
public function search_record_count($searchterm)
{
$sql = "SELECT COUNT(*) As cnt FROM content WHERE body LIKE '%" . $searchterm . "%'";
$q = $this->db->query($sql);
$row = $q->row();
return $row->cnt;
}
public function search($searchterm,$limit)
{
$data = $this->db
->select('content.title,content.id,content.category,content.body,path')
->from('content')
->join('categories','noor_content.category = categories.id')
->like('noor_content.title', $searchterm)
->like('noor_content.body', $searchterm)
->limit("5")
->order_by("content.id","DESC")
->get();
if($data->num_rows() > 0)
{
return $data->result();
//print_r($data);exit();
}
else
{
return 0;
}
}
答案 0 :(得分:0)
问题是您不是根据分页限制查询。在您的控制器中,您将获得第3个URL段
$limit = ($this->uri->segment(3) > 0)?$this->uri->segment(3):0;
并将它传递给你模特,但是你没有做任何事情。在你的模型中,你想做类似
的事情$data = $this->db
->select('content.title,content.id,content.category,content.body,path')
->from('content')
->join('categories','noor_content.category = categories.id')
->like('noor_content.title', $searchterm)
->like('noor_content.body', $searchterm)
->limit("10, " . $limit) //Edited this line
->order_by("content.id","DESC")
->get();
答案 1 :(得分:0)
我认为你应该使用method ='get'而不是post ...我的意思是这样的事情......
<form method="get" action="your_controller/your_function">
//your search form
</form>
使用get而不是post你不必使用任何会话变量,你可以在控制器中轻松访问它们
$this->input->get('feild_name');
此外,您不会遇到第二页或任何其他页面的问题,因为所有搜索字段都会附加到网址中,您可以使用$this->input->get('feild_name');
轻松访问它,直到您的网址更改为其他内容..我也会节省你的编码..