Ketika Anda sebagai Web Developer memutuskan untuk menggunakan PHPMaker untuk membangun Aplikasi Web, maka pada saat itu sebenarnya Anda secara tidak sadar sudah mendapatkan banyak sekali keuntungan yang tidak akan Anda duga-duga terjadi dalam hidup Anda. Ini merupakan salah satu kejutan yang tidak akan pernah Anda dapatkan dari tools sejenis atau pun pada metode pengembangan Aplikasi Web lainnya. Bahkan, setiap hari Anda akan menemukan hal-hal baru, yang sama sekali sebelumnya tidak pernah Anda kira sudah disediakan di PHPMaker.
Pada artikel kali ini, lagi-lagi kita akan menampilkan salah satu dari sekian banyaknya kejutan itu. Sekalipun server event yang terkait dengan kejutan ini sudah pernah kita bahas dulu, tapi tidak ada salahnya jika kita bahas kembali. Apalagi di artikel yang ini terkait erat dengan salah satu artikel saya mengenai Mudahnya Membatasi Hanya 1 Record di Halaman List Aplikasi Web dari PHPMaker.
Di artikel barusan, kita sudah mengetahui bahwa Anda sebagai Web Developer dapat membatasi jumlah Record yang akan ditampilkan di halaman List. Tapi kalau Anda cermati lagi artikel tadi, ternyata Pengguna yang cerdik masih tetap bisa mengakses secara langsung Record yang disembunyikan, baik melalui fungsi atau halaman View, Edit, Delete, ataupun Copy (menggunakan halaman Add) dengan cara mengetikkan URL-nya secara langsung di browser. Penasaran ingin tahu bagaimana cara mengatasinya?
Jangan khawatir, karena di artikel berikut ini, kita akan membahas bagaimana cara untuk membatasi Record-Record yang disembunyikan tadi supaya tidak bisa diakses melalui fungsi View, Edit, Delete, dan Copy. Supaya lebih mudah Anda mengikutinya, maka kita berasumsi tetap mengacu kepada contoh kasus yang terdapat di artikel pada link di atas tadi.
PHPMaker sudah menyediakan sebuah server event yang bernama Row_Selected. Sekedar untuk mengingatkan Anda kembali, server event ini akan dipanggil setelah sistem berhasil memilih atau menyaring sebuah Record. Argumen dari server event ini hanya satu, yaitu Record yang sudah dipilih sebagai sebuah array. Artinya, Anda sebagai Web Developer dapat mengambil informasi yang terdapat di field tertentu dengan menggunakan sintaks untuk mengakses elemen array.
Nah, kembali kepada topik semula, maka Anda sebagai Web Developer cukup hanya menambahkan kode berikut ke dalam server event Row_Selected, sehingga hasil selengkapnya menjadi seperti ini:
// Row Selected event function Row_Selected(&$rs) { //echo "Row Selected"; if ( ($rs["OrderID"] != "10248" && CurrentPageID() == "view") || ($rs["OrderID"] != "10248" && CurrentPageID() == "edit") || ($rs["OrderID"] != "10248" && CurrentPageID() == "add") || ($rs["OrderID"] != "10248" && CurrentPageID() == "delete") ) { $this->Page_Terminate("orderslist.php"); } }
Perhatikan kode di atas. Karena hanya ada satu Record yang boleh ditampilkan dan diakses, maka dalam hal ini kita harus menentukan data ID Pesanan acuan melalui field OrderID. Karena kita mengacu kepada project demo dan kita asumsikan nilai ID Pesanan yang terkecil adalah 10248, maka nilai ini yang menjadi acuan sebagai ID Pesanan satu-satunya yang boleh diakses.
Artinya, dari kode barusan, sistem akan memeriksa jika ID Pesanan tidak sama dengan 10248 dan ID halaman yang diakses sama dengan View, Edit, Add (digunakan juga untuk fungsi Copy), dan Delete, maka sistem akan me-redirect Pengguna ke halaman List Pesanan (orderlist.php). Nilai 10248 ini bisa saja berbeda dengan nilai ID Pesanan yang terkecil di file demo project Anda, untuk itu, silahkan Anda sesuaikan sendiri sesuai dengan kebutuhan.
Wow, betapa mudahnya, bukan? 😀
bagus mengatakan
ada contoh penulisannya / kasusnya bang ?
jika angka 10248 nya diganti berupa row id yang kita klik. terimakasih sebelumnya
Masino Sinaga mengatakan
Server event Row_Selected memiliki satu param aja, yaitu $rs yang merupakan record atau row yang sudah dipilih.
Jika ingin mengetahui nilai dari field id, maka cukup dengan meggunakan kode berikut:
$my_id = $rs["id"];
$this->setMessage("My ID is: " . $my_id);