phpcodeignitercodeigniter-3

Codeigniter Select and Count MySQL Records


Using Codeigniter 3, I would like to display all the records from a table in a MySQL database. I'd also like to include the number of records selected.

For example;

Showing x number of records;

record 1
record 2
record 3
etc

Currently I have the following (which works);

// select all records
public function selectRecords() {
    $this->db->select('*');
    $this->db->from('records');
    $query = $this->db->get();
    return $query->result_array();
}

// count all records 
public function countRecords() {
    $this->db->select('count(*) as count');
    $this->db->from('records');
    $query = $this->db->get();
    return $query->row();
}

My question is do I need two separate queries in order to achieve this (select and count)?

Is there a more efficient way of achieving what I want?


Solution

  • You can do something like this :

    public function selectRecords() 
    {
        $query = $this->db->get('records');
        if ($query->num_rows() > 0 )
        {
           $records = $query->result_array();
           $data['count'] = count($records);
           $data['all_records'] = $records;
           return $data;
        }  
    }
    

    Pass it to the view from your controller :

     $data = $this->model_name->selectRecords();
     /*print_r($data) to see the output*/
     $this->load->view('your_view',$data);
    

    In view :

    <?php echo $count .' number of records';?>