Masino Sinaga

Web Development and PHPMaker

Anda di sini: Beranda / PHPMaker / Mudahnya Memvalidasi Data Menggunakan Fields jQuery Plugin dari PHPMaker
Memvalidasi Bulan dan Tahun pada 2 Buah Tanggal Harus Sama dari PHPMaker
Mudahnya Menimpa Pesan Error Duplicate Primary Key dari PHPMaker

Mudahnya Memvalidasi Data Menggunakan Fields jQuery Plugin dari PHPMaker

Sen, 11 April 2016 oleh Masino Sinaga 8 Komentar

Ada yang masih ingat dengan Fields jQuery Plugin di PHPMaker? Fitur ini mulai ada sejak versi 12. Tujuan utamanya untuk memudahkan Web Developer saat mengambil dan/atau memvalidasi data yang diinput oleh Pengguna Akhir Aplikasi Web.

Mungkin ada yang bertanya, apa yang menyebabkan menjadi mudah? Jawabannya, karena Fields jQuery Plugin menyederhanakan cara mengakses nilai dari suatu elemen di form. Tidak seperti jika kita menggunakan kode jQuery Native (asli) yang mengandalkan id dari elemen yang bertalian, maka dengan menggunakan Fields jQuery Plugin, kita tidak perlu lagi mengandalkan id dari elemennya. Kita dapat mengakses nilai dari suatu elemen berdasarkan nama asli Field-nya.

Seperti yang kita ketahui, id dari suatu elemen input di suatu Form yang di-generate oleh PHPMaker selalu diawali dengan prefix x_. Jika menggunakan kode jQuery Native, maka id elemen yang diawali dengan x_ tadi harus selalu kita gunakan. Bagi sebagian Web Developer mungkin hal ini cukup merepotkan, karena harus mengingat-ingat prefix tadi. Bagi sebagian Web Developer mungkin tidak menjadi masalah.

Meskipun demikian, fitur Fields jQuery Plugin ini tentu saja tetap sangat membantu. Sebagai Web Developer kita bahkan bisa menganalog-kan style validasi data menggunakan kode jQuery melalui bagian Client Scripts tadi menjadi hampir sama dengan kode PHP melalui Server Events.

Katakanlah kita ingin menambahkan validasi data terhadap dua Field sekaligus saat Pengguna sedang menambah data. Jika data pada Field_Satu tidak ada nilainya, dan data pada Field_Dua ada nilainya, maka sistem akan menampilkan pesan peringatan kepada Pengguna supaya mengisi data terlebih dulu di Field_Satu. Jika tidak, maka sistem tidak akan pernah menyimpan data tersebut.

Apabila kita menggunakan kode di sisi server, maka kita bisa menggunakan server event Row_Inserting yang terdapat di bawah lokasi Server Events -> Table-Specific -> Common, sehingga kode PHP selengkapnya menjadi kira-kira seperti ini:

// Row Inserting event
function Row_Inserting($rsold, &$rsnew) {
    // Enter your code here
    // To cancel, set return value to FALSE
    if ( ($rsnew["Field_Satu"] == "") &&  ($rsnew["Field_Dua"] <> "") ) {
        $this->setFailureMessage("Field Satu tidak boleh kosong jika Field Dua memiliki nilai.");
        return FALSE;
    }
    return TRUE;
}

Sekarang mari kita bandingkan dengan kode di sisi client. Cukup tambahkan kode berikut ke dalam Form_CustomValidate yang terdapat di bawah lokasi Client Scripts -> Table-Specific -> Add/Copy Page, sehingga kode selengkapnya menjadi seperti ini:

function(fobj) { // DO NOT CHANGE THIS LINE!
 	// Your custom validation code here, return false if invalid.
 	var $row = $(this).fields();
	if ($row["Field_Satu"].value() == "" && $row["Field_Dua"].value() != "")
 		return this.OnError($row["Field_Satu"], "Field Satu tidak boleh kosong jika Field Dua memiliki nilai.");
 	return true;
}

See? Sudah lihat perbandingan antara kode PHP di sisi server dan kode jQuery di sisi client itu, ‘kan? Sangat mirip style keduanya, khususnya jika menggunakan Fields jQuery Plugin di kode barusan. 🙂

Tidak hanya itu saja. Ternyata dengan menggunakan Fields jQuery Plugin, kita dapat mengabaikan tipe control yang digunakan oleh elemen tersebut. Dari contoh kode barusan, maka kita cukup hanya mengambil nilai dari property value milik Fields jQuery Plugin.

Sekarang bandingkanlah jika menggunakan kode Javascript atau jQuery Native, maka kita harus memperhatikan tipe control-nya. Contoh, jika kedua tipe control tadi adalah CheckBox, maka kode di atas menjadi kira-kira seperti ini:

function(fobj) { // DO NOT CHANGE THIS LINE!
 	// Your custom validation code here, return false if invalid.
  	elm_Field_Satu = this.GetElements("x_Field_Satu[]");
 	elm_Field_Dua = this.GetElements("x_Field_Dua[]");
 	if ( (elm_Field_Satu && !ew_IsHidden(elm_Field_Satu) && !ew_HasValue(elm_Field_Satu)) && (elm_Field_Dua && !ew_IsHidden(elm_Field_Dua) && ew_HasValue(elm_Field_Dua)) )
 		return this.OnError(elm_Field_Satu, "Field Satu tidak boleh kosong jika Field Dua memiliki nilai.");
 	return true;
}

Karena kita menggunakan kode Javascript atau jQuery Native, dan kedua elemen menggunakan control CheckBox dalam contoh di atas misalnya masing-masing tipe-nya enum(‘Y’, ‘N’), maka id elemen di atas memiliki akhiran []. Sedikit agak repot jika menggunakan kode Javascript atau jQuery Native.

O iya, sebagai bocoran saja. Kode validasi Javascript yang terakhir ini sebenarnya saya peroleh dari kode validasi di sisi client yang di-generate oleh PHPMaker. Tentu saja kita harus berpedoman kepada kode yang dihasilkan oleh PHPMaker tadi jika ingin menggunakannya di bagian Form_CustomValidate.

So? Kesimpulannya, usahakanlah untuk selalu menggunakan Fields jQuery Plugin. Karena di samping lebih sederhana dan simpel, kita sebagai Web Developer tidak perlu lagi repot-repot menyesuaikan kode untuk id elemen sesuai dengan tipe control yang digunakan oleh Field tersebut.

Ditempatkan di bawah: PHPMaker Ditag dengan:Belajar PHPMaker, Client Scripts, Client-Side, Fields jQuery Plugin, Javascript, 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.

Memvalidasi Bulan dan Tahun pada 2 Buah Tanggal Harus Sama dari PHPMaker
Mudahnya Menimpa Pesan Error Duplicate Primary Key dari PHPMaker

Komentar

  1. Alex mengatakan

    Sel, 9 Mei 2017 pada 4:27 pm

    Mau tanya pak
    Bila filed_satu tidak boleh sama dengan filed_dua gimana merubahnya pak di row detil pak…terimakasih

    Balas
    • Masino Sinaga mengatakan

      Rab, 10 Mei 2017 pada 10:13 pm

      Yang mau diubah itu apanya ya?

      Balas
      • alex mengatakan

        Rab, 10 Mei 2017 pada 11:25 pm

        contoh kodenya pak

        Balas
        • Masino Sinaga mengatakan

          Jum, 12 Mei 2017 pada 9:07 am

          Yang ditanya mau diubah apanya, kok malah minta contoh kode? Gagal paham saya!

          Balas
  2. Alex mengatakan

    Jum, 12 Mei 2017 pada 1:03 pm

    Di row input detil dari mastr detil itu ada beberapa row…
    Di row 1 sy sudah input field kode
    kode 001
    Di row 2 sy input lg kode 001 lg…data tidak tersimpan karena data duplikat antara row 1 dan row 2…di database dan field phpmaker sy tidak buat primary key di field kodenya karena bila dibuat primary key bila sebelumnya sudah ada kode itu data udah jelas tidak tersimpan. yg sy ingin terapkan bukan seperti itu, yg sy ingin terapkan data antara row 1 dan 2 tidak boleh duplikat dan bukan dari databesnya
    Yg jd pertanyaan sy apakah kode di atas bisa diterapkan untuk masalah seperti itu. Terimakasih

    Balas
    • Masino Sinaga mengatakan

      Sab, 13 Mei 2017 pada 12:25 am

      Jawabannya jelas, tidak bisa. Mengapa? Karena kode di artikel atas untuk memeriksa kondisi nilai di Field_Satu dan Field_Dua.

      Balas
      • Alex mengatakan

        Ming, 14 Mei 2017 pada 1:02 am

        Cara membuat yg sy maksud gimana pak…sy sudah coba tutor php maker belum jg ketemu hasilnya

        Balas
        • Masino Sinaga mengatakan

          Jum, 19 Mei 2017 pada 2:08 pm

          Untuk apa dibuat lagi? Kan sudah ditangani oleh PHPMaker saat data akan disimpan, jika ada record yang duplikat, maka akan muncul pesan, dan proses penyimpanan dibatalkan.

          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