Sebagai Web Developer, Anda pasti pernah dihadapkan dengan business-logic yang memvalidasi input data periode Tanggal dari Pengguna Aplikasi Web harus memenuhi syarat periode Tanggal tertentu. Artinya, jika data periode Tanggal yang dimasukkan Pengguna tidak berada di dalam/antara periode Tanggal tertentu, maka sistem harus menolaknya, lalu menampilkan pesan bahwa data tidak valid. Jadi, data tersebut tidak boleh masuk ke Database.
Katakanlah sistem sudah menentukan periode Tanggal yang valid atau memenuhi syarat adalah mulai 1 Januari 2014 sampai dengan 31 Januari 2014. Ketika Pengguna berusaha memasukkan Tanggal 1 Februari 2014 sampai dengan 7 Februari 2014, maka sistem harus menolaknya dengan menampilkan pesan bahwa periode tanggal yang valid harus di dalam/antara 1 Januari 2014 sampai dengan 31 Januari 2014. Lalu, jika misalnya Pengguna memasukkan tanggal 1 Januari 2014 sampai dengan (misalnya) 10 Januari 2014, maka sistem dapat menerimanya karena di antara 1 sampai 31 Januari 2014.
Jika Anda membangun Aplikasi Web dengan menggunakan PHPMaker, maka hal ini bisa diimplementasikan dengan sangat mudah, cepat, sekaligus menyenangkan. Mengapa? Karena Anda sebagai Web Developer cukup hanya menambahkan sedikit kode saja ke bagian Server Events. Anda hanya perlu menulis kode PHP yang berisi fungsi global untuk memvalidasi input Tanggal, dan juga saat Pengguna sedang memasukkan data.
Lebih tepatnya lagi, Anda dapat menggunakan dua buah server event berikut. Yang pertama di bagian Global Code, dan yang kedua di bagian Row_Inserting dari tabel terkait.
Ini kode PHP yang perlu Anda tempatkan di bagian Global Code:
function CheckDateBetween($sDateCheckBegin, $sDateCheckEnd, $sDateBegin, $sDateEnd) { $dDate1 = strtotime($sDateCheckBegin); $dDate2 = strtotime($sDateCheckEnd); if ( ($dDate1 >= strtotime($sDateBegin)) && ($dDate2 <= strtotime($sDateEnd)) ) { return TRUE; } else { return FALSE; } }
Perhatikan kode di atas. Fungsi untuk memvalidasi input Tanggal tersebut bernama CheckDateBetween dan memiliki 4 parameter. Parameter pertama merupakan input Tanggal Awal dari Pengguna, parameter kedua merupakan input Tanggal Akhir dari Pengguna, parameter ketiga merupakan data Tanggal Awal acuan, dan terakhir parameter keempat merupakan data Tanggal Akhir acuan.
Untuk menggunakan fungsi validasi tersebut, maka Anda sebagai Web Developer cukup hanya memanggil function tersebut dari server event Row_Inserting, yang kode selengkapnya seperti ini:
// Row Inserting event function Row_Inserting($rsold, &$rsnew) { // Enter your code here // To cancel, set return value to FALSE $sDateBegin = "2014/01/01"; $sDateEnd = "2014/01/31"; if (CheckDateBetween($rsnew["Begin_Date"], $rsnew["End_Date"], $sDateBegin, $sDateEnd)==FALSE) { $this->setFailureMessage("Periode tanggal tidak di antara <strong>".$sDateBegin."</strong> dan <strong>".$sDateEnd."</strong>. Silahkan perbaiki!"); return FALSE; } return TRUE; }
Jika hasil pemanggilan function mengembalikan nilai FALSE, maka sistem akan menampilkan pesan yang memberitahukan Pengguna bahwa periode Tanggal yang diinput tidak valid karena tidak berada di dalam periode Tanggal yang dipersyaratkan. Dalam contoh di atas, kita mengasumsikan bahwa di tabel tersebut memiliki field masing-masing bernama Begin_Date dan End_Date. Kedua nilai field inilah yang akan diperiksa dan dibandingkan dengan periode Tanggal acuan di atas.
Pola seperti ini tentu saja bisa Anda terapkan untuk business-logic yang mirip-mirip dengan itu, karena PHPMaker sudah menyediakan kerangka kerja yang akan menuntun Web Developer dalam menaruh kodenya. Jika Anda ingin supaya function tersebut dapat diakses dari manapun di bagian Aplikasi Web Anda, maka cukup taruh di bagian Global Code. Setelah itu, Anda bisa menggunakannya dari server event terkait yang sesuai dengan kebutuhan Anda.
Luar biasa memang kemampuan dan fleksibilitas yang diberikan oleh PHPMaker kepada Web Developer. Anda hanya cukup menulis beberapa baris kode saja untuk mengimplementasikan business-logic tersebut. Selebihnya untuk hal-hal yang bersifat teknis, serahkan kepada PHPMaker untuk men-generate-nya. Bayangkan juga jika seandainya Anda harus mengimplementasikan hal ini secara manual menggunakan metode pengembangan yang bersifat konvensional, maka Anda harus menangani hal-hal teknis yang seharusnya tidak perlu lagi dilakukan oleh Web Developer
Sebagai Web Developer, tentu saja Anda tidak akan pernah mendapatkan keuntungan yang sangat besar ini jika tidak menggunakan PHPMaker dalam membangun Aplikasi Web Anda! Masih bertahan dengan cara-cara konvensional dalam membangun Aplikasi Web? Atau sudahkah Anda beralih menggunakan PHPMaker? 😀
Bang Masino, bgaimana caranya membuat Custom View dengan Filter tgl per hari ?
(misal saya sudah pnya filed tanggal)
misal akan membuat menu ” Penjualan Hari ini”
Gunakan fitur Extended Quick Search. Baca menu Help PHPMaker untuk informasi lebih lanjut.
Saya ingin format d/m/Y, berikut coding saya (saya buat hanya 3 parameter saja)
Apa yg salah dg coding saya, kok selalu ditolak.
Padahal tanggal sdh saya masukkan pada range begin dan end
Row_Inserting berisi:
Function CheckDateBetween tidak perlu ada memunculkan pesan di dalamnya. Biarkan apa adanya seperti logik pada artikel saya di atas.
Kalau Anda hanya memeriksa satu tanggal saja di antara dua tanggal, maka function CheckDateBetween di atas yang perlu Anda hapus hanya parameter $sDateCheckEnd.
o iya, itu saya nulisnya salah, kok ada pesannya ya. Yang benar sudah spt ini:
itu saya cek , nampaknya format harus Y/m/d
Karena saat menggunakan d/m/Y, maka $dDate2 jika beda bulan, jika saya cek dengan
strtotime($dDate2), nilainya akan < strtotime($sDateCkeck).
Tapi jika format nya Y/m/d , maka dia benar
Iya, untuk keperluan perhitungan, sebaiknya dikonversi dulu ke format Y/m/d.
thx 4 support
You’re welcome.
tanya, saya coba membuat dengan 4 bahasa, bhs indonesia-inggris-arab-jepang, tapi huruf arabnya beda2 ya hasil tampilannya. apa karena didalam komputer/phpmakernya tidak support font2 yang dibutuhkan? file zip bahasa sudah didapat/download, tapi untuk setiap field/title setelah dimasukkan translatenya tidak sama huruf/fontnya. bagaimana caranya? terimakasih
Pastikan Anda sudah mengaktifkan (beri tanda centang) pengaturan UTF-8 output files melalui menu Tools -> Advanced Settings.
Pastikan juga Database yang Anda pakai support/mendukung penggunaan charset utf-8.
tanya, saya agak bingung dengan koneksi use lookup table. kenapa setiap menggunakan link lookup table yg di formnya fieldnya saya ingin pakai text tidak bisa tampil data dari lookup table, setelah saya ganti menjadi combobox baru keluar tampilan data dari lookup table.
misalnya saya ingin lookup table nama user yg login saat itu di halaman form hadir misalnya, saya gunakan text di edit tag formnya tapi tidak langsung keluar nama usernya, tapi setelah ganti edit tag combobox baru keluar nama user, tapi ya itu user harus harus klik “silahkan pilih” setelah pilih baru kelihatan, itu kenapa ya pak? terimakasih
Pastikan Anda sudah mengaktifkan item Force selection dari panel Edit Tag.
Untuk info lebih lanjut, silahkan baca artikel ini: Nikmatnya Auto-Suggest di Aplikasi Web yang Dihasilkan oleh PHPMaker.
Pak Masino Sinaga,
Bagaimana jika kebalikan dari yg diatas BUKAN menu INPUT. Melainkan EDIT data.
Jadi hanya bisa EDIT data pada tgl saat itu juga, tgl berikut USER tdk dapat melakukan EDIT data.
Terima kasih
Gunakan server event Row_Updating. Baca topik Server Events and Client Scripts dari menu Help PHPMaker.
Bagaimana membuat validasi agar tanggal yang dimasukkan tidak boleh pada minggu ini.
Hanya boleh pilih tanggal minggu depan, lusa, dst
Terima kasih
Mirip dengan logic yang sudah dibahas pada artikel Mencegah Pengguna Memilih Tanggal yang Sudah Lewat di JSCalendar dari PHPMaker.
Silahkan modifikasi sesuai kebutuhan Anda.
terima kasih banyak, coba saya pelajari
Sama-sama.
pak masino, mohon maaf tanya, kalau PHPmaker 2018 saya coba masukan di global code dan di row_inserting kok tidak muncul ya?
Pastikan Anda sudah men-generate ulang semua file script.
Bang, gimana sih caranya buat bikin inputan yang di input cuma 1 minggu sekali. misalnya nginput harga mingguan.
Lha, tinggal dibikin saja, iya toh? Susahnya dimana coba? Hm….