Permasalahan klasik yang paling sering dialami oleh Web Developer adalah melakukan validasi input data Tanggal. Khususnya, jika data yang diinput terdiri dari Tanggal Awal dan Tanggal Akhir. Bagaimana cara memastikan supaya Tanggal Awal yang diinput tidak boleh lebih besar dari Tanggal Akhir.
Percaya atau tidak, jika Anda membangun Aplikasi Web dengan menggunakan PHPMaker, hal ini dapat dilakukan dengan sangat mudah. Katakanlah kedua data tersebut diwakilkan oleh dua field berikut yang masing-masing bernama Tanggal_Awal dan Tanggal_Akhir. Tentu saja tipe kedua field haruslah DateTime.
Anda cukup hanya menaruh 4 baris kode PHP saja ke dalam server event Row_Inserting yang terdapat di bawah lokasi Server Events -> Table-Specific -> Common, sehingga kode selengkapnya kira-kira menjadi seperti ini:
// Row Inserting event function Row_Inserting($rsold, &$rsnew) { // Enter your code here // To cancel, set return value to FALSE if (strtotime($rsnew["Tanggal_Awal"]) > strtotime($rsnew["Tanggal_Akhir"])) { $this->setFailureMessage("Tanggal Awal harus lebih kecil atau sama dengan Tanggal Akhir."); return FALSE; } return TRUE; }
Dari kode tersebut, maka kita cukup hanya mengkonversi nilai masing-masing Tanggal tadi menggunakan function strtotime(), lalu membandingkan nilai keduanya. Jika tidak memenuhi syarat, maka tampilkan pesan kesalahan kepada Pengguna, dan seketika itu juga proses penambahan data dibatalkan oleh sistem; yang ditandai dengan pengembalian nilai FALSE.
Dengan kode yang sama itu pula, maka kita dapat memvalidasi data kedua Tanggal tadi pada saat Pengguna mengubah data Tanggal. Cukup salin empat baris kode di atas ke dalam server event Row_Updating.
Itu jika validasi terjadi di sisi server menggunakan kode PHP. Lalu timbul pertanyaan, bagaimana jika validasinya dilakukan di sisi browser juga. Gampang! Cukup tambahkan kode ini di bagian Form_CustomValidate yang terdapat di bawah lokasi Client Scripts -> Table-Specific -> Add/Copy Page, sehingga kode selengkapnya kira-kira menjadi seperti ini:
function(fobj) { // DO NOT CHANGE THIS LINE! // Your custom validation code here, return false if invalid. elmTglAwal = this.GetElements("x_Tanggal_Awal"); f1 = $("#x_Tanggal_Awal").val(); f2 = $("#x_Tanggal_Akhir").val(); if(f1 > f2){ return this.OnError(elmTglAwal, "Maaf tanggal awal harus lebih kecil atau sama dengan tanggal akhir"); } return true; }
Pertanyaannya sekarang, bisakah di Aplikasi Web yang Anda bangun tanpa bantuan PHPMaker menggunakan cara seperti itu? Kita cukup hanya menulis sedikit kode itu saja, dan selebihnya akan ditangani oleh PHPMaker. Kita tidak perlu lagi menulis kode untuk menampilkan elemen-elemen di form tersebut.
Dengan menggunakan PHPMaker, maka Web Developer tidak lagi disibukkan mengurusi hal-hal yang bersifat sangat teknis. Web Developer menjadi dapat lebih fokus berkonsentrasi dalam mengimplementasikan business-logic dan business-process ke Aplikasi Web.
Betapa mudah, cepat, dan menyenangkan sekali, bukan? 🙂
Cak Sobri mengatakan
Bukannya tanpa strtotime() bisa ya om?
$rsnew[“Tanggal_Awal”] > $rsnew[“Tanggal_Akhir”]
apa perbedaannya?
Masino Sinaga mengatakan
Supaya lebih aman aja pakai strtotime().
Roiman Panjaitan mengatakan
Asli bang… lo baik banget… Gue doain lo makin banyak rejeki… Maju teruss bang Masino!! 😀
Masino Sinaga mengatakan
Amiiin… Makasih ya… 🙂
randy mengatakan
kalo pake pake javascript bisa gak bang, jadi pada saat kita input tanggal akhir ada alertnya bahwa tanggal nya salah, bukan pada saat di proses?
Masino Sinaga mengatakan
Bisa. Mirip dengan artikel ini: Menghitung Selisih Hari dari Dua Buah Tanggal dengan Javascript dari PHPMaker.
Silahkan Anda modifikasi kode pada artikel itu, intinya, Anda tinggal membandingkan saja antara tanggal awal dan tanggal akhir. Selamat mencoba!