Dalam fase development, Web Developer biasanya sering memeriksa perintah SQL yang dieksekusi saat menambah, mengubah, atau bahkan menghapus data di Aplikasi Web yang dibuatnya. Apalagi jika proses tersebut gagal dan menimbulkan error, maka hal pertama sekali yang dilakukan adalah menampilkan SQL terkait. Dari situ bisa menjadi awal untuk mengetahui penyebab gagalnya proses tadi.
Tidak terkecuali juga bagi Web Developer yang membangun Aplikasi Web dengan PHPMaker. Kegiatan untuk memeriksa perintah SQL yang terjadi di suatu proses untuk mencari solusi terhadap gagalnya proses tadi dikenal dengan istilah Debug. PHPMaker sudah menyediakan pengaturan yang terkait dengan Debug. Kita bisa mengaktifkannya dari menu Tools -> Advanced Settings -> Project -> Debug.
Setelah pilihan Debug diaktifkan, maka pastikan untuk men-generate ulang semua file script. Lalu jalankan kembali Aplikasi Web dari browser seperti biasa. Informasi Debug akan ditampilkan di bagian bawah halaman.
Sekarang cobalah mengakses sebuah halaman List milik salah satu table yang kita inginkan. Di bagian paling bawah halaman, kita seharusnya melihat perintah SQL SELECT yang digunakan untuk mengambil data dari Database, diikuti oleh informasi waktu pemrosesan halaman.
Setelah itu, cobalah juga untuk mengakses halaman View yang menampilkan satu record dalam sebuah halaman. Sama seperti di halaman List, kita juga seharusnya melihat perintah SQL SELECT yang digunakan untuk melakukan query ke Database, beserta informasi waktu pemrosesan halaman.
Lakukan hal yang sama untuk mengakses halaman lainnya, yaitu: Advanced Search.
Sampai di sini, kita sudah berhasil men-debug Aplikasi Web, khususnya saat menampilkan halaman-halaman yang mengambil dan menampilkan data menggunakan SQL SELECT.
Pasti akan timbul pertanyaan, lalu bagaimana cara men-debug proses saat menambah, mengubah, atau menghapus record? Ahaaa! Pertanyaan yang bagus. Mengapa pertanyaan ini timbul? Karena SQL yang dieksekusi saat ketiga proses tadi tidak ditampilkan ketika kita mencoba proses penambahan, pengubahan, dan penghapusan data.
Mengapa tidak ditampilkan? Karena setelah ketiga proses itu terjadi, maka sistem secara standar akan mengarahkan Pengguna kembali ke halaman List yang menampilkan data. Jadi, dalam hal ini seolah-olah perintah SQL ketiga proses tadi langsung ditimpa dengan perintah SQL SELECT untuk menampilkan data terkait.
Pertanyaan selanjutnya, lalu bagaimana cara kita sebagai Web Developer bisa mengetahui perintah SQL untuk ketiga proses tadi? Gampang! Yang jelas, kita harus membatalkan setiap proses tadi dengan mengembalikan nilai FALSE. Sebelum perintah tadi, maka kita harus menampilkan perintah SQL-nya. Bagaimana caranya?
Beruntunglah kita jika membangun Aplikasi Web dengan PHPMaker, karena sudah tersedia method untuk menampilkan SQL yang terkait dengan masing-masing proses tadi. Kita bisa mengoptimalkan server event Row_Inserting, Row_Updating, dan Row_Deleting untuk membatalkan setiap proses tadi.
Untuk men-debug saat menambah data, maka kita cukup menambahkan dua baris kode berikut ke dalam server event Row_Inserting sebelum baris return TRUE:
// Row Inserting event function Row_Inserting($rsold, &$rsnew) { // Enter your code here // To cancel, set return value to FALSE $this->setMessage($this->InsertSQL($rsnew)); // <-- jangan lupa hapus sebelum upload ke server production! return FALSE; // <-- jangan lupa hapus sebelum upload ke server production! return TRUE; }
Untuk men-debug saat mengubah data, maka kita cukup menambahkan dua baris kode berikut ke dalam server event Row_Updating sebelum baris return TRUE:
// Row Updating event function Row_Updating($rsold, &$rsnew) { // Enter your code here // To cancel, set return value to FALSE $this->setMessage($this->UpdateSQL($rsnew)); // <-- jangan lupa hapus sebelum upload ke server production! return FALSE; // <-- jangan lupa hapus sebelum upload ke server production! return TRUE; }
Untuk men-debug saat menghapus data, maka kita cukup menambahkan dua baris kode berikut ke dalam server event Row_Deleting sebelum baris return TRUE:
// Row Deleting event function Row_Deleting(&$rs) { // Enter your code here // To cancel, set return value to False $this->setMessage($this->DeleteSQL($rs)); // <-- jangan lupa hapus sebelum upload ke server production! return FALSE; // <-- jangan lupa hapus sebelum upload ke server production! return TRUE; }
Dari ketiga server event tadi, kita dapat menyimpulkan bahwa method yang digunakan oleh setiap proses tadi memiliki satu parameter, yaitu Recordset yang terdapat di setiap server event. Row_Inserting dan Row_Updating masing-masing menggunakan object $rsnew, sedangkan Row_Deleting menggunakan object $rs.
Setelah ketiga server event tersebut disesuaikan seperlunya seperti kode di atas, jangan lupa untuk men-generate ulang semua file script seperti biasa. Jalankan kembali Aplikasi Web dari browser, lalu cobalah untuk menambah, mengubah, atau menghapus data.
Ketika setiap proses tadi dilakukan, maka sistem masing-masing akan menampilkan informasi perintah SQL INSERT INTO, UPDATE, dan DELETE. Informasi ini berada di bagian atas form atau table, dan di bawah bagian breadcrumb untuk setiap halaman tadi. Di bawah perintah SQL, terdapat pesan yang menyatakan bahwa ketiga proses tadi masing-masing dibatalkan.
Itu artinya, sistem tidak akan melanjutkan ke proses penambahan, pengubahan, dan penghapusan. Sistem langsung membatalkan masing-masing dari ketiga proses tadi setelah menampilkan perintah SQL. Selanjutnya kita sebagai Web Developer dapat menyalin perintah SQL tadi, lalu mencobanya langsung di Database Manager yang bertalian.
Dari sini seharusnya kita sudah bisa mengetahui penyebab gagalnya dari suatu proses penambahan, pengubahan, atau penghapusan data. Cara ini juga berguna jika kita ingin sekedar memeriksa seperti apa perintah SQL yang dieksekusi di ketiga proses di atas tadi.
O iya, supaya perintah SQL tadi bisa ditampilkan saat Debug, maka ada satu hal yang harus diingat. Kita sebagai Web Developer harus menggunakan method yang sama seperti yang digunakan oleh kode yang dihasilkan oleh PHPMaker. Khususnya saat mengeksekusi SQL yang kita tambahkan sendiri lewat Server Events.
Contoh, untuk mengeksekusi perintah SQL yang kita tambahkan di server event tertentu, maka kita disarankan selalu menggunakan function/method ew_Execute. Jangan menggunakan fungsi buatan sendiri apalagi bawaan Database-nya. Gunakanlah selalu built-in function yang tersedia oleh PHPMaker, sehingga mudah di-debug jika terjadi masalah.
Terakhir, penting untuk dipedomani, bahwa proses Debug ini harus dilakukan saat fase development. Biasanya di komputer Web Developer atau di server development. Jangan sekali-sekali mengaktifkan mode Debug ini di server production atau live.
Di samping karena alasan keamanan, perintah SQL ini haram hukumnya dilihat oleh Pengguna Akhir dari Aplikasi Web kita. Ibarat sebuah rumah, ini adalah dapur yang tidak untuk diperlihatkan kepada Pengguna Aplikasi Web. Mereka tidak perlu tahu hal-hal teknis seperti ini.
Oleh karena itu, sebelum kita meng-upload semua file script ke server production, maka pastikan sudah menonaktifkan mode Debug tadi. Pastikan juga kode di ketiga server event tadi sudah kita hapus, sesuai yang ada komentar peringatan pada dua baris kode di atas. Jadi, berhati-hatilah selalu!
Betapa mudah, cepat, dan menyenangkan sekali menggunakan PHPMaker, bukan? 🙂
Tinggalkan Balasan