Di tulisan sebelumnya kita sudah membahas mengenai server event Row_Inserting yang akan dipanggil ketika sebuah Record sedang ditambahkan dan disimpan ke Database. Dengan menggunakan server event ini, maka Anda sebagai Web Developer masih diberi kesempatan oleh PHPMaker untuk menambahkan business-logic sendiri sebelum sebuah Record benar-benar disimpan ke Database. Bisa berupa proses pemeriksaan atau validasi Record, atau bahkan membatalkan proses penambahan jika sebuah Record tidak sesuai dengan kondisi yang diharapkan.
Di tulisan yang ini kita akan membahas server event yang mirip dengan server event tadi. Namanya adalah Row_Inserted, dan berada di bawah lokasi Server Events -> Table-Specific -> Common. Pastikan sebelumnya Anda sudah memilih salah satu Table yang Anda inginkan dari panel Database di sebelah kiri dari project PHPMaker Anda, untuk memastikan Anda menambahkan kode di server event pada Table yang tepat.
Seperti namanya, server event ini akan dipanggil setelah berhasil menambahkan sebuah Record ke Database. Argumen dari server event ini ada dua, yaitu array dari Record yang lama (jika menggunakan penyalinan (Copy) Record), dan array dari Record yang baru untuk Record yang telah berhasil ditambahkan.
Server event ini cocok digunakan jika ingin menjalankan kode tambahan Anda setelah sebuah Record atau seluruh dari kumpulan Record yang berhasil ditambahkan ke Database. Jadi, dia hanya dijalankan sekali saja, begitu setelah proses penambahan satu atau beberapa Record berhasil dilakukan ke Database. Bandingkan dengan Row_Inserting yang akan dipanggil oleh sistem untuk setiap Record yang sedang ditambahkan dan disimpan ke Database.
Mari simak contoh di bawah ini. Di kode berikut ditunjukkan betapa mudahnya kita sebagai Web Developer mendapatkan ID (pada field yang bertipe Auto Increment) dari Record yang baru saja berhasil ditambahkan dan disimpan ke Database.
function Row_Inserted(&$rsold, &$rsnew) { $this->setSuccessMessage("Record berhasil ditambahkan. ID dari record yang baru adalah " . $rsnew["ID"]); }
Setelah file script untuk Aplikasi Web di-generate ulang dari PHPMaker, lalu Aplikasi Web tersebut dipanggil melalui browser, dan Pengguna berhasil menambahkan Record ke Database, maka sistem akan menampilkan pesan yang berisi ID dari Record yang terakhir berhasil ditambahkan ke Database.
Satu lagi kemudahan yang disediakan oleh PHPMaker dari sekian banyaknya fitur yang memungkinkan Web Developer menambahkan business-logic sendiri di Aplikasi Web yang di-generate olehnya. 🙂
Rijal mengatakan
Pak Masino, ternyata Kode tersebut tidak berjalan ketika Script di Generate tanpa ‘ Header’ & ‘Footer’
tapi ketika di Generate dengan ‘ Header’ & ‘Footer’ berjalan dengan baik.
apakah mmang sperti itu, atau ada pengaturan khusus ?
trimakasih.
Masino Sinaga mengatakan
Betul, karena kode di atas fungsinya hanya untuk menampilkan pesan, di mana pesan tersebut merupakan bagian dari kode yang menampilkan Header. Jadi, jika Header tidak diikutkan saat men-generate, maka kode yang menampilkan pesan tidak akan pernah dieksekusi.
Rijal mengatakan
oke Pak Masino, trimakasih atas Pencerahanya Pak..
Masino Sinaga mengatakan
Sama-sama. 🙂
Roby mengatakan
Pagi pak
Bila php kan selalu menggunakan
PERTANYAAN SAYA BILA While($r=mysqli_fetch_array ($sql)) di phpmaker seperti apa pak kodenya trimakasih
Masino Sinaga mengatakan
Saya kasih tau clue-nya saja ya. Silahkan pelajari konsep library ADODB untuk PHP. Semoga berhasil. 🙂
hendra mengatakan
Kalau mengambil nomor terakhir, tepat sebelum data tersimpan, pakai event apa ya pak ?
Saya saat ini menggunakan
function Row_Inserting($rsold, &$rsnew) {
$UserCode=CurrentUserInfo(“UserCode”);
$rsnew[“cPSO_No”]=GetNomor();
return TRUE;
}
namun akan error saat multi user, karena pengambilan nomornya sama
Masino Sinaga mengatakan
Iya, tergantung siapa yang duluan dapat. Coba ulangi lagi simpan-nya, biasanya yang kedua dan seterusnya gak error lagi.
Atau, cara yang paling aman, gunakan field auto increment dari database-nya. Jadi, sudah ditangani otomatis oleh sistem, dan gak bakalan bentrok meskipun multi-user.
hendra mengatakan
Karena tipe data saya varchar, krn no dok nya alfanumeric.
Event apa yg dapat dipakai , utk mengambil nomor sebelum tersimpan.
Masino Sinaga mengatakan
Ya Row_Inserting itu. Ubah struktur data nomor-nya, usahakan nomor yang benar-benar unik, bila perlu menyertakan tanggal, jam, menit, detik, dan sepersepuluh detiknya. Jadi, gak bakalan pernah bentrok.
hendra mengatakan
Bagaimana ya pak codingnya , jika ada Error maka return False lalu pangging function GetNomor lagi.
Karena saat ini, coding saya, jika error, user harus buka dari awal
Masino Sinaga mengatakan
Ya tinggal kembalikan aja nilai FALSE, lalu tampilkan pesan di dalam server event Row_Inserting tadi.
Contoh:
hendra mengatakan
Terima kasih banyak pak.
Begini ya?
Masino Sinaga mengatakan
Iya, kira-kira begitulah.