有没有人知道如何使用CodeIgniter在第二页链接上运行关键字来进行分页搜索?
我想在搜索中添加一个分页。我的关键字搜索似乎工作正常,我使用一个搜索键表单,我可以看到正确的第一页显示,但问题是我无法使第二页链接工作和其他页面链接。假设有两个不同的请求(当用户点击搜索按钮,分页链接时)
如何让分页链接运行?
答案 0 :(得分:1)
您是否已成功创建分页链接?
您需要有一个名为的CI功能,例如“搜索”。这将采用两个参数,search_query和page。
对于每个页面加载,您需要重新运行搜索查询,但在SQL中使用LIMIT函数仅返回所需的结果,即该页面范围..您还需要在某处设置每页的结果数量
我现在没有我的CI项目发布代码,但你应该按照以下思路思考:
SELECT required_info 来自searchable_table 在哪里searchable_field =“搜索查询” 限制0,49
上述查询将返回包含50个结果的第一页的结果。
要对您使用的第二页执行此操作:LIMIT 50,100等等......
计算第一个参数使用:resultsPerPage * pageNum
答案 1 :(得分:0)
我想在搜索单词时使用分页,我只有一个输入表单。我目前的问题是当我点击第二页或第三页等时,它会显示不属于关键字搜索的数据库的所有数据列表。
有没有人可以帮我解决这个问题?我被困了
以下是当前代码:
控制器
public function index() {
// If search button doesn't press
if(!isset($_POST['search'])) {
// reset the search terms session
$this->session->unset_userdata($this->tabKeyword);
// application_search is our view that contains the form
$this->displayFilm();
} else {
$keyword = $this->input->post('keyword');
if ($keyword) {
$this->tabKeyword = $keyword;
// Set keyword value into session
$this->session->set_userdata('s_keyword', $this->tabKeyword);
}
$this->displaySearchResult();
}
}
/*
* Display the search result when using keyword as search item
* @class Public
* @param void
* @return void
*/
public function displaySearchResult() {
$data['title'] = "Search Results";
// Get the third parameter defined of segment in URL
$offset = $this->uri->segment(4);
// Get total results of keyword search item
$total_results = $this->film_model->totalSearchCount($this->input->post('keyword'));
echo 'Total Results: ' . $total_results . "<br/>";
$getKeyword = $this->session->userdata('s_keyword');
echo 'Keyword session: ' . $getKeyword . "<br/>";
$config['base_url'] = base_url() . '/index.php/film_controller/displaySearchResult/' . $getKeyword;
$config['total_rows'] = $total_results; // Must return the number of keyword search result
$config['uri_segment'] = '4';
$config['per_page'] = $this->results_per_page;
// Init pagination, add results search items in searchResults array then load it in View
$this->pagination->initialize($config);
$data['searchResults'] = $this->film_model->getSearch($this->input->post('keyword'), $this->results_per_page, $offset);
$this->load->view('film_result', $data);
}
public function displayFilm() {
$total = $this->film_model->countAll();
$offset = $this->uri->segment(3);
$config['base_url'] = base_url() . '/index.php/film_controller/displayFilm';
$config['total_rows'] = $total;
$config['uri_segment'] = '3';
$config['per_page'] = $this->results_per_page;
$this->pagination->initialize($config);
$data['results'] = $this->film_model->getData($config['per_page'], $offset);
$this->load->view('film', $data);
}
模型
function countAll() {
return $this->db->count_all('film_list');
}
public function getData($limit, $offset) {
$this->db->select('actors, title, description, category');
$query = $this->db->get('film_list', $limit, $offset);
return $query;
}
public function getSearch($keyword, $limit, $offset) {
$this->db->like('actors', $keyword);
$this->db->or_like('title', $keyword);
$this->db->or_like('category', $keyword);
$this->db->order_by('title', 'ASC');
$results = $this->db->get('film_list', $limit, $offset);
return $results->result_array();
}
/*
* @access Public
* @param keyword
* @return void
*/
public function totalSearchCount($keyword) {
$this->db->like('actors', $keyword);
$this->db->or_like('title', $keyword);
$this->db->or_like('category', $keyword);
return $this->db->count_all_results('film_list');
}