Masino Sinaga

Web Development and PHPMaker

Anda di sini: Beranda / PHPMaker / Mudahnya Menerapkan Rule Penyimpanan Data di Master/Detail Add dari PHPMaker
Mudahnya Menyembunyikan Tombol Add di Halaman View dari PHPMaker
Username dan Password Sekarang Sudah Dienkripsi di File Config PHPMaker 2020

Mudahnya Menerapkan Rule Penyimpanan Data di Master/Detail Add dari PHPMaker

Ming, 23 Februari 2020 oleh Masino Sinaga 4 Komentar

Salah satu fitur unggulan di PHPMaker sejak dulu sampai sekarang adalah kemampuan untuk menambah data Master dan Detail sekaligus dalam satu halaman. Pengguna bisa langsung menambahkan data di bagian Master, dan juga data yang bisa mencapai lebih dari satu baris di bagian Detail.

Mungkin tidak banyak di antara kita yang mengetahui, bagaimana business-logic penyimpanan data di Master/Detail Add tadi. Karena ada lebih dari satu tabel yang terlibat di halaman ini (tabel Master dan tabel Detail), maka kita harus bisa memastikan terlebih dulu, bagaimana aturan yang digunakan oleh PHPMaker saat proses penyimpanan datanya.

Sampai dengan versi 2020, PHPMaker masih menggunakan aturan yang apabila validasi di bagian tabel Detail tidak lolos, maka data di tabel Master akan tetap tersimpan ke Database. Artinya, dalam hal ini data di bagian tabel Detail yang terkait dengan record di tabel Master tadi menjadi kosong. Hanya data di tabel Master saja yang tersimpan.

Tentu saja, sebagai Web Developer, kadang-kadang kita tidak menginginkan kondisi tersebut terjadi. Seringkali bahkan kita harus menerapkan aturan, bahwa data di bagian Detail juga harus ada tersimpan ke Database jika data Master-nya berhasil masuk ke Database. Artinya, kita tidak boleh mengijinkan data Detail kosong, sementara data Master-nya berhasil masuk ke Database.

Jadi, dalam hal ini kita harus bisa menangani kemungkinan jika data di tabel Detail tidak lolos proses validasi, maka data di bagian Master tidak boleh tersimpan ke Database. Kesimpulannya, data di bagian Master dan Detail tadi benar-benar harus sudah lolos proses validasi oleh sistem, barulah bisa disimpan sekaligus ke Database.

Pertanyaannya, bagaimana cara kita untuk menerapkan aturan tadi? Sementara yang kita ketahui, PHPMaker masih membolehkan data Master tersimpan, tapi data di tabel Detail tidak tersimpan sama sekali.

Untungnya, PHPMaker sudah menyediakan server event yang bernama Grid_Inserting. Melalui server event ini, kita bisa menangani jika data di tabel Master sudah terlanjur tersimpan, maka kita harus menghapusnya, karena sistem masih tetap menampilkan form Master/Detail Add dalam keadaan terbuka, jika proses validasi di bagian tabel Detail tidak lolos.

Untuk menerapkan aturan yang kita inginkan tersebut, maka kita bisa menggunakan kode berikut di dalam server event Grid_Inserting milik tabel Detail, selengkapnya begini:

// Grid Inserting event
function Grid_Inserting() {
	// Enter your code here
	// To reject grid insert, set return value to FALSE

	$rsnew = $this->getGridFormValues(); // Get the form values of the new records as an array of array
	$Jumlah_Kirim = 0;
	$sMsg = "";
	$i = 0;
	foreach ($rsnew as $row) { // Loop through the new records
		$Jumlah_Kirim = intval($row["Jumlah_Kirim"]);
		if (empty($Jumlah_Kirim)) {
			$sMsg .= "<strong>" . $row["Barang"] . "</strong>, ";
			$i++;
		}
	}
	$sMsg = rtrim($sMsg, ",");
	if (!empty($sMsg)) {
		Execute("DELETE FROM kirim WHERE ID_Transaksi = '" . $GLOBALS['kirim']->ID_Transaksi->CurrentValue . "'");
		$this->setFailureMessage("Ada <strong>" . $i . "</strong> barang yang Jumlah Kirimnya masih kosong, yaitu: " . $sMsg . ".<br><br>Pastikan Jumlah Kirim tidak kosong ...");
		return FALSE;
	}
	
	return TRUE;
}

Dari contoh kode di atas, kita memvalidasi bahwa tidak boleh ada record yang nilai di field Jumlah_Kirim bernilai nol atau kosong. Jika ada, maka kita harus menampung data Barangnya ke dalam variabel $sMsg di dalam blok loop foreach, dan jika variabel ini tidak kosong, maka itu artinya ada data di bagian Detail yang tidak lolos validasi.

Selanjutnya, kita menampilkan pesan dengan memanggil method setFailureMessage milik object Table atau Page, dengan menampilkan Barang mana saja yang tidak lolos validasi, tapi… sebelumnya kita harus menghapus data di tabel kirim sebagai Master-nya. Jangan lupa, kita harus mengembalikan FALSE supaya form Master/Detail Add masih dalam posisi terbuka.

Betapa mudah dan menyenangkan sekali, bukan? Cukup melalui server event Grid_Inserting, kita sudah bisa menerapkan business-logic penyimpanan data di halaman Master/Detail Add.

Hehe, masih membuat aplikasi web dengan cara-cara konvensional, dan belum menggunakan PHPMaker? 😉

Ditempatkan di bawah: PHPMaker Ditag dengan:Belajar PHPMaker, Master/Detail, Master/Detail Add, PHPMaker 2020, PHPMaker Indonesia, Tutorial PHPMaker

Masino Sinaga

Web Developer pengguna PHPMaker untuk membangun Aplikasi Web sejak tahun 2004. Sampai sekarang masih aktif dan rajin membagikan pengalamannya menggunakan PHPMaker melalui situs masinosinaga.com, ilovephpmaker.com, dan phpmakerprojects.com.

Mudahnya Menyembunyikan Tombol Add di Halaman View dari PHPMaker
Username dan Password Sekarang Sudah Dienkripsi di File Config PHPMaker 2020

Komentar

  1. ameisfine mengatakan

    Sel, 3 Maret 2020 pada 1:53 pm

    Dengan tujuan yang sama, Bagaimana jika kita menggunakan fitur field mandatory saja Pak? bukannya bisa saja kan pak? Jadi data tidak bisa save jika ada field kosong di entry detail table.

    Balas
    • Masino Sinaga mengatakan

      Sel, 3 Maret 2020 pada 7:15 pm

      Jika yang dimaksudkan adalah dengan mengaktifkan opsi Required dari Fields setup -> Edit Tag -> Validation, maka tidak selamanya bisa lolos validasi jika diisi dengan nilai 0 (nol). Sistem akan menganggap nilainya ada, sehingga validasi akan selalu mengembalikan nilai TRUE.

      Untuk case seperti tadi, maka tetap harus divalidasi ulang lagi dari server event Grid_Inserting tersebut.

      Balas
      • ameisfine mengatakan

        Kam, 5 Maret 2020 pada 11:25 am

        Iya betul itu yg sy maksud pak. Oke2 terimakasih atas pencerahannya..

        Balas
        • Masino Sinaga mengatakan

          Kam, 5 Maret 2020 pada 1:06 pm

          Sama-sama. 😉

          Balas

Tinggalkan Balasan Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.

Pos-pos Terbaru

  • Masino Extensions untuk PHPMaker 2024 Sudah Dirilis, Silahkan Download!
  • Fitur-Fitur Masino Extensions untuk PHPMaker 2024
  • Review PHPMaker 2024
  • Mudahnya Mengunci Record dengan Javascript Count Down di PHPMaker 2023
  • Ini Alasan Kenapa Kalian Harus Beralih ke PHP 8

Menu

  • Siapa Saya?
  • Web Development
  • PHPMaker
  • Umum
  • Syarat dan Ketentuan
  • Sitemap (Peta Situs)
  • Komentar

Komentar Terbaru

  • Masino Extensions untuk PHPMaker 2024 Sudah Dirilis, Silahkan Download! – Masino Sinaga pada Fitur-Fitur Masino Extensions untuk PHPMaker 2024
  • Fitur-Fitur Masino Extensions untuk PHPMaker 2024 – Masino Sinaga pada Custom Domain URL di Masino Extensions untuk PHPMaker 2020
  • Fitur-Fitur Masino Extensions untuk PHPMaker 2024 – Masino Sinaga pada Membatasi Akses Versi Live dan Versi Development Aplikasi Web dari PHPMaker
  • Fitur-Fitur Masino Extensions untuk PHPMaker 2024 – Masino Sinaga pada Nomor Urut Record di Export Data pada PHPMaker 2020 dan PHPMaker 2021
  • Masino Sinaga pada Review PHPMaker 2024

Situs Terkait

  1. I Love PHPMaker
  2. Situs Resmi PHPMaker
  3. Forum Diskusi PHPMaker
  4. PHPMaker di IlmuKomputer.com
  5. PHPMaker Projects
  6. PHPMaker Learning

Baru di PHPMaker?

Baca ini terlebih dulu ...

  1. Ayo Menjadi Web Developer yang Cerdas!
  2. PHPMaker: PHP Code Generator + PHP Framework
  3. Pertanyaan-Pertanyaan yang Paling Sering Diajukan Seputar PHPMaker
  4. Tips buat Anda Pemula yang Baru Mengenal dan Menggunakan PHPMaker
  5. Bacalah Help, Bacalah Help, dan Bacalah Help di PHPMaker!

(c) Masino Sinaga 2009 - 2023 | WordPress | Catat masuk | Kembali ke atas