Kita semua pasti pernah menggunakan phpMyAdmin, interface MySql yang paling sering digunakan karena tanpa harus menginstal program lain, karena sudah masuk ketika kita menginstal xampp atau appserv atau aplikasi server lainnya.
Ketika kita menggunakan xampp misalnya, kita pasti pernah berhubungan dengan table ketika sedang bekerja dengan tabel pada database. Nah, ketika kita sedang membuka sebuah halaman dengan tabel ketika menggunakan phpMyAdmin, pasti kita akan menemui yang namanya sorting tabel. Ketika kita mengklik header tabel, maka isi tabel akan tersortir sesuai dengan kolom yang headernya diklik. Misal kita mengklik header id, maka id tersebut akan tersortir secara ascending ataupun descending.
Baik ga usah lama-lama lagi, langsung kita menuju ke TKP, kita mulai dengan controller:
public function display($sort_by = 'title', $sort_order = 'asc', $offset = 0)
{
$limit = 20;
$data['fields'] = array(
'id_pelanggan' => 'ID',
'pelanggan' => 'Pelanggan',
'tgl_pelanggan' => 'Tanggal'
);
$results = $this->msorting->search($limit, $offset, $sort_by, $sort_order);
$data['films'] = $results['rows'];
$data['num_results'] = $results['num_rows'];
$this->load->library('pagination');
$config = array();
$config['base_url'] = site_url("films/display/$sort_by/$sort_order");
$config['total_rows'] = $data['num_results'];
$config['per_page'] = $limit;
$config['uri_segment'] = 5;
$this->pagination->initialize($config);
$data['pagination'] = $this->pagination->create_links();
$data['sort_by'] = $sort_by;
$data['sort_order'] = $sort_order;
$this->load->view('sorting', $data);
}
Kemudian modelnya
function search($limit, $offset, $sort_by, $sort_order)
{
$sort_order = ($sort_order == 'desc') ? 'desc' : 'asc';
$sort_columns = array('id_pelanggan', 'pelanggan', 'tgl_pelanggan');
$sort_by = (in_array($sort_by, $sort_columns)) ? $sort_by : 'id_pelanggan';
$q = $this->db->select('id_pelanggan,pelanggan,tgl_pelanggan')
->from('pelanggan')
->limit($limit, $offset)
->order_by($sort_by, $sort_order);
$ret['rows'] = $q->get()->result();
$q = $this->db->select('COUNT(*) as count', FALSE)
->from('pelanggan');
$tmp = $q->get()->result();
$ret['num_rows'] = $tmp[0]->count;
return $ret;
}
Kemudian viewnya:
<table> <thead> <?php foreach($fields as $field_name => $field_display): ?> <th <?php if ($sort_by == $field_name) echo "class="sort_$sort_order"" ?>> <?php echo anchor("sorting/display/$field_name/" . (($sort_order == 'asc' && $sort_by == $field_name) ? 'desc' : 'asc') , $field_display); ?> </th> <?php endforeach; ?> </thead> <tbody> <?php foreach($films as $film): ?> <tr> <?php foreach($fields as $field_name => $field_display): ?> <td> <?php echo $film->$field_name; ?> </td> <?php endforeach; ?> </tr> <?php endforeach; ?> </tbody> </table> <?php if (strlen($pagination)): ?> <div> Pages: <?php echo $pagination; ?> </div> <?php endif; ?>
Maka jadilah aplikasi sorting table dengan menggunakan CodeIgniter. Untuk source dapat didonload disini. Semoga bermanfaat.