Dua tahun yang lalu, saya mulai mengenal datatables. Datatables benar-benar mengagumkan.
Saya sendiri telah banyak mengerjakan project menggunakan datatables, karena simple, mudah, dan adanya fitur filter, show per-page, dan pagination.
Saya yakin anda sudah tidak asing lagi dengan datatables, itulah kenapa Anda membaca artikel ini.
Beberapa bulan yang lalu, saya mengerjakan project Point Of Sale (POS) menggunakan datatables dan codeigniter.
Semua berjalan baik pada awalnya, disaat data produk telah mencapai 12,000 record, masalah pun muncul. Data yang diload sangat lambat dan sering tidak merespon (not responding) pada browser.
Hal itu sangat menjengkelkan, saya yakin Anda juga pernah memiliki masalah yang sama.
Cukup bingung dengan masalah tersebut, saya hampir memutuskan untuk tidak menggunakan datatables dan beralih untuk membuat pagination bawaan codeigniter dan membuat filter (pencarian) sendiri.
Usut punya usut, saya menyadari sesuatu. Ternyata pagination bawaan codeigniter datanya di proses di sisi server (server-side processing).
Kemudian saya mulai menelusuri server-side processing dengan datatables. Akhirnya nemu juga. Memang terbukti load data 12,000 record jauh lebih cepat.
Beberapa bulan yang lalu saya telah menulis artikel tentang datatable server-side processing menggunakan codeigniter.
Akan tetapi, untuk membuat server-side processing menggunakan datatables masih harus menulis lebih banyak baris coding.
Merasa tidak puas dengan hal ini, akhirnya saya mencoba menelusuri lebih dalam lagi. Dan klimaks-nya saya menemukan sebuah library yang sangat bagus untuk datatables server-side processing yaitu ignited-datatables.
Ignited-datatables merupakan sebuah library untuk membuat datatables server-side processing tanpa perlu menuliskan kode program yang kompleks.
Ignited-datatables juga mudah untuk JOIN Table, format angka, render image, dll.
Beruntunglah anda menemukan artikel ini, karena saya akan mengupas tuntas bagaimana membuat CRUD (Create Read Update Delete) datatables server-side processing dari join table sekaligus format angka dengan framework codeigniter.
PERSIAPAN
Sebelum proses pembuatan, ada tahap yang tidak boleh anda lewatkan begitu saja. Yaitu tahap persiapan.
Apa saja yang perlu anda persiapkan?
Berikut listnya:
Codeiginter, jika anda belum memilikinya silahkan download di situs resminya www.codeigniter.com
Jquery, Jika anda belum memilikinya, silahkan download di situs resminya www.jquery.com
Bootstrap, bootstrap ini berfungsi untuk mempercantik tampilan. Jika anda belum memilikinya, silahkan download di situs resminya www.getbootstrap.com
Ignited-datatables, untuk mendownloadnya, silahkan download di github: https://github.com/IgnitedDatatables/Ignited-Datatables
Datatables, untuk mendownloadnya, silahkan download di official websiteya: https://datatables.net/
Bootstrap datatable, bootstrap datatable ini untuk style dari datatable. Tidak wajib, tapi penting untuk mempercantik tampilan datatable. Untuk mendownloadnya silahkan kunjungi link berikut: https://datatables.net/manual/styling/bootstrap
#1. Pembuatan Struktur Database dan Table
Berikutnya, yang perlu anda lakukan adalah pembuatan database dan struktur table.
Database, buat database dengan mengeksekusi query berikut:
CREATE DATABASE crud_ignited;
Pada query diatas, anda akan mendapatkan sebuah database dengan nama crud_ignited.
Table, buat dua table yaitu table kategori dan tabel barang.
Buat Tabel kategori dengan mengeksekusi query berikut:
CREATE TABLE kategori( kategori_id INT PRIMARY KEY AUTO_INCREMENT, kategori_nama VARCHAR(50) )ENGINE INNODB;
Buat Tabel barang dengan mengeksekusi query berikut:
CREATE TABLE barang( barang_kode VARCHAR(10) PRIMARY KEY, barang_nama VARCHAR(100), barang_harga DOUBLE, barang_kategori_id INT, FOREIGN KEY (barang_kategori_id) REFERENCES kategori (kategori_id) ON UPDATE CASCADE )ENGINE INNODB;
#2. Installasi Codeigniter
Untuk menginstall codeigniter, silahkan extract codeigniter yang sudah di download sebelumnya ke folder www (jika menggunakan wampserver) atau htdocs (jika menggunakan XAMPP).
Kemudian rename (ganti nama) project codeigniter anda sesuai dengan project Anda. Disini saya memberi nama crud_ignited.
Setelah di extract, buat folder assets sejajar dengan folder application dan system, kemudian sertakan file bootstrap, datatables, dan jquery didalam folder assets. Sehingga terlihat struktur project kita seperti berikut:
Pada gambar diatas dapat dilihat, bahwa didalam folder assets terdapat folder css, fonts, images, dan js.
Didalam folder css, terdapat file bootstrap.css, dataTables.bootstrap.css, dan jquery.datatables.min.css.
Didalam folder js, terdapat file bootstrap.js, dataTables.bootstrap.js, jquery-2.1.4.min.js, dan jquery.datatables.min.js.
Sedangkan folder fonts dan images merupakan folder bawaan bootstrap.
#3. Konfigurasi Codeigniter
Buka application/config/autoload.php atur menjadi seperti berikut:
$autoload['libraries'] = array('database'); $autoload['helper'] = array('url');
Buka application/config/config.php dan atur menjadi seperti berikut:
$config['base_url'] = 'http://localhost/crud_ignited/';
Terakhir buka application/config/database.php
$active_group = 'default'; $query_builder = TRUE; $db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'crud_ignited', //sesuaikan dengan database anda! 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE );
Selanjutnya, Copy-kan file Datatables.php dari ignited-datatables ke folder application/libaries/.
Maka akan terlihat seperti gambar berikut:
#4. Buat model dengan nama Crud_model.php
Kemudian ketikan kode berikut:
<?php class Crud_model extends CI_Model{ function get_kategori(){ //ambil data kategori dari table kategori $hsl=$this->db->get('kategori'); return $hsl; } function get_all_produk() { //ambil data barang dari table barang yang akan di generate ke datatable $this->datatables->select('barang_kode,barang_nama,barang_harga,kategori_id,kategori_nama'); $this->datatables->from('barang'); $this->datatables->join('kategori', 'barang_kategori_id=kategori_id'); $this->datatables->add_column('view', '<a href="javascript:void(0);" class="edit_record btn btn-info btn-xs" data-kode="$1" data-nama="$2" data-harga="$3" data-kategori="$4">Edit</a> <a href="javascript:void(0);" class="hapus_record btn btn-danger btn-xs" data-kode="$1">Hapus</a>','barang_kode,barang_nama,barang_harga,kategori_id,kategori_nama'); return $this->datatables->generate(); } }
Pada model Crud_model terdapat dua function, yaitu function get_kategori() dan function get_all_produk().
Function get_kategori(), berfungsi untuk menampilkan data kategori ke dalam selectbox nantinya.
Function get_all_produk(), berfungsi untuk menampilkan data barang yang diambil dari hasil join antara tabel barang dan kategori.
#5. Buat Controller dengan nama Crud.php
Kemudian ketikan kode berikut:
<?php class Crud extends CI_Controller{ function __construct(){ parent::__construct(); $this->load->library('datatables'); //load library ignited-dataTable $this->load->model('crud_model'); //load model crud_model } function index(){ $x['kategori']=$this->crud_model->get_kategori(); $this->load->view('crud_view',$x); } function get_produk_json() { //data data produk by JSON object header('Content-Type: application/json'); echo $this->crud_model->get_all_produk(); } function simpan(){ //function simpan data $data=array( 'barang_kode' => $this->input->post('kode_barang'), 'barang_nama' => $this->input->post('nama_barang'), 'barang_harga' => $this->input->post('harga'), 'barang_kategori_id' => $this->input->post('kategori') ); $this->db->insert('barang', $data); redirect('crud'); } function update(){ //function update data $kode=$this->input->post('kode_barang'); $data=array( 'barang_nama' => $this->input->post('nama_barang'), 'barang_harga' => $this->input->post('harga'), 'barang_kategori_id' => $this->input->post('kategori') ); $this->db->where('barang_kode',$kode); $this->db->update('barang', $data); redirect('crud'); } function delete(){ //function hapus data $kode=$this->input->post('kode_barang'); $this->db->where('barang_kode',$kode); $this->db->delete('barang'); redirect('crud'); } }
Pada controller Crud diatas terdapat lima function, yaitu function index(), function get_produk_json(), function simpan(), function update(), dan function delete().
Function index(), berfungsi untuk menampilkan sebuah dengan nama crud_view sekaligus membawa data kategori yang di simpan dalam array.
Function get_produk_json(), berfungsi untuk menampilkan data barang dari hasil join antara tabel barang dan tabel kategori, kemudian di rubah kedalam format JSON (Javascript Object Notation) Object.
Function simpan(), berfungsi untuk menyimpan data kedalam tabel barang dari form.
Function update(), berfungsi untuk mengkoreksi / update data barang dari database.
Function delete(), berfungsi untuk menghapus record (baris) pada table barang dari database.
#6. Buat View dengan nama crud_view.php
Kemudian ketikan kode berikut:
<html lang="id"> <head> <meta charset="utf-8"> <title>Crud dengan ignited datatables pada CodeIgniter</title> <link href="<?php echo base_url().'assets/css/bootstrap.css'?>" rel="stylesheet" type="text/css"/> <link href="<?php echo base_url().'assets/css/jquery.datatables.min.css'?>" rel="stylesheet" type="text/css"/> <link href="<?php echo base_url().'assets/css/dataTables.bootstrap.css'?>" rel="stylesheet" type="text/css"/> </head> <body> <div class="container"> <h2>Product List</h2> <button class="btn btn-success" data-toggle="modal" data-target="#myModalAdd">Add New</button> <table class="table table-striped" id="mytable"> <thead> <tr> <th>Product Code</th> <th>Product Name</th> <th>Price</th> <th>Category</th> <th>Action</th> </tr> </thead> </table> </div> <!-- Modal Add Produk--> <form id="add-row-form" action="<?php echo base_url().'index.php/crud/simpan'?>" method="post"> <div class="modal fade" id="myModalAdd" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" id="myModalLabel">Add New</h4> </div> <div class="modal-body"> <div class="form-group"> <input type="text" name="kode_barang" class="form-control" placeholder="Kode Barang" required> </div> <div class="form-group"> <input type="text" name="nama_barang" class="form-control" placeholder="Nama Barang" required> </div> <div class="form-group"> <select name="kategori" class="form-control" placeholder="Kode Barang" required> <?php foreach ($kategori->result() as $row) :?> <option value="<?php echo $row->kategori_id;?>"><?php echo $row->kategori_nama;?></option> <?php endforeach;?> </select> </div> <div class="form-group"> <input type="text" name="harga" class="form-control" placeholder="Harga" required> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="submit" id="add-row" class="btn btn-success">Save</button> </div> </div> </div> </div> </form> <!-- Modal Update Produk--> <form id="add-row-form" action="<?php echo base_url().'index.php/crud/update'?>" method="post"> <div class="modal fade" id="ModalUpdate" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" id="myModalLabel">Update Produk</h4> </div> <div class="modal-body"> <div class="form-group"> <input type="text" name="kode_barang" class="form-control" placeholder="Kode Barang" required> </div> <div class="form-group"> <input type="text" name="nama_barang" class="form-control" placeholder="Nama Barang" required> </div> <div class="form-group"> <select name="kategori" class="form-control" placeholder="Kode Barang" required> <?php foreach ($kategori->result() as $row) :?> <option value="<?php echo $row->kategori_id;?>"><?php echo $row->kategori_nama;?></option> <?php endforeach;?> </select> </div> <div class="form-group"> <input type="text" name="harga" class="form-control" placeholder="Harga" required> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="submit" id="add-row" class="btn btn-success">Update</button> </div> </div> </div> </div> </form> <!-- Modal Hapus Produk--> <form id="add-row-form" action="<?php echo base_url().'index.php/crud/delete'?>" method="post"> <div class="modal fade" id="ModalHapus" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" id="myModalLabel">Hapus Produk</h4> </div> <div class="modal-body"> <input type="hidden" name="kode_barang" class="form-control" placeholder="Kode Barang" required> <strong>Anda yakin mau menghapus record ini?</strong> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="submit" id="add-row" class="btn btn-success">Hapus</button> </div> </div> </div> </div> </form> <script src="<?php echo base_url().'assets/js/jquery-2.1.4.min.js'?>"></script> <script src="<?php echo base_url().'assets/js/bootstrap.js'?>"></script> <script src="<?php echo base_url().'assets/js/jquery.datatables.min.js'?>"></script> <script src="<?php echo base_url().'assets/js/dataTables.bootstrap.js'?>"></script> <script> $(document).ready(function(){ // Setup datatables $.fn.dataTableExt.oApi.fnPagingInfo = function(oSettings) { return { "iStart": oSettings._iDisplayStart, "iEnd": oSettings.fnDisplayEnd(), "iLength": oSettings._iDisplayLength, "iTotal": oSettings.fnRecordsTotal(), "iFilteredTotal": oSettings.fnRecordsDisplay(), "iPage": Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength), "iTotalPages": Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength) }; }; var table = $("#mytable").dataTable({ initComplete: function() { var api = this.api(); $('#mytable_filter input') .off('.DT') .on('input.DT', function() { api.search(this.value).draw(); }); }, oLanguage: { sProcessing: "loading..." }, processing: true, serverSide: true, ajax: {"url": "<?php echo base_url().'index.php/crud/get_produk_json'?>", "type": "POST"}, columns: [ {"data": "barang_kode"}, {"data": "barang_nama"}, //render harga dengan format angka {"data": "barang_harga", render: $.fn.dataTable.render.number(',', '.', '')}, {"data": "kategori_nama"}, {"data": "view"} ], order: [[1, 'asc']], rowCallback: function(row, data, iDisplayIndex) { var info = this.fnPagingInfo(); var page = info.iPage; var length = info.iLength; $('td:eq(0)', row).html(); } }); // end setup datatables // get Edit Records $('#mytable').on('click','.edit_record',function(){ var kode=$(this).data('kode'); var nama=$(this).data('nama'); var harga=$(this).data('harga'); var kategori=$(this).data('kategori'); $('#ModalUpdate').modal('show'); $('[name="kode_barang"]').val(kode); $('[name="nama_barang"]').val(nama); $('[name="harga"]').val(harga); $('[name="kategori"]').val(kategori); }); // End Edit Records // get Hapus Records $('#mytable').on('click','.hapus_record',function(){ var kode=$(this).data('kode'); $('#ModalHapus').modal('show'); $('[name="kode_barang"]').val(kode); }); // End Hapus Records }); </script> </body> </html>
Pada view diatas dapat dilihat diantara tag script terdapat baris komentar setup datatables sampai dengan end setup datatables.
Kode tersebut berfungsi untuk menampilkan data dari json object dari function get_produk_json(), kemudian menampilkannya ke tabel dengan id=”mytable”.
Untuk lebih lengkapnya perhatikan komentar-komentar yang telah saya sertakan di baris coding.
#7. Testing
Anda dapat menguji apakah aplikasi crud berjalan dengan sebagaimana mestinya.
Silahkan panggil controller crud pada URL seperti url berikut:
http://localhost/crud_ignited/index.php/crud/
jika berjalan dengan baik maka akan tampil seperti gambar berikut:
KESIMPULAN
Pembahasan kali ini adalah tentang bagaimana membuat aplikasi CRUD (Create Read Update Delete) dengan ignited-datatables menggunakan framework PHP codeigniter.
Ignited-datatables merupakan sebuah library yang di fungsikan untuk mempermudah pembuatan server-side processing pada datatables.
Server-side processing merupakan metode untuk mempercepat load data yang banyak dari database.
Dengan server-side processing dapat meningkatkan kualitas User Experience (UX).
Komentar (58)
Juniar Sinaga, 25 November 2017 13:50 - Reply
Suatu inovasi yang brilian kang mas.Jangan bosan-bosan share ilmunya.Samgat bermanfaat buat saya sebagai pemula.Maju terus mas Fikri.Salam coding....
M Fikri, 07 January 2018 12:04 - Reply
Makasih kang Juniar,
Salam Coding!
MoziKun, 13 January 2018 15:05 - Reply
untuk membuat add_column yang isinya angka 1 sampai jumlah data dari table gimana gan Fikri? terimakasih
M Fikri, 14 January 2018 08:31 - Reply
Tidak pake add_colom mas mozikun,
Tambahkan tag <th>No</th>
Kemudian pada script rowCallBack ubah menjadi seperti berikut:
rowCallback: function(row, data, iDisplayIndex) {
var info = this.fnPagingInfo();
var page = info.iPage;
var length = info.iLength;
var index = page * length + (iDisplayIndex + 1);
$('td:eq(0)', row).html(index);
}
MoziKun, 16 January 2018 15:20 - Reply
jadi begini mas saya cuma butuh untuk read datanya saja, nah saya copy paste code mas seperlunya, eh malah jadi gini DataTables warning: table id=table-4 - Ajax error. For more information about this error, please see http://datatables.net/tn/7 itu kenapa ya mas fikri?
adin pai, 28 January 2018 11:20 - Reply
saya ingin menambahkan colom berupa checkbox yang akan disubmit... itu gimana ya.. hmm...
cucusugiono, 23 April 2018 20:38 - Reply
makasi mas, sangat membantu saya dalam membuat project, keep posting mas
fajar, 24 April 2018 14:12 - Reply
gan untuk searchnya kok gk bisa ya
rezki setiawan, 01 May 2018 15:27 - Reply
Kalau kita mau tambahkan kolom nomor sebelum kolom product code gimana mastah ??
M Fikri, 01 August 2018 21:14 - Reply
Edit Callback functionnya seperti berikut:
rowCallback: function(row, data, iDisplayIndex) {
var info = this.fnPagingInfo();
var page = info.iPage;
var length = info.iLength;
var index = page * length + (iDisplayIndex + 1);
$('td:eq(0)', row).html(index);
}
nazar, 02 May 2018 22:47 - Reply
Mohon bantuannya mas.. bisa gak tutorial ini ditmabahin. 1. setiap data punya gambar. 2. kalau datanya di hapus, di pindah ke table yg lain. terimakasih mas
Qolbil, 22 June 2018 15:53 - Reply
gan punyaku kok ada errornya gini ? DataTables warning: table id=mytable - Ajax error. For more information about this error, please see http://datatables.net/tn/7 minta tolong bantuannya gan
Andreson, 31 July 2018 15:42 - Reply
untuk menambahkan action edit dan delete ada dua cara, yang pertama menggunakan $this->datatable->addcolumn dan kedua menggunakan render function di javascript, jika menggunakan $this->datatable->addcolumn('...............','barang_kode,barang_nama,barang_harga,kategori_id,kategori_nama') data berhasil muncul, nah jika menggunakan render function di taroh dimana ya supaya datanya tidak muncul $1, $2, $3, dst.mohon bantuannya ? terima kasih
M Fikri, 01 August 2018 21:09 - Reply
Jika menggunakan render bisa seperti ini gan:
{"data": "barang_kode",
"render": function(data, type, row) {
return '<a class="btn btn-info edit_record" href="javascript:void(0);" data-kode='+data+'>Edit</a><a class="btn btn-danger hapus_record" href="javascript:void(0);" data-kode='+data+'>Hapus</a>';
}
}
Info lengkapnya: https://datatables.net/forums/discussion/comment/79025/#Comment_79025
iiadho, 08 August 2018 14:43 - Reply
mas bisa belajar langsung?, ketemuan maksudnya,.
jokoumar, 09 August 2018 17:11 - Reply
mantap mas tutorialnya.. tanya sedikit mas fikri, biar jumlah data di entries dan jumlah page nya sesuai dengan data yang kita tampilkan dari database gimana mas? misal di model nya ditambahkan WHERE.. terima kasih
M Fikri, 17 August 2018 11:17 - Reply
Bisa saja mas, coba pelajari query builder di documentasinya codeigniter.
pasti bisa.!
asep dadan, 13 August 2018 20:13 - Reply
order by nya ga mau kenapa ya mas? apa ada yang kurang, di js datatables nya udah
willy, 15 August 2018 10:59 - Reply
$this->datatables-> nya error mas, kenapa ya? kaya ga kepanggil gitu. padahal Datatable.php nya udah di copy ke folder Libraries. Mohon pencerahannya, nuhuuun
M Fikri, 17 August 2018 11:16 - Reply
Library datatables-nya udah di load belum di function __construct()?
$this->load->library('datatables');
Juanrichi Jackly, 30 August 2018 15:05 - Reply
punya saya jadi gini recordnya. { "sEcho": 0, "iTotalRecords": 11, "iTotalDisplayRecords": 11, "aaData": [ [ "846826510", "Lipstick 2", "40000", "1", "Cosmetics", "<a>Edit</a> <a>Hapus</a>" ], tabel jadi gk sesuai gan. please ini krna apa ?
Andreson, 04 September 2018 10:16 - Reply
Melanjutkan pertanyaan saya yang sebelumnya, mohon dibantu, mengapa ketika baca data dengan modal "spasi" tidak bisa terbaca ya, misal data saya "M Fiqri" nah yang terbaca di text field nama hanya "M" saya sedangkan "Fiqri" nya tidak terbaca, itu masalahnya kira kira dimana ya? Makasih
M Fikri, 04 September 2018 12:00 - Reply
Mas Anderson, saya telah mereview pertanyaan yang mas tanyakan, dan saya telah menguji coba source code yang telah saya sediakan diatas.
Jika diperhatikan, disana ada product name seperti " Face Wash, Makanan 1, Makanan 2" dan itu semua mengandung "spasi" dan juga menggunakan Modal.
Setelah saya review, semuanya berjalan dengan sangat baik, dengan kata lain tidak ada problem.
Saya rasa, kesalahan yang mas Anderson alami hanya masalah ketelitian saja.
Saya sarankan untuk mendownload source codenya dan jalankan di localhost, kemudian pelajari perbedaanya dimana!
Terima Kasih.
Wahyu Irawan, 18 September 2018 16:48 - Reply
mas punya saya diklik tombol add new, modalnya ga muncul. mohon arahan
Wahyu Irawan, 18 September 2018 16:50 - Reply
untuk data2nya saya gunakan data saya sendiri, krn sedang ada aplikasi yg mau saya buat...
Wahyu Irawan, 18 September 2018 16:52 - Reply
karena permasalahan tombol add yang ga muncul modal, klo boleh saya mau kirim gambarnya sama mas fikri
M Fikri, 07 October 2018 06:33 - Reply
Coba cek di console mas, jquery-nya udah berjalan dengan baik gak?
Gilang, 27 September 2018 14:08 - Reply
Mas mau bertanya untuk join table. join('kategori', 'kategori_id=kategori_id'); kok gak bisa ya mas ? apa memang nama field di dua table harus berbeda ?
M Fikri, 07 October 2018 06:46 - Reply
bisa di bikin berbeda, juga bisa di buat seperti ini:
join('kategori', 'kategori.kategori_id=barang.kategori_id');
Ram Anisah, 29 September 2018 10:09 - Reply
Maaf, mas... Kalau menampilkan data tanpa join bagaimana ya? Terimakasih...
M Fikri, 07 October 2018 06:36 - Reply
kalo gak pake join bisa pake beginian di modelnya:
function get_all_produk() { //ambil data barang dari table barang yang akan di generate ke datatable
$this->datatables->select('barang_kode,barang_nama,barang_harga,kategori_id,kategori_nama');
$this->datatables->get('barang');
$this->datatables->add_column('view', '<a href="[removed]void(0);" class="edit_record btn btn-info btn-xs" data-kode="$1" data-nama="$2" data-harga="$3" data-kategori="$4">Edit</a> <a href="[removed]void(0);" class="hapus_record btn btn-danger btn-xs" data-kode="$1">Hapus</a>','barang_kode,barang_nama,barang_harga,kategori_id,kategori_nama');
return $this->datatables->generate();
}
Ram Anisah, 15 October 2018 16:11 - Reply
Terimakasih mas... oia, yas... Kalau misalkan nampilinnya dari dua database itu bagaimana ya? Apa yang harus saya rubahnya?
M Fikri, 21 November 2018 11:02 - Reply
Kalo itu saya belum temukan mas,
kalo dari dua database.
Naufalp, 15 November 2018 09:56 - Reply
Mas mau betanya ketika saat klik button Edit data kepanggil tetapi setelah klik tombol Add new data data masih terpanggil, jadi pertanyaan saya bagaimana ya caranya untuk data tidak terpanggil di Add new data setelah klik Edit data?
M Fikri, 21 November 2018 11:05 - Reply
Saya pikir solusinya, buat modal yang berbeda antara modal add new dengan modal edit.
dan juga name masing-masing form berbeda antara form yang ada di modal add new dan form yang ada modal edit.
Lingga Fernando, 10 March 2019 16:55 - Reply
DataTables warning: table id=mytable - Invalid JSON response. For more information about this error, please see http://datatables.net/tn/1 Kalo ini apa masalah nya ya mas?
M Fikri, 11 March 2019 10:41 - Reply
Mas Lingga, kemungkinan problemnya jumlah kolom pada JSON tidak sesuai dengan jumlah Kolom pada table.
mohon cek kembali output JSON-nya!
Red Geng, 12 March 2019 16:16 - Reply
Mantap euy
Hermawan, 12 April 2019 03:43 - Reply
Makasih kak atas pencerahannya, wah keren banget
M Fikri, 15 April 2019 06:06 - Reply
Sama-sama mas Hermawan
Rexsy Oktiana, 14 April 2019 17:21 - Reply
Izin tanya mas, saya ingin menjalankan script datatables server-side ini setelah memilih select option / combo box gtu mas. secara otomatis muncul di table. Gimana cara mengatasi ini ya mas, karena setelah saya coba" tidak berhasil.? mohon bantuannya mas.
M Fikri, 15 April 2019 06:13 - Reply
Itu hanya permainan query aja mas. Tentukan dulu konsep alurnya nya, kemudian temukan querynya.!
Fharhan Amrin, 22 April 2019 12:23 - Reply
jika di datatables in cuman satu table gimana pak
M Fikri, 29 April 2019 09:38 - Reply
Sederhana, tinggal ganti di modelnya!
Contoh:
alfredo, 24 April 2019 11:30 - Reply
mas fikri, ketika jumlah record nya lebih dari 400rb record kok jadi error ya. ga mau tampil datanya. thx
M Fikri, 29 April 2019 09:32 - Reply
Coba cek di console mas!
Apa pesan errornya?
Irfan, 25 April 2019 07:20 - Reply
Saya pake join kok muncul pesan "duplicate column" ya Mas. Apa nama kolom harus beda?
M Fikri, 29 April 2019 09:18 - Reply
Gak harus mas Irfan,
jika ada field yang sama, maka sertakan nama table-nya
Contoh:
NAUFALP, 23 May 2019 09:07 - Reply
mas fikri, saya coba implementasikan dengan ckeditor saat waktu edit kenapa tidak terpanggil ya datanya? apa ada cara untuk memasukan value nya ke ckeditor?
M Fikri, 25 May 2019 21:47 - Reply
Coba hilangkan dulu ckeditornya, kemudian jadikan textarea biasa dan cek apakah value bisa masuk.!
Budi Hariyono, 04 June 2019 06:42 - Reply
Luarbiasa. Terima kasih share ilmunya bang.