Di artikel sebelumnya kita sudah membahas bagaimana mudahnya Web Developer dapat menambahkan business logic ketika event penghapusan Record sedang terjadi di Aplikasi Web, melalui server event Row_Deleting. Anda dapat memeriksa terlebih dulu supaya Record yang memenuhi kondisi tertentu tidak dapat dihapus. Selain itu, Anda juga dapat meng-update data di Table lain ketika Record sedang dihapus.
Kali ini kita akan membahas server event lainnya yang mirip dengan server event Row_Deleting. Server event yang saya maksud tersebut adalah Row_Deleted. Lokasi server event ini sama-sama berada di bawah Server Events -> Table-Specific -> Common di dalam project PHPMaker Anda. Pastikan sebelumnya Anda sudah memilih salah satu Table yang Anda inginkan dari panel Database di sebelah kiri dari project PHPMaker Anda, untuk memastikan Anda menambahkan kode di server event pada Table yang tepat.
Sepintas namanya hampir sama, tapi terdapat perbedaan di antara keduanya. Server event Row_Deleted, seperti namanya, akan dipanggil setelah sebuah Record atau seluruh dari kumpulan beberapa Record sudah berhasil dihapus dari Database. Artinya, server event ini pun berlaku untuk penghapusan sebuah Record maupun untuk beberapa Record sekaligus.
Perbedaan lainnya, jika di server event Row_Deleting Anda sebagai Web Developer masih diberi kesempatan untuk membatalkan proses penghapusan Record, sementara di server event Row_Deleted Anda tidak dapat membatalkan proses penghapusan, karena server event ini dijalankan setelah penghapusan Record benar-benar telah selesai dilakukan. Server event Row_Deleted sangat berguna jika Anda ingin mengeksekusi kode tertentu hanya jika Record di Table tertentu benar-benar sudah berhasil dihapus.
Perbedaan yang lainnya lagi adalah, jika server event Row_Deleting akan dipanggil oleh setiap Record yang sedang dihapus, sehingga server event ini memungkinkan untuk dipanggil berulang-ulang sebanyak jumlah Record yang sedang dihapus, maka server event Row_Deleted hanya akan dipanggil sekali saja. Dia hanya dipanggil jika sebuah atau seluruh dari beberapa kumpulan Record sudah berhasil dihapus.
Server event Row_Deleted merupakan member dari Class Table. Anda sebagai Web Developer dapat menggunakan member lainnya yang terdapat di Class ini (jika dibutuhkan). Server event ini memiliki sebuah argumen yang berupa sebuah Record yang sudah berhasil dihapus sebagai sebuah array. Artinya, Anda bisa menggunakan argumen ini untuk mengambil nilai di field tertentu dari Record yang sudah dihapus tadi, menggunakan sintaks untuk mengakses elemen yang terdapat di sebuah array.
Supaya lebih mudah dipahami, mari kita simak contoh di bawah ini. Di kode berikut ditunjukkan bagaimana mudahnya Web Developer dapat menghapus Record di table Detail setelah Record di table Master berhasil dihapus:
function Row_Deleted(&$rs) { // asumsi tipe dari field ForeignKeyField adalah integer ew_Execute("DELETE FROM DetailTable WHERE ForeignKeyField=" . $rs["PrimaryKeyField"]); }
Seperti yang ditunjukkan pada kode di atas, kita dapat menghapus Record di tabel DetailTable yang nilai field ForeignKeyField-nya sama dengan nilai pada field PrimaryKeyField pada tabel Master-nya. Cukup dengan hanya sebaris kode saja. Sangat mudah, cepat, efektif, dan efisien! Tentu saja, dalam contoh ini kita mengasumsikan kedua Table memiliki relasi sebagai Master/Detail.
Jadi, dapat disimpulkan bahwa betapa mudah, cepat, dan menyenangkannya menambahkan business-logic sendiri di Aplikasi Web yang dibangun oleh PHPMaker. Anda sebagai Web Developer tidak perlu sama sekali menulis kode ke dalam file script di sisi Aplikasi Web-nya. Anda juga sama sekali tidak perlu memodifikasi file Template yang digunakan oleh PHPMaker. Semuanya cukup dilakukan dari dalam project PHPMaker di bagian Server Events.
Tinggalkan Balasan