【发布时间】:2026-02-16 22:55:02
【问题描述】:
我正在处理搜索页面,因为搜索基于数组$s_id。一旦我使用一些输入值进行搜索,搜索结果将与分页链接一起完美显示。(分页链接也很完美。如果我有 6 个结果并且 per_page 是 2,那么它显示 3 页链接 )。
现在我的问题是,一旦我点击第 2 页显示空白页,我尝试在第 2 页打印 $s_id 然后数组显示为 Array ( [0] => ),这意味着在第 2 页上 $s_id 有一些其他值.
控制器
public function index()
{
$s_id = array();
$skills = $this->input->post('skills');
//pagination settings
$config['per_page'] = 2;
$config['base_url'] = site_url('search');
$config['first_url'] = site_url('search/').'1';
$config['use_page_numbers'] = TRUE;
$config['num_links'] = 3;
$config['uri_segment'] = 2;
$config['cur_tag_open'] = "<li><span><b>";
$config['cur_tag_close'] = "</b></span></li>";
$config['full_tag_open'] = '<ul class="pagination pagination-large">';
$config['full_tag_close'] = '</ul>';
$config['prev_tag_open'] = '<li>';
$config['prev_tag_close'] = '</li>';
$config['next_tag_open'] = '<li>';
$config['next_tag_close'] = '</li>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li class="active"><a>';
$config['cur_tag_close'] = '</a></li>';
$page = $this->uri->segment(2);
$limit_end = ($page * $config['per_page']) - $config['per_page'];
if ($limit_end < 0){
$limit_end = 0;
}
if($skills == TRUE || $this->uri->segment(2) == TRUE){
$s_id = explode(',', $skills[0]);
if($s_id){
$filter_session_data['skill_id_selected'] = $s_id;
}else{
$s_id = $this->session->userdata('skill_id_selected');
}
$data['skill_id_selected'] = $s_id;
if(isset($filter_session_data)){
$this->session->set_userdata($filter_session_data);
}
// print_r($s_id); exit(); //commented
// $s_id = array('2D Design','3D Design'); //commented
$data['count_user'] = $this->m_results->count_users($s_id);
$config['total_rows'] = $data['count_user'];
$data['freelancers'] = $this->m_results->search_people($s_id,$config['per_page'],$limit_end);
$this->pagination->initialize($config);
$this->load->view('include/header');
$this->load->view('search',$data);
$this->load->view('include/footer');
}else{
$this->load->view('include/header');
$this->load->view('search');
$this->load->view('include/footer');
}
}
型号
public function search_people($s_id,$limit_start,$limit_end)
{
$this->db->from('search_result');
if($s_id){
$this->db->where("FIND_IN_SET('$s_id[0]', skills) != ", 0);
for($x=1; $x < count($s_id); $x++) {
$this->db->or_where("FIND_IN_SET('$s_id[$x]', skills) != ", 0);
}
}
$this->db->limit($limit_start, $limit_end);
$query = $this->db->get();
return $query->result_array();
}
public function count_users($s_id=null)
{
if($s_id){
$this->db->where("FIND_IN_SET('$s_id[0]', skills) != ", 0);
for($x=1; $x < count($s_id); $x++) {
$this->db->or_where("FIND_IN_SET('$s_id[$x]', skills) != ", 0);
}
}
$query = $this->db->get();
return $query->num_rows();
}
请帮我解决这个问题。
【问题讨论】:
-
给出第一页和第二页搜索结果的示例url(你在浏览器中看到的)
-
首页:
http://localhost:8888/codeigniter/search。第二页:http://localhost:8888/codeigniter/search/2。我认为 URL 一切正常。 -
网址看起来不错。但是
$skills = $this->input->post('skills');- 是第 2 页的问题。看看下面我的答案
标签: php arrays codeigniter pagination