Tidak semua Field harus dimasukkan datanya oleh Pengguna saat menginput atau memperbarui data. Pasti akan ada beberapa Field yang datanya akan diisi secara otomatis oleh sistem, seperti Tanggal/Jam maupun Username dari Pengguna yang sedang memasukkan atau memperbarui data tadi. Itu artinya, Field yang bertalian sebaiknya disembunyikan dari form Add maupun Edit.
Ada empat Field yang biasanya terlibat dalam business-logic seperti tadi. Keempat Field terdiri dari dua Field untuk proses penambahan data, dan dua Field lainnya untuk proses pengubahan/pemutahiran data. Sekali lagi, keempat Field ini pantang hukumnya untuk ditampilkan saat Pengguna menambah atau memperbarui data.
Katakanlah untuk proses penambahan data kita misalkan nama kedua Field tersebut adalah User_Tambah dan Tanggal_Tambah, sedangkan untuk proses pemutahiran data kita misalkan nama kedua Field lainnya itu adalah User_Ubah dan Tanggal_Ubah. Tentu nama Field ini tidak selalu harus sama dengan contoh barusan. Anda bebas menggunakan nama Field lainnya.
Pertanyaannya adalah, bagaimana cara kita membuat keempat Field tadi akan terisi otomatis datanya dari sistem? Artinya, di samping Pengguna tidak boleh melihat apalagi menginput data terkait untuk keempat Field tadi, maka kita harus mengantisipasi supaya keempat Field tadi nilainya terisi saat proses penambahan dan/atau pemutahiran data.
Beruntunglah Anda jika menggunakan PHPMaker untuk membangun Aplikasi Web, karena hal ini dapat diimplementasikan dengan sangat mudah dan cepat. PHPMaker lagi-lagi telah menyediakan fungsi global yang terkait dengan keempat Field tadi di Aplikasi Web yang dihasilkan olehnya. Sistem akan memperbarui keempat Field tadi secara otomatis tanpa harus diinput secara eksplisit oleh Pengguna akhir Aplikasi Web Anda.
Penasaran ingin tahu caranya? Sebelum kita mulai, maka pastikan di tabel Anda sudah memiliki keempat Field di atas tadi. Untuk simplifikasi, kita menggunakan keempat nama Field pada contoh di atas tadi.
Baiklah kalau begitu. Silahkan ikuti langkah-langkah berikut dengan teliti:
- Klik salah satu tabel yang diinginkan dari project PHPMaker Anda, lalu pastikan tab Fields di panel sebelah kanan sudah terpilih.
- Klik field User_Ubah, lalu di kolom Auto-Update Value pilih CurrentUserName().
- Klik field Tanggal_Ubah, lalu di kolom Auto-Update Value pilih ew_CurrentDateTime().
- Klik field User_Tambah, lalu scroll ke sebelah kanan sampai Anda melihat kolom Add Page, dan di kolom Default Value, ketikkan: CurrentUserName()
- Klik field Tanggal_Tambah, lalu scroll ke sebelah kanan sampai Anda melihat kolom Add Page, dan di kolom Default Value, ketikkan: ew_CurrentDateTime()
- Selanjutnya pastikan Anda sudah melihat kolom Edit Page, dan pada kolom Edit Tag yang berada di bawahnya, pilih: HIDDEN untuk keempat Field tersebut. Tujuannya supaya keempat Field ini tidak akan ditampilkan di form atau halaman Add.
- Terakhir, simpan perubahan tersebut di project PHPMaker Anda, lalu silahkan generate ulang semua file script dengan menggunakan PHPMaker seperti biasa.
Untuk melihat hasilnya, jalankan Aplikasi Web yang sudah di-generate tadi dari browser favorit Anda. Cobalah untuk membuka halaman Add dari tabel tadi, lalu perhatikan bahwa di form tersebut keempat Field di atas tadi tidak akan ditampilkan alias disembunyikan oleh sistem. Lanjutkan dengan mencoba menambah data baru dan pastikan sampai Anda berhasil menyimpan data tersebut.
Setelah itu, periksalah keempat Field itu dengan cara menampilkan (View) record baru tadi. Seharusnya sekarang sudah terisi datanya. Perhatikanlah bahwa antara field Tanggal_Tambah dan Tanggal_Ubah datanya tidak sama. Data di field Tanggal_Ubah biasanya lebih besar dari data di field Tanggal_Tambah.
Hal ini wajar karena data di field Tanggal_Tambah akan duluan diambil oleh sistem saat Pengguna pertama kali membuka halaman/form Add tadi. Sedangkan data di field Tanggal_Ubah akan diambil oleh sistem saat Pengguna menyimpan data tersebut ke Database. Tentu saja dalam hal ini selalu lebih besar nilai di field Tanggal_Tambah.
Artinya, selisih waktu sekian detik atau menit merupakan waktu yang diperlukan oleh Pengguna untuk menginput data di form Add tersebut. Dengan adanya data seperti ini, maka Anda dapat mengetahui durasi lamanya waktu Pengguna dalam menginput data di form Add tadi.
Selanjutnya lakukan juga untuk halaman Edit. Silahkan ubah salah satu Record yang sudah ditambahkan di proses sebelumnya. Perhatikan bahwa keempat Field di atas tadi tidak akan ditampilkan di form Edit. Setelah data berhasil disimpan, maka periksalah kembali data di field Tanggal_Ubah, maka datanya seharusnya berubah dengan data Tanggal dan Jam pada saat proses penambahan sebelumnya.
Pastikan juga bahwa Tanggal dan Jam di field Tanggal_Tambah tidak berubah saat Anda mengubah data tadi (karena kita tidak melibatkan field ini dalam proses pemutahiran data).
Dengan menggunakan keempat Field tersebut, maka ada beberapa keuntungan yang dapat diperoleh. Pertama, kita dapat mengetahui kapan sebuah Record itu pertama kali diinput dan siapa yang menginputnya. Kedua, kita juga dapat mengetahui kapan sebuah Record itu terakhir diubah dan siapa yang mengubahnya. Ketiga, kita dapat menganalisis selisih waktu antara Tanggal/Jam pertama kali data ditambah dengan Tanggal/Jam terakhir data diubah.
Jika selisih durasi waktu antara Tanggal_Tambah dan Tanggal_Ubah relatif kecil, maka kita dapat mengambil kesimpulan bahwa data tersebut baru saja ditambah dan belum pernah diubah. Tapi jika selisihnya lebih dari satu atau beberapa jam bahkan sampai lebih dari beberapa hari, maka kita dapat mengambil kesimpulan bahwa data tersebut sudah pernah diubah sejak pertama kali ditambah.
Wow, betapa cepat dan mudahnya, bukan? PHPMaker memang keren abizzzz, dah! Kagak ada lawannya, jek! 😀
Cak Sobri mengatakan
Cara lain bisa seperti ini om :
1. Klik salah satu tabel yang diinginkan dari project PHPMaker Anda, lalu pastikan tab Fields di panel sebelah kanan sudah terpilih.
2. Klik field User_Ubah dan User_Tambah, lalu di kolom Auto-Update Value pilih CurrentUserName().
3. Klik field Tanggal_Ubah dan Tanggal_Tambah, lalu di kolom Auto-Update Value pilih ew_CurrentDateTime().
4. Klik field User_Ubah dan Tanggal_Ubah, lalu di kolom Add hapus tanda ceklist agar tidak tampil di halaman Add
5. Klik field User_Tambah dan Tanggal_Tambah, lalu di kolom Edit hapus tanda ceklist agar tidak tampil di halaman Edit
6. Terakhir, simpan perubahan tersebut di project PHPMaker Anda, lalu silahkan generate ulang semua file script dengan menggunakan PHPMaker seperti biasa.
Ini yang biasa aku pakai 🙂
Masino Sinaga mengatakan
Hati-hati dengan trik nomor 2 dan 3. Jika Anda menggunakan Auto-Update Value juga untuk field User_Tambah dan Tanggal_Tambah, maka saat data diubah di form Edit, kedua field ini akan selalu ikut diperbarui dengan Tanggal/Jam serta Username saat itu.
Seharusnya kedua field tadi tidak menggunakan function dari Auto-Update Value, tapi menggunakan function yang Anda ketikkan di Default Value di bawah kolom Add Page.
Sedangkan trik nomor 4 dan 5 dulu saya pakai itu juga, tapi cukup ribet karena kalau tidak teliti sering menjadi tertukar. Solusi yang paling simpel dan cepat yaitu cukup dengan membuatnya menjadi HIDDEN.
Septian mengatakan
Maaf pak masino, apakah buat pphmaker versi yang sekarang masih tetap sama memakai cara seperti itu?
dan apakah default value dr database nya perlu di setting dahulu?
Saya telah mencoba nya berulang2 kali, tetapi hasilnya createdby / UserTambah nya bernilai CurrentUserName.. seharusnya bernilai username yang login
monggo tanggapannya pak 🙂
Masino Sinaga mengatakan
Seharusnya tidak ada masalah jika Anda mengikuti ketujuh langkah di atas dengan benar.
diki mengatakan
malam bang, saya mau tanya bagaimana caranya auto value bila kita klik kode barang maka otomatis files nama barang terisi sesuai kode barang yang di klik
Masino Sinaga mengatakan
Anda bisa menggunakan fitur Auto fill di PHPMaker.
Silahkan baca topik Lookup Table dari menu Help PHPMaker. Lalu lihat bagian Auto fill di dalam topik tadi.
Taufiq mengatakan
Halo Pak Masino
Bagaimana jika field createdby /user tambah nya bernilai CurrentUserName/userlogin terisi otomatis
Mohon bantuannya. Terima kasih.
Masino Sinaga mengatakan
Wah, ini sudah 4 tahun baru terbaca sekarang, hiks. 😛
Jawabannya ya seperti yang diterangkan pada artikel di atas tadi.
muslih mengatakan
Tanya gan bagaimana caranya post value untuk di proses oleh custom file setelah event add record
Masino Sinaga mengatakan
Biasanya, saya menggunakan $_GET di Custom File-nya untuk menangkap nilai yang dikirimkan melalui parameter di dalam link dari table lain.
Bagaimana kalau seperti itu?
Dewa Budi mengatakan
selamat sore Pak Masino,
Saya ada buat report dari Page Render dengan kriteria yg dipost ke url,
Mohon pencerahan koq tidak ada value yg terkirim ke url ya pak?
Kalo saya coba ganti jadi string “1”, bisa terkirim ke url
Mohon pencerahan pak masino
Masino Sinaga mengatakan
Itu artinya, kode
tidak menghasilkan apapun. Itu di halaman mana Page_Render-nya? List? View? Edit?
Dewa Budi mengatakan
Page_Render di halaman List, pak Masino.
Masino Sinaga mengatakan
Data belum semuanya dimuat saat server event Page_Render dieksekusi. Apalagi di halaman List, data bisa lebih dari satu baris, jadi Anda tidak bisa menggunakan kode di server event Page_Render seperti tadi.
Untuk mengambil data di halaman List, Anda disarankan untuk menggunakan server event Page_DataRendering, yang artinya saat data sedang dirender.
Atau, Anda bisa juga menggunakan server event Row_Rendered jika ingin mengacu secara spesifik kepada kolom dan data tertentu.
Dewa Budi mengatakan
Terima Kasih Pak Masino,
Saya akan coba lagi