Menu Close

CodeIgniter 3 – Membuat Datatables Server Side

Untuk penanganan data dalam jumlah kecil, penggunaan datatables client side di rasa cukup dan tidak akan terlihat loading yang lambat. Tetapi untuk jumlah data yang besar hal ini akan sangat terasa ketika halaman di load pertama kali. Solusi dari permasalahan ini adalah penggunaan datatables server side, karena pemrosesan dilakukan di sisi server dan tidak semua data akan di load.

Kali ini kita akan membuat datatables dengan metode server side untuk penanganan data yang besar. Kita akan menggunakan database yang sudah pernah kita gunakan pada artikel-artikel sebelumnya atau dapat di download pada menu download pilih database daerah.sql

Langsung saja untuk membuat datatables server side sebagai berikut:

Membuat model

Buat model dengan nama Serverside_model.php, kemudian ketikkan script dibawah

See also  Call to undefined function curl_init() in codeigniter 3.0

Membuat controller

Buat controller dengan nama Serverside.php, kemudian ketikkan script dibawah:

See also  Menghitung Otomatis Berdasarkan Nilai Inputan dengan JQuery di CodeIgniter 3

Membuat view

Buat view dengan nama serverside.php, kemudian ketikkan script dibawah:

See also  Membuat Button Export dan Print pada Datatables Serverside

Jika langkah-langkah di atas sudah sesuai maka akan didapatkan hasil seperti berikut ini

datatables_serverside

Tampilan datatables server side

Nah, demikian bahasan kita kali ini tentang datatables server side. Jika ada yang kurang jelas silahkan isi kolom komentar. Terimakasih.

Posted in CodeIgniter

YOU MIGHT BE INTERESTED IN

11 Comments

  1. Suyud

    mas saya masih bingung pemberian nama file php kok ada 2 yang namanya sama jadi salah satu saya beri nama lain
    mohon pencerahan trims Kera Ngalam

    • mylitenotes

      yang satu sebagai controller, satu lagi sebagai view. Bokeh aja diganti nama filenya, yang penting pemanggilan controller atau view disesuaikan dengan nama filenya

    • mylitenotes

      Biasanya ada field tabel yang salah pemanggilan. Coba inspect element kemudian lihat pada tab network, nanti dapat di lihat errornya dimana.

      • yuslan

        ‘asc’);

        private function _get_datatables_query()
        {
        $this->db->select(‘a.id, a.nik, a.nama_perangkat as perangkat, a.tgl_lahir, a.jk, a.pendidikan, a.jabatan, a.sk, a.tgl_diangkat, a.tgl_akhir, a.nomor_hp, a.email, a.agama, b.nama as provinsi, c.nama as kabupaten, d.nama as kecamatan, e.nama as desa’);
        $this->db->from(‘tbl_perangkat_desa as a’);
        $this->db->join(‘wilayah_provinsi as b’, ‘a.provinsi_id = b.id’);
        $this->db->join(‘wilayah_kabupaten as c’, ‘a.kabupaten_id = c.id’);
        $this->db->join(‘wilayah_kecamatan as d’, ‘a.kecamatan_id = d.id’);
        $this->db->join(‘wilayah_desa as e’, ‘a.desa_id = e.id’);

        $i = 0;

        foreach ($this->column_search as $item) {
        if ($_POST[‘search’][‘value’]) {
        if ($i === 0) {
        $this->db->group_start();
        $this->db->like($item, $_POST[‘search’][‘value’]);
        } else {
        $this->db->or_like($item, $_POST[‘search’][‘value’]);
        }

        if (count($this->column_search) – 1 == $i)
        $this->db->group_end();
        }
        $i++;
        }

        if (isset($_POST[‘order’])) {
        $order_column = $this->column_order[$_POST[‘order’][‘0’][‘column’]];
        $order_dir = $_POST[‘order’][‘0’][‘dir’];
        $this->db->order_by($order_column, $order_dir);
        } else {
        $order_column = key($this->order);
        $order_dir = $this->order[key($this->order)];
        $this->db->order_by($order_column, $order_dir);
        }
        }

        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();
        }

        public function count_filtered()
        {
        $this->_get_datatables_query();
        $query = $this->db->get();
        return $query->num_rows();
        }

        public function count_all()
        {
        $this->db->from(‘tbl_perangkat_desa’);
        return $this->db->count_all_results();
        }
        }

          • yuslan

            var $column_order = array(‘id’, ‘provinsi’, ‘kabupaten’, ‘kecamatan’, ‘desa’, ‘nik’, ‘perangkat’, ‘tgl_lahir’, ‘jk’, ‘pendidikan’, ‘jabatan’, ‘sk’, ‘tgl_diangkat’, ‘tgl_akhir’, ‘nomor_hp’, ’email’, ‘agama’);
            var $column_search = array(‘id’, ‘provinsi’, ‘kabupaten’, ‘kecamatan’, ‘desa’, ‘nik’, ‘perangkat’, ‘tgl_lahir’, ‘jk’, ‘pendidikan’, ‘jabatan’, ‘sk’, ‘tgl_diangkat’, ‘tgl_akhir’, ‘nomor_hp’, ’email’, ‘agama’);
            var $order = array(‘id’ => ‘asc’);

  2. yuslan

    berikut modelnya gan
    ‘asc’);

    private function _get_datatables_query()
    {
    $this->db->select(‘a.id, a.nik, a.nama_perangkat as perangkat, a.tgl_lahir, a.jk, a.pendidikan, a.jabatan, a.sk, a.tgl_diangkat, a.tgl_akhir, a.nomor_hp, a.email, a.agama, b.nama as provinsi, c.nama as kabupaten, d.nama as kecamatan, e.nama as desa’);
    $this->db->from(‘tbl_perangkat_desa as a’);
    $this->db->join(‘wilayah_provinsi as b’, ‘a.provinsi_id = b.id’);
    $this->db->join(‘wilayah_kabupaten as c’, ‘a.kabupaten_id = c.id’);
    $this->db->join(‘wilayah_kecamatan as d’, ‘a.kecamatan_id = d.id’);
    $this->db->join(‘wilayah_desa as e’, ‘a.desa_id = e.id’);

    $i = 0;

    foreach ($this->column_search as $item) {
    if ($_POST[‘search’][‘value’]) {
    if ($i === 0) {
    $this->db->group_start();
    $this->db->like($item, $_POST[‘search’][‘value’]);
    } else {
    $this->db->or_like($item, $_POST[‘search’][‘value’]);
    }

    if (count($this->column_search) – 1 == $i)
    $this->db->group_end();
    }
    $i++;
    }

    if (isset($_POST[‘order’])) {
    $order_column = $this->column_order[$_POST[‘order’][‘0’][‘column’]];
    $order_dir = $_POST[‘order’][‘0’][‘dir’];
    $this->db->order_by($order_column, $order_dir);
    } else {
    $order_column = key($this->order);
    $order_dir = $this->order[key($this->order)];
    $this->db->order_by($order_column, $order_dir);
    }
    }

    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();
    }

    public function count_filtered()
    {
    $this->_get_datatables_query();
    $query = $this->db->get();
    return $query->num_rows();
    }

    public function count_all()
    {
    $this->db->from(‘tbl_perangkat_desa’);
    return $this->db->count_all_results();
    }
    }

    /* End of file ModelName.php */

Leave a Reply

Your email address will not be published. Required fields are marked *