Datatable Server Side Processing (SSP) dengan Join

Halo guys,

Kali ini ane mau share pengalaman ane utak – atik kelas SSP pada datatable, hingga akhirnya terpaksa menambahkan fungsi join di dalamnya. Sebelum jauh bercerita tentang penambahan fungsi join di kelas SSP, ada baiknya mengetahui apa itu kelas SSP Datatable.

jQuery DataTables
jQuery DataTables

Datatable merupakan plugin jQuery yang berguna untuk pengolahan tampilan tabel html. Untuk lebih jelasnya dapat di link ini. Sedangkan SSP sendiri merupakan script PHP yang didalamnya terdapat kelas dan mempunyai fungsi untuk melakukan query ke database, untuk selanjutnya ditampilkan oleh jQuery Datatable (serverside datatable). Keuntungan menggunakan SSP ini adalah jika data yang disajikan sangat banyak, maka jQuery Datatable tidak perlu memproses data yang sangat besar dalam satu waktu, namun akan diproses berdasakan paging yang dihasilkan dari interaksi pngguna(teknik pagination).

Pagination DataTables
Pagination DataTables

Jika agan sekalian mendownload datatable paket lengkap, biasanya akan disertakan script SSP di dalamnya untuk contoh penggunakan datatable serverside. Di dalam script SSP ini terdapat kelas SSP yang mempunyai 2 smethod static penting, yaitu method SSP::simple() dan method SSP::complex(). Method simple digunakan untuk melakukan pagination pada satu tabel, sedangkan SSP::complex() digunakan jika ingin melakukan pagination pada satu tabel dengan penambahan filter khusus(where clause) sesuai dengan keinginan.

Static method complex & simple
Static method complex & simple

Sayangnya kelas SSP yang disertakan tidak bisa digunakan jika ingin menampilkan data yang merupakan hasil dari query join. Agar bisa melakukan query join dengan tabel lain dengan tetap memanfaatkan kelas SSP yang disertakan, salah satu jalan yang dapat dilakukan adalah menambahkan fungsi yang menghasilkan query join pada kelas SSP.

SSP Class Original
SSP Class Original

Untuk menambah fungsi yang bisa digunakan untuk menghasilkan query join, yang pertama dilakukan adalah melakukan copy paste dari static method SSP::complex(). Misalkan diberi nama SSP::complexJoin().  Di dalam method complex ataupun simple, bisa dilihat bahwa keduanya memanggil method sql_exec.

Output query sql_exec
Output query sql_exec

Fungsi dari sql_exec ini adalah melakukan eksekusi query yang telah dibentuk sebelumnya. Di sini ane memanfaatkan fungsi tersebut untuk melakukan debug, yaitu ‘mengeluarkan’ query yang dibentuk, sehingga jika ada error query, dapat diketahui penyebabnya.

Untuk menambahkan query join pada fungsi baru yang dibuat tadi, pertama adalah menambah parameter yang dibutuhkan untuk melakukan join, penambahan parameter ini dapat dilakukan seperti berikut:


static function complexJoin($request, $conn, $table, $primaryKey, $columns, $whereResult = null, $whereAll = null, $qjoin)

Parameter $qjoin berisi query join, sebagai contoh:


"  join `tableb` on `tableb`.`id` = `tablea`.`tablebid` "

Tahap selanjutnya adalah menambahkan query join yang sudah dibuat diatas tadi ke dalam 3 fungsi yang menghasilkan output ke dalam 3 variabel berikut:

Penambahan query join
Penambahan query join

Viola, kelas SSP sekarang bisa digunkan untuk menampilkan data yang tabelnya memerlukan join! Penggunaanya menurut Saya cukup mudah, yang pertama adalah include file modifikasi tersebut ke script yang membutuhkan, lalu panggil method complexJoin sebagai berikut:


SSP::complexJoin($request, $conn, $table, $primaryKey, $columns, null, null, $qjoin);

Penejelasan:

$request merupakan parameter array $_GET / $_POST, jadi cukup ditulis $_GET / $_POST.

$conn merupakan parameter koneksi ke database yang dibutuhkan. Biasanya berbentuk:

$sql_details = array(
    'user' => '',
    'pass' => '',
    'db' => '',
    'host' => ''
);

$table merupakan tabel utama yang dijadikan sumber join.

$primaryKey merupakan primary key dari tabel utama.

$columns merupakan parameter yang akan dioutputkan oleh datatable, biasanya akan berbentuk seperti berikut:

$columns = array(
    ‘db’ => ‘column1’, ‘dt’ => 0,
    ‘db’ => ‘column2’, ‘dt’ => 1
);

Penjelasan: $db merupakan nama kolom di table, sedangkan dt merupakan nomor kolom di tabel yang dimulai dari angka 0. Kolom pertama pada tabel HTML selalu bernilai 0. Dalam kasus table join diatas, gunakan nama table lalu nama kolom, sebagai contoh: `table`.`kolom1`.

Update:

Well, cara di atas hanya untuk mysql saja dan boleh dibilang kompleks. Bagaimana untuk DBMS lain seperti Oracle atau Postgre? Jawabannya adalah dengan menggunakan view table! Menggunakan view table menurut ane lebih simple karena join / query kompleks lainnya sudah disimpen di view, gampangnya kita bisa langsung select *(all) saja field yang sudah di view tadi, enak kan?

Deimikian share dari Saya kali ini, semoga membawa manfaat bagi readers. Untuk source code lengkapnya dapat dilihat di sini. c ya laterr!

Programming

Iklan

caisaroentoro View All →

simple, script, balance

4 Comments Tinggalkan komentar

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogger menyukai ini: