2013-10-01 70 views
2

我这个Paginate with search result落实到我的CI项目,但我无法让我的PAGINATE链接进入下一个页面,例如:笨分页链接到404页面未找到

我的搜索页面第一时加载是http://localhost/ci_project/search,当我点击分页链接,将去http://localhost/ci_project/search/2,页面显示404 Page Not Found

有人能帮我弄清楚我的代码有什么问题吗?我在解决方案上尝试了很多建议,但无法提供帮助,大部分问题来自$config['base_url'] = base_url('search');,但没有一个能够提供帮助。

型号:

public function do_search_count($keywords) 
{ 
    $sql = "SELECT COUNT(*) AS cnt FROM products WHERE MATCH (name, manufacturer) AGAINST ('".$keywords."')"; 
    $q = $this->db->query($sql); 
    $row = $q->row(); 
    return $row->cnt; 
} 

public function do_search($keywords, $per_page, $limit) 
{ 
    $this->db->escape($keywords); 

    $this->db->where('MATCH (name, manufacturer) AGAINST ("'.$keywords.'") LIMIT '.$per_page.', '.$limit, NULL, FALSE); 
    $query = $this->db->get('products'); 

    if($query->num_rows() > 0){ 
     return $query->result(); 
    }else{ 
     return false; 
    } 
} 

控制器:

function search() 
{ 
    $keywords = $this->input->post('search'); 

    $searchterm = $this->db_model->searchterm_handler($this->input->get_post('search', TRUE)); 
    $limit = ($this->uri->segment(2) > 0)?$this->uri->segment(2):0; 

    $config['base_url'] = base_url('search'); 
    $config['total_rows'] = $this->db_model->do_search_count($searchterm); 
    $config['per_page'] = 5; 
    $config['uri_segment'] = 2; 
    $config['use_page_numbers'] = TRUE; 
    $choice = $config['total_rows']/$config['per_page']; 
    $config['num_links'] = round($choice); 

    $this->pagination->initialize($config); 

    $data['results'] = $this->db_model->do_search(trim($keywords), $limit, $config['per_page']); 
    $data['pagination'] = $this->pagination->create_links(); 
    $data['searchterm'] = $searchterm; 

    $data['total'] = count($data['results']); 
    $data['title'] = 'Search'; 

    $this->load->view('header', $data); 
    $this->load->view('search', $data); 
    $this->load->view('footer', $data); 
} 

感谢。

回答

2

尝试:

$config['base_url'] = base_url('controller_name/search'); 
$config['uri_segment'] = 3; 
+0

这个工作,但是当我去第2页,显示没有记录,并从第2页发生第1页 – conmen

+1

对于您需要检查您的查询是否正确设置了限制和偏移量。使用'$ this-> db-> last_query()'输出你的查询。考虑接受答案,如果它帮助你。 –

+0

@ Nil'z my $ this-> db-> last_query()在第一页显示'SELECT * FROM user_data LIMIT 5',但是当我点击'page 2'时,它移动到'object not found 404' :(请帮我解决:( –

0

http://localhost/ci_project/search/2在笨可能正试图执行被称为2与通常的配置方法,如果你的方法是search一定要调用的URL在http://localhost/ci_project/search_controller/search/2

如果要出于某种原因更改了配置,你就可以开始陷here

+0

我已重映射'$ route ['search /(:num)'] ='search_controller/search/$ 1';'在routes.php中。现在我的分页链接可以工作,但是当我进入下一页'http:// localhost/irenov/search/2'时,没有剩余记录显示? – conmen