Di artikel sebelumnya, kita sudah membahas betapa mudahnya menyimpan pesan error yang terjadi saat proses Import Data dilakukan dari Aplikasi Web yang dihasilkan oleh PHPMaker 2020 dan PHPMaker 2021. Di artikel berikut kita membahas betapa mudahnya memvalidasi data yang akan di-import.
PHPMaker 2021 sudah menyediakan server event Row_Import yang terdapat di halaman List pada project PHPMaker 2021 Anda. Sesuai dengan namanya, server event ini akan dieksekusi oleh sistem setiap satu baris data sedang di-import ke database.
Katakanlah pada project demo2021, kita ingin memvalidasi data yang terdapat di file products.csv, jika data pada field ProductName yang akan di-import ternyata sudah ada di database, maka data dari file .csv tersebut tidak boleh di-import lagi ke database.
Cukup dengan menyisipkan sedikit kode PHP ini saja ke server event Row_Import, maka kita sudah dapat memvalidasi data yang akan di-import:
// cek apakah produk dengan nama yang sama sudah pernah ada di database $cek = ExecuteScalar("SELECT ProductName FROM products WHERE ProductName = '" . $row["ProductName"] . "'"); if (!empty($cek)) { // jika sudah ada $this->setFailureMessage("Product " . $row["ProductName"] . " already exists."); // tampilkan pesan return false; // kembalikan nilai false untuk membatalkan import pada row yang bertalian }
Atau, kode selengkapnya di server event Row_Import jika sebelumnya tidak ada kode yang ditambahkan ke server event ini adalah seperti berikut:
// Row Import event function Row_Import(&$row, $cnt) { //Log($cnt); // Import record count //var_dump($row); // Import row //return false; // Return false to skip import // cek apakah produk dengan nama yang sama sudah pernah ada di database $cek = ExecuteScalar("SELECT ProductName FROM products WHERE ProductName = '" . $row["ProductName"] . "'"); if (!empty($cek)) { // jika sudah ada $this->setFailureMessage("Product " . $row["ProductName"] . " already exists."); // tampilkan pesan return false; // kembalikan nilai false untuk membatalkan import pada row yang bertalian } return true; }
Setelah itu, pastikan untuk men-generate ulang semua file script seperti biasa menggunakan PHPMaker 2021.
Jika kriteria pada proses validasi tersebut memenuhi syarat, maka di form Import akan muncul pesan error seperti ini:
Imported 2 of 2 records from products.csv (success: 0, failure: 2) row 1: Product Chai (new favour) already exists. row 2: Product Chang (new favour) already exists. log file: uploads/temp__1670671356/1670671356.txt
Itu artinya, ada 2 record yang akan di-import dari file products.csv, dan kedua record tersebut seluruhnya gagal di-import. Penyebabnya dapat dilihat pada pesan error yang berada di bagian berikutnya, dimana product yang masing-masing bernama Chai (new favour) dan Product Chang (new favour) sudah ada.
Kemudian, di baris paling bawah, ditampilkan log file-nya, yaitu berada di sub-folder temp__1670671356 yang berada di dalam sub-folder uploads, dengan nama file 1670671356.txt.
Jika di project PHPMaker 2021 yang Anda jalankan sudah menggunakan Masino Extensions, maka ketika file log ini dibuka, isinya adalah sebagai berikut:
<?php $val = array ( 'filetoken' => '1670671356', 'file' => 'products.csv', 'totalCount' => 2, 'count' => 2, 'successCount' => 0, 'failCount' => 2, ); $err: array ( 'row1' => 'Product Chai (new favour) already exists.', 'row2' => 'Product Chang (new favour) already exists.', ); ?>
Jika Anda perhatikan informasi yang terdapat di artikel saya yang berjudul Pesan Error Saat Import Data Sekarang Dapat Disimpan ke File Log dari PHPMaker 2021, maka itu artinya pesan error hasil validasi tadi akan otomatis tersimpan di file log tadi.
Rasanya kurang pas jika belum mencoba demonya. Silahkan klik di sini (jika minta login, silahkan gunakan username admin dan password master), lalu cobalah untuk meng-import data ke table products tersebut.
Untuk contoh file yang berisi data yang akan di-import, dapat Anda download salah satu dari file berikut:
– products.csv
– products.xls
Betapa nikmatnya, bukan? Pesan error hasil validasi pun sekarang sudah dapat disimpan ke file log, sehingga mempermudah kita untuk menganalisis, mengapa data yang di-import gagal.
Meskipun tulisan ini membahas PHPMaker 2021, tapi sebagai bonus, kemampuan ini masih dapat Anda nikmati untuk project PHPMaker 2020, sepanjang Anda menggunakan Masino Extensions for PHPMaker sesuai dengan versi PHPMaker-nya.
[…] / PHPMaker / Pesan Error Saat Import Data Sekarang Dapat Disimpan ke File Log dari PHPMaker 2021 Mudahnya Memvalidasi Data yang Akan Di-Import dari PHPMaker 2021 Cara Mengetahui Detail Error di Aplikasi Web yang Dihasilkan oleh PHPMaker […]