0

我正在尝试在我的列表中添加搜索。我正在使用 codeigniter 和分页进行列表。搜索只是作为示例 id 的数据库搜索。搜索在分页的第一页中完美运行。但是当涉及到其他页面时,它不起作用。

这是我的控制器的代码。

  $this->clear_sample_id_catche();
  $out=$this->Mgeneral->listData();
  $per_page = 10;
  $total = $this->Mgeneral->countData();
  $data = $this->Mgeneral->listData($per_page, $this->uri->segment(3));

   $base_url = site_url('general/listData');

   $config['base_url'] = $base_url;
   $config['total_rows'] = $total;
   $config['per_page'] = $per_page;
   $config['uri_segment'] = '3';

  $this->pagination->initialize($config); 
  $data=array('body'=>'list','out'=>$data);

  $this->load->view('template',$data);

我在我的视图中添加了要搜索的表单。任何人都可以建议我的问题是什么?提前致谢。

4

1 回答 1

4

您一定忘记传递分页的搜索查询。看到页码是查询字符串的第三段,我猜测搜索表单POST在用户提交时会执行操作。用户提交表单后,它当然会起作用。因为他们只是做了一个请求,而您通过 using或类似POST的方式从中获取搜索查询。但是,当他们尝试通过单击页码链接(这是一个请求)导航到另一个页面时,搜索会失败,因为超全局数组是空的。$_POST$this->input->post('user_input')GET$_POST

解决此问题的一个解决方案是根据用户输入设置会话值(我建议您使用 CodeIgniter 的会话类),而不是使用来自的搜索查询,而是$_POST使用存储在会话中的那个。

您可以这样做的另一种方法是为搜索结果创建另一个页面(假设它当前与表单在同一页面中,即在同一控制器功能中)。然后让搜索表单GET向它自己的控制器函数发出请求,然后它将搜索查询编码为,并将编码字符串中的(等号)base64替换为。之后,将用户重定向到搜索结果页面,同时将编码的搜索查询作为 URL 查询字符串中的第三段传递(页码将是第四段)。并在该函数中替换back to并使用来获取搜索查询并将其传递给将生成搜索结果的函数。=..=base64_decode()

当然,还有很多其他方法可以达到相同的效果。只是谷歌它。

于 2012-04-16T07:33:48.367 回答