Sudah tidak terhitung lagi keuntungan yang bisa diperoleh oleh Web Developer ketika membangun Aplikasi Web dengan menggunakan PHPMaker. Termasuk pula trik yang akan saya tunjukkan di artikel ini, di mana kita sebagai Web Developer dapat dengan mudahnya mengetahui nilai kunci dari beberapa Record yang terpilih di halaman Delete sebelum Pengguna menghapus data.
Seperti yang kita ketahui, PHPMaker memiliki kemampuan untuk menghasilkan fitur penghapusan beberapa Record sekaligus di Aplikasi Web yang dihasilkan olehnya. Kita sebagai Web Developer hanya perlu mengeset pengaturan yang bernama Multiple delete yang terdapat di bawah tab PHP -> Page Options (Global), untuk pengaturan global. Sedangkan jika ingin menerapkan hanya untuk table tertentu, maka dapat mengaktifkan pengaturan yang sama yang berada di bawah tab Table -> Table-specific Options -> List Page.
Selain itu, PHPMaker juga sudah menyediakan pilihan apakah Web Developer akan men-generate fitur halaman Konfirmasi Penghapusan Record, atau tanpa halaman konfirmasi; sebelum beberapa Record tadi benar-benar dihapus.
Yang dimaksud dengan halaman Konfirmasi Penghapusan Record adalah halaman yang akan ditampilkan setelah Pengguna memilih beberapa Record di halaman List lalu mengklik tombol Delete. Jadi, Pengguna masih diberi kesempatan untuk memeriksa Record-Record yang terpilih tadi sebelum memutuskan untuk melakukan penghapusan. Halaman Konfirmasi Penghapusan Record ini memiliki nama file yang diakhiri kata *delete.php (tanda * menandakan nama Table/View yang terkait).
Untuk menghasilkan halaman Konfirmasi Penghapusan Record tadi, maka kita sebagai Web Developer cukup hanya menghilangkan tanda centang pada pengaturan Inline delete yang lokasinya sama dengan lokasi pengaturan di atas tadi. Sedangkan jika tidak ingin menghasilkan halaman Konfirmasi Penghapusan Record, maka pastikan kita memberi tanda centang di pengaturan Inline delete tersebut.
Selain untuk memberi kesempatan kepada Pengguna untuk memeriksa kembali Record-Record yang akan dihapus, biasanya, halaman Konfirmasi Penghapusan Record ini bermanfaat jika kita sebagai Web Developer ingin melakukan validasi terhadap beberapa Record yang akan dihapus tadi. Untuk itu, maka kita perlu mengetahui nilai kunci dari beberapa Record yang akan dihapus tersebut.
Pertanyaannya adalah, bagaimana cara untuk mengetahui nilai kunci beberapa Record yang terpilih itu? Jangan khawatir, karena PHPMaker sudah menyediakan sebuah method yang bernama GetKeyFilter milik object Page atau Table. Dengan menggunakan method ini, kita sebagai Web Developer dapat mengetahui field-field mana saja yang terlibat sebagai kunci utama atau Primary Key dari setiap Record.
Kita hanya perlu menambahkan sedikit kode PHP saja ke dalam server event Page_Render yang terdapat di bawah lokasi Server Events -> Table-Specific -> Delete Page, sehingga kode selengkapnya menjadi seperti ini:
// Page Render event function Page_Render() { //echo "Page Render"; $sFilter = $this->GetKeyFilter(); //echo $sFilter."<br>"; $sKey = explode("OR", $this->GetKeyFilter()); $KeyCount = count($sKey); $My_Key = ""; for ($i = 0; $i < $KeyCount; $i++) { if ($sKey[$i] <> "") { $My_Key = $sKey[$i]; echo $My_Key."<br>"; } } }
Perhatikanlah bahwa kita mengambil string yang berisi kunci dari Record yang difilter menggunakan method GetKeyFilter, lalu menampungnya ke dalam variabel sFilter. Setelah itu, kita memisahkan string tersebut menggunakan function explode berdasarkan operator OR dan menampungnya ke dalam variabel array. Kemudian kita menampilkan nilai kunci utama dari setiap Record yang terpilih tadi melalui bantuan loop, menggunakan variabel My_Key, lalu menampilkan hasilnya ke layar.
Dengan cara ini, maka kita sebagai Web Developer dapat mengoptimalkan method tersebut untuk melakukan validasi terhadap beberapa Record yang terpilih tadi sebelum benar-benar dihapus. Misalnya, apakah Record-Record yang terpilih tadi digunakan di table lain, dan seterusnya.
O iya, kita menggunakan server event Page_Render milik halaman Delete, untuk memastikan bahwa semua data di halaman ini sudah diambil dari Database dan siap ditampilkan ke Pengguna. Seperti yang kita ketahui, server event ini cocok sekali digunakan untuk memproses data sebelum hasilnya ditampilkan atau di-render ke browser Pengguna.
Sekarang mari kita menggunakan contoh kasus pada table orderdetails dari project demo yang disediakan oleh PHPMaker. Karena table ini menggunakan 2 Field sebagai Primary Key, yaitu OrderID dan ProductID, maka output dari kode di atas adalah seperti yang ditampilkan di bawah ini:
(`OrderID` = 10248 AND `ProductID` = 72) (`OrderID` = 10250 AND `ProductID` = 41) (`OrderID` = 10252 AND `ProductID` = 20)
Itu artinya, kita akan menghapus data detail pesanan sebanyak 3 Record dengan nilai kunci utama setiap Record masing-masing ID Pesanan 10248 dan ID Produk 72, ID Pesanan 10250 dan ID Produk 41, serta ID Pesanan 10252 dan ID Produk 20.
Sekarang, mari kita mengembangkan lagi kode di atas dengan menambahkan pemeriksaan kondisi jika ada Record dengan ID Pesanan 10250 dan ID Produk 41 dari antara beberapa Record yang terpilih tadi, maka proses penghapusan secara keselurahan akan dibatalkan oleh sistem, dan Pengguna di-redirect kembali ke halaman List dari orderdetails.
Bagaimana kodenya? Ini dia selengkapnya:
// Page Render event function Page_Render() { //echo "Page Render"; $sFilter = $this->GetKeyFilter(); //echo $sFilter."<br>"; $sKey = explode("OR", $this->GetKeyFilter()); $KeyCount = count($sKey); $My_Key = ""; for ($i = 0; $i < $KeyCount; $i++) { if ($sKey[$i] <> "") { $My_Key = $sKey[$i]; echo $My_Key."<br>"; if (trim($My_Key) == "(`OrderID` = 10250 AND `ProductID` = 41)") { $this->setFailureMessage("Data dengan ID Pesanan 10250 dan ID Produk 41 tidak boleh dihapus."); $this->Page_Terminate("orderdetailslist.php"); } } } }
Betapa mudah, cepat, dan menyenangkan sekali, bukan? 😀
Tinggalkan Balasan