0

I have a table name 'ap_appointment' it have field 'ap_time'(TIME) and 'ap_date'(DATE) . i would like to order the result in such a way the resulted array must be sorted by 'ap_date' DATE in "Descending" order at the same time the resulted array must be ordered by ap_time TIME in "ascending" order . I am using mysql

var $order = array('ap_date' => 'desc','ap_time' => 'asc'); // default order 

public function __construct()
{
    parent::__construct();
    $this->load->database();
}

private function _get_datatables_query()
{

    $CI =& get_instance();
    $userinfo=$CI->session->userdata('userinfo');
    $this->db->from($this->table);
    // Filter the appoinment list for particular Clinic & Receptionist
    $this->db->where('ap_clinic_id',$userinfo['id']);

    // Filter the appoinment list for particular doctor
    if($userinfo['type']=='doctor')
    {
    $this->db->where('ap_doctor',$userinfo['user_id']);
    }

    $i = 0;

    foreach ($this->column_search as $item) // loop column 
    {
        if($_POST['search']['value']) // if datatable send POST for search
        {

            if($i===0) // first loop
            {
                $this->db->group_start(); // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND.
                $this->db->like($item, $_POST['search']['value']);
            }
            else
            {
                $this->db->or_like($item, $_POST['search']['value']);
            }

            if(count($this->column_search) - 1 == $i) //last loop
                $this->db->group_end(); //close bracket
        }
        $i++;
    }

    if(isset($_POST['order'])) // here order processing
    {
        $this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
    } 
    else if(isset($this->order))
    {
        $order = $this->order;
        $this->db->order_by(key($order), $order[key($order)]);
    }
}

function get_datatables()
{
    $this->_get_datatables_query();
    if($_POST['length'] != -1)
    $this->db->limit($_POST['length'], $_POST['start']);
    $query = $this->db->get();
    return $query->result();
}

The resulted output table must be like this enter image description here

kashif
  • 193
  • 2
  • 19

0 Answers0