Sebagai Web Developer, kita pasti pernah ingin mendapatkan ID dari Record yang terakhir ditambahkan di suatu table pada Aplikasi Web yang kita hasilkan. Apalagi jika ID tersebut nilainya bertambah secara otomatis atau auto-increment, dan ada relatif banyak Pengguna yang menambahkan data secara bersamaan. Tentu besar kemungkinan ID yang terakhir adalah ID milik Record yang terakhir ditambahkan oleh Pengguna lainnya.
Percaya atau tidak, jika Anda membangun Aplikasi Web dengan menggunakan PHPMaker, maka hal ini bisa diatasi dengan sangat mudah, cepat, dan lagi-lagi: menyenangkan! Mengapa?
Alasan Pertama, karena PHPMaker sudah menyediakan server event Row_Inserted yang akan dipanggil setelah sebuah Record berhasil ditambahkan ke Database. Dengan menggunakan server event ini, maka kita bisa mengoptimalkan variabel $rsnew untuk mendapatkan nilai ID dari Record yang terakhir ditambahkan di table yang bertalian.
Katakanlah di table suppliers terdapat field SupplierID yang tipenya Integer dan Auto Increment. Untuk mengetahui ID terakhir, maka kita cukup menaruh kode berikut ke server event tadi, sehingga kode selengkapnya menjadi:
// Row Inserted event function Row_Inserted($rsold, &$rsnew) { //echo "Row Inserted" $this->setSuccessMessage("ID Terakhir: ".$rsnew["SupplierID"]); }
Alasan Kedua, karena PHPMaker menggunakan library ADODB, dan ADODB sudah menyediakan sebuah method yang akan mengembalikan nilai ID dari Record yang terakhir ditambahkan dengan mengoptimalkan object Connection miliknya. Nama method itu adalah Insert_ID.
Method ini sangat terasa sekali manfaatnya jika kita mengeksekusi SQL INSERT INTO secara langsung menggunakan object Connection milik ADODB, sehingga kita tidak bisa mengandalkan server event di atas tadi, seperti yang ditunjukkan pada kode berikut:
global $conn; $conn->Execute("INSERT INTO Tabelku VALUES (0, 'Deskripsi tertentu')");
Nah, untuk mengetahui ID dari Record yang terakhir dimasukkan itu, maka kita cukup menggunakan kode berikut:
$this->setSuccessMessage("ID yang terakhir adalah: " . $conn->Insert_ID());
Sebagai informasi, kedua cara di atas sudah berhasil saya buktikan dengan menggunakan database MySQL pada PHPMaker versi 11.0.6.
Betapa mudahnya, bukan? 😀
efendy mengatakan
malam pak, bapak tau cara penjumlahan/pengurangan tgl & jam?
misalkan
field masuk : 07/06/2015 19:38:17
field keluar : 07/06/2015 21:12:10
jam = keluar – masuk
saya coba2 hasilnya tetap 0
kalau misalkan :
field masuk : 07/06/2015 19:38:17
field keluar : 08/06/2015 21:12:10
baru ada hasilnya tapi tetap 1 (tgl saja)
ada caranya pak? terimakasih.
Masino Sinaga mengatakan
Anda menggunakan function apa untuk menghitung selisihnya?
efendy mengatakan
Masino Sinaga mengatakan
Kalau kode seperti itu memang hanya untuk menghitung selisih hari dari dua buah tanggal. Lalu Anda menginginkan hasilnya seperti apa?
efendy mengatakan
begini pak, misalkan :
tgl awal adalah 18-06-2015 09:00:00
tgl akhir adalah 19-06-2015 18:30:00
jadi akhir – awal = 1 hari 03.30 jam
efendy mengatakan
maaf, jadi akhir – awal = 1 hari 09.30 jam
Masino Sinaga mengatakan
Google ini: calculate difference between two dates in jquery.
Rijal mengatakan
Pak Masino, dulu saya Pernah coba Tutorial ini saya implementasikan di Projek yg saya buat (Projek belajar) Pake PHP Maker 11
berhasil, tapi ketika Project PHP Maker 11 saya (copy) dan saya coba buka pake PHP Maker 12, kemudian sy Generate Ulang kok malah ada yg eror ya ?
Fatal error: Call to undefined method cbarang::setSuccessMessage() in C:\xampp\htdocs\app\baranginfo.php on line 8152
kode nya seperti ini
dulu ketika di Generate pake PHP Maker 11 aman2 saja2,
dan setelah saya coba buka kembali File asli Pake PHP Maker 11 masih tetep tidak eror (aman2 saja)
kira2 apa ya Pak, apakah ketika dibuka di Versi 12 ada yg harus di Setting ulang ? atau ada yg harus di rubah di kode nya ?
atau mungkin ada pengaruh tabel/ View yg lain dalam 1 projek ?
terimakasih..
Rijal mengatakan
sebagai informasi :
error tersebut terjadi ketika login berhasil, namun ketika diarahkan ke halaman lain (view_baranglist.php) Tidak Error.
dan ketika Logout kembali error seperti diatas (dan tidak bisa logout) session Login masih tersimpan.
Masino Sinaga mengatakan
Apakah setelah proses tambah data tersebut, user diarahkan ke halaman yang dibuat dengan Custom Files?
Rijal mengatakan
setelah proses Tambah User diarahkan ke Form add (masih tetep di Halaman itu)
namun setelah berhasil login User diarahkan ke Custom File (Beranda.php).
anehnya di Form Tambah tabel tersebut tidak eror dan masih tetep bisa menampilkan Succes Message seperti diatas, eror nya hanya setelah Login dan logout.
Masino Sinaga mengatakan
Solusinya, tambahkan kode berikut ke baris terakhir bagian Content dari Custom Files pada project PHPMaker yang bertalian:
Rijal mengatakan
Terimakasih Responnya.
saya sudah coba taruh Script diatas di barris terakhir Custom Files (Beranda.php) tapi masih tetep error Pak, kebetulan utk Custom File nya lebih dari satu apakah harus meletakkan Sript diatas ke semua Custom File ?
tapi setelah saya telusuri ternyata Penyebab error nya adalah di Pengaturan PHP=>General Option=> Audit Trail => Track Login/ Logout aktivites. jika pilihan tersebut di pilih (dicentang) maka kasus error seperti diatas terjadi, tapi jika tidak di centang tidak error.
Masino Sinaga mengatakan
Iya, di semua Custom Files yang ada di project tersebut.
Rijal mengatakan
oke Pak Masino, saya coba dulu terimakasih.
Masino Sinaga mengatakan
Sama-sama.
Teguh mengatakan
Grup | Nomor | Nama
1 1 Duren
1 2 Semangka
1 3 Jeruk
2 1 Cicak
2 2 Burung
3 1 DKI Jakarta
3 2 Jawa Barat
3 3 Jawa Tengah
Pak masino, mau tanya, membuat id auto increment (nomor) by group (grup) seperti contoh diatas di phpmaker, bagaimana caranya, mohon pencerahannya pak. Terima kasih sebelumnya
Masino Sinaga mengatakan
Prinsipnya sama dengan yang sudah saya bahas di artikel Membuat Kode Otomatis Saat Data Ditambah di Aplikasi Web dari PHPMaker.
Tinggal modifikasi saja perintah SQL SELECT supaya dikelompokkan berdasarkan field Grup.
Dayan Leksono Putro mengatakan
Tanya lagi Pak Masino, Kalau semacam struk,yang bisa ngepirnt setelah row_inserted bagaimana?
yang saya sudah lakukan
1. membuat mengcostume view menjadi format printer, rencanya langsung new tab setelah row_insert kemudian menggunakan window.print,
Masino Sinaga mengatakan
Maaf, belum bisa bantu karena belum pernah buat seperti itu. Silahkan Googling aja ya.
jefri mengatakan
Malam pak masino, saya beginer phpmaker, saya ingin membuat database anggota koperasi. saya sudah bikin tabel dengan kolom id ( primary key), nomor anggota, nama lengkap, alamat,tanggal lahir, no telp. Bagaimana cara membuat nomor anggota auto increment / auto generate dengan perpaduan tanggal lahir, kalimat, auto increment? Misalnya saya ingin add anggota baru bernama budi tanggal lahir 1 Januari 1998, Maka nomor anggotanya adalah 19980101KOPERASI0001 ( otomatis terbuat ).
Terima kasih
Salam Sejahtera
Masino Sinaga mengatakan
Artikel ini semoga bisa membantu: Membuat Kode Otomatis Saat Data Ditambah di Aplikasi Web dari PHPMaker.