我是Codeigniter的新手,我正在尝试找出一种使用分页方式并过滤一些数据的方法。我有分页设置来显示表中的所有记录。我希望能够使用表中的特定列过滤这些记录。该列是int
。我的控制器为clients
,方法为index
,因此转到http://localhost/clients
将生成表格中的客户列表。当我转到另一个页面以显示更多结果时,网址会更改为http://localhost/clients/50
,具体取决于我所在的页面。现在,我的控制器方法有一个参数$client_status
,它同样是int
。由于CI使用URL的第二段进行分页,如何通过客户端状态传递参数进行过滤?这是代码的样子:
public function index($client_status = false) {
if(!$client_status) {
$data['clients'] = $this->clients_model->list_clients($config["per_page"], $page);
} else {
$data['clients'] = $this->clients_model->list_clients($config["per_page"], $page, $client_status);
}
我的模特:
public function list_clients($limit, $start, $client_status = false) {
if(!$client_status) {
$this->db->limit($limit, $start);
$this->db->select('*');
$this->db->from('clients');
$this->db->join('client_status', 'clients.client_status_id = client_status.client_status_id');
$query = $this->db->get();
if($query->num_rows() > 0) {
return $query->result();
} else {
return false;
}
} else {
$this->db->limit($limit, $start);
$this->db->select('*');
$this->db->from('clients');
$this->db->join('client_status', 'clients.client_status_id = client_status.client_status_id');
$this->db->where(array('clients.client_status_id' => $client_status));
$query = $this->db->get();
if($query->num_rows() > 0) {
return $query->result();
} else {
return false;
}
}
}
答案 0 :(得分:0)
为此,您必须将参数传递给查询字符串。在您的分页类配置中,请确保设置以下参数
$config = array(
'page_query_string' => TRUE,
'query_string_segment' => 'page', // the query string param for the page numbers
'reuse_query_string' => TRUE,
)
使用配置,您的网址将类似于