Halo guys,
Kali ini saya mau share pengalaman ketika 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.
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).
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.
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.
Untuk menambah fungsi yang bisa digunakan untuk menghasilkan query join, yang pertama saya lakukan 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.
Fungsi dari sql_exec ini adalah melakukan eksekusi query yang telah dibentuk sebelumnya. Di sini saya 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:
[code language=”php”]
static function complexJoin($request, $conn, $table, $primaryKey, $columns, $whereResult = null, $whereAll = null, $qjoin)
[/code]
Parameter $qjoin berisi query join, sebagai contoh:
[code language=”sql”]
” join `tableb` on `tableb`.`id` = `tablea`.`tablebid` ”
[/code]
Tahap selanjutnya adalah menambahkan query join yang sudah dibuat diatas tadi ke dalam 3 fungsi yang menghasilkan output ke dalam 3 variabel berikut:
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:
[code language=”php”]
SSP::complexJoin($request, $conn, $table, $primaryKey, $columns, null, null, $qjoin);
[/code]
Penejelasan:
$request merupakan parameter array $_GET / $_POST, jadi cukup ditulis $_GET / $_POST.
$conn merupakan parameter koneksi ke database yang dibutuhkan. Biasanya berbentuk:
[code lang=”PHP”]
$sql_details = array(
‘user’ => ”,
‘pass’ => ”,
‘db’ => ”,
‘host’ => ”
);
[/code]
$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:
[code language=”lang=”]
$columns = array(
‘db’ => ‘column1’, ‘dt’ => 0,
‘db’ => ‘column2’, ‘dt’ => 1
);
[/code]
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 saya 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!
kalo order by gmn gan?
order by kalau ane lewat tabel header nya gan :), tinggal klik mana yang mau di order by 🙂
download source dengan demo ada gan ?
g ada gan, baru source code datatablenya
kalo pake clausa where dengan lebih dari satu condition gimana Bang???