使用分页Codeigniter过滤数据

时间:2015-11-15 13:26:26

标签: php mysql codeigniter pagination

我是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;

            }

        }


    }

1 个答案:

答案 0 :(得分:0)

为此,您必须将参数传递给查询字符串。在您的分页类配置中,请确保设置以下参数

$config = array(
  'page_query_string'       => TRUE,
  'query_string_segment'    => 'page', // the query string param for the page numbers
  'reuse_query_string'      => TRUE,
)

使用配置,您的网址将类似于

http://example.com/clients?param=value&page=2