【发布时间】:2016-02-16 15:44:13
【问题描述】:
我是 Codeigniter 的新手,我正在尝试找出一种使用分页并过滤一些数据的方法。我有分页设置来显示表格中的所有记录。我希望能够使用表中的特定列过滤这些记录。该列是int。我的控制器是clients,方法是index,所以转到http://localhost/clients 将在表格中生成一个客户列表。当我转到另一个页面以显示更多结果时,URL 会根据我所在的页面更改为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;
}
}
}
【问题讨论】:
标签: php mysql codeigniter pagination