Masino Sinaga

Web Development and PHPMaker

Anda di sini: Beranda / PHPMaker / Menyesuaikan Item Secara Dinamis pada Control Combobox di PHPMaker 2021
Begini Cara Menampilkan Konten Custom Files ke File PDF dari PHPMaker 2021 dan FPDF
Mudahnya Menangani Field Upload yang Tidak Ada Filenya di PHPMaker 2021

Menyesuaikan Item Secara Dinamis pada Control Combobox di PHPMaker 2021

Sab, 3 April 2021 oleh Masino Sinaga 4 Komentar

Tidak percuma memang PHPMaker 2021 menggunakan tagline The Best Gets Even Better, seperti yang ditampilkan pada website resminya: https://phpmaker.dev. Terbukti masih yang terbaik di kelasnya, PHPMaker juga terbukti semakin lebih baik dari versi-versi major sebelumnya.

Salah satu yang semakin baik itu bisa kita rasakan sendiri dari salah satu server event yang bernama Lookup_Selecting. Seperti namanya, server event ini akan dijalankan sebelum membangun SQL untuk memilih record-record dari lookup table.

Artinya, kita sebagai Web Developer masih diberi kesempatan melalui server event Lookup_Selecting ini untuk mengganti filter, supaya item-item yang ditampilkan bisa disesuaikan juga secara dinamis seperti yang kita butuhkan.

Di server event Lookup_Selecting ini, nama field, object Lookup, dan filter untuk lookup dapat ditampilkan dengan kode ini:

var_dump($fld->Name, $fld->Lookup, $filter);

$fld->Lookup adalah sebuah object Lookup. Untuk mengganti SQL lookup, maka kita dapat memodifikasi properties berikut milik object Lookup tadi:

UserSelect, yang merupakan pernyataan SELECT (hanya klausa SELECT dan FROM)
UserFilter, yang merupakan klausa WHERE
UserOrderBy, yang merupakan klausa ORDER BY

Dari menu Help atau Bantuan yang disediakan di aplikasi PHPMaker, kita dapat melihat 5 contoh kode berikut untuk menyesuaikan item-item yang terdapat di dalam field Lookup tersebut.

Di contoh pertama, kita dapat menambahkan filter tambahan ke filter table lookup.

function Lookup_Selecting($fld, &$filter) {
    // var_dump($fld->Name, $fld->Lookup, $filter); // untuk menampilkan nama field, object Lookup, dan filter 
    if ($fld->Name == "MyLookupField")
        $fld->Lookup->UserFilter = "MyField = 'xxx'"; // asumsi: tipe field adalah string
}

Di contoh yang kedua berikut, kita dapat mengganti operator standar dari field yang memiliki filter

function Lookup_Selecting($fld, &$filter) {
    if ($fld->Name == "MyLookupField") {
        $fld->Lookup->UseLookupCache = false; // pastikan dalam hal ini lookup cache dalam posisi non-aktif
        $fld->Lookup->setFilterOperator("FilterField", ">"); // operator baru menjadi tanda ">" (lebih besar)
    }
}

Selanjutnya, pada contoh yang ketiga di bawah ini, kita dapat memodifikasi pernyataan SQL pada bagian SELECT dan ORDER BY:

function Lookup_Selecting($fld, &$filter) {
    if ($fld->Name == "MyLookupField") {
        $fld->Lookup->UserSelect = "SELECT Field1 AS lf, Field2 AS df, Field3 AS df2, '' AS df3, '' AS df4 FROM Table1"; // modifikasi pada bagian SELECT
        $fld->Lookup->UserOrderBy = "Field2 ASC"; // modifikasi pada bagian ORDER BY
    }
}

Kemudian, pada contoh keempat berikut ini, kita dapat mengganti semua item yang terdapat di dalam control Combobox menjadi menggunakan array yang bersifat statis dengan menggunakan method setOptions milik object Lookup:

function Lookup_Selecting($fld, &$filter) {
    if ($fld->Name == "MyLookupField")
        $fld->Lookup->setOptions([
            ["link1", "display1 row1", "display2 row1", "...", ""],
            ["link2", "display1 row2", "display2 row2", "...", ""],
            ["link3", "display1 row3", "display2 row3", "...", ""],
            ["link4", "display1 row4", "display2 row4", "...", ""]
         ]); // gunakan array statis
}

Terakhir, untuk contoh yang kelima berikut, kita dapat menyesuaikan item-item di field Lookup tadi menggunakan data yang dihasilkan oleh fungsi global yang bernama ExecuteRows:

function Lookup_Selecting($fld, &$filter) {
    if ($fld->Name == "MyLookupField")
        $fld->Lookup->setOptions(ExecuteRows("SELECT LinkField, DisplayField1, DisplayField2, DisplayField3, DisplayField4 FROM MyTable")); // gunakan data yang dihasilkan oleh ExecuteRows
}

Penting untuk diketahui, bahwa supaya kode pada contoh kelima ini bisa kita implementasikan, syaratnya adalah dua opsi berikut harus diset dari Fields setup -> panel Edit Tag:

– Use lookup table dalam posisi aktif atau enabled. Artinya, kita harus mengeset Lookup Table untuk field tersebut. Dengan kata lain, kita tidak dapat menyesuaikan item-item pada field Lookup tadi jika kita menggunakan User Values dari bagian Fields tadi.

– Use modal dialog for lookup dalam posisi tidak aktif atau disabled. Artinya, pastikan untuk menonaktifkan opsi ini jika ingin menyesuaikan item-item yang terdapat pada field Lookup tadi secara dinamis.

Dari kelima contoh di atas, maka server event Lookup_Selecting menjadi semakin powerful dan flexible lagi. Terbukti memang, bahwa PHPMaker 2021 adalah yang terbaik, dan semakin lebih baik lagi dari versi-versi major sebelumnya.

Bahkan, code generator lainnya belum ada yang bisa menyamai fleksibilitas dan kemampuan yang sudah disediakan oleh PHPMaker 2021 ini.

Ditempatkan di bawah: PHPMaker Ditag dengan:Belajar PHPMaker, PHPMaker 2021, 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 dan ilovephpmaker.com.

Begini Cara Menampilkan Konten Custom Files ke File PDF dari PHPMaker 2021 dan FPDF
Mudahnya Menangani Field Upload yang Tidak Ada Filenya di PHPMaker 2021

Komentar

  1. luthfi mengatakan

    Rab, 14 April 2021 pada 11:00 pm

    saya udah baca beberapa refrensi di situs ini dan sangat membantu, tapi ada satu yang masih saya belum bisa menyerdahanakanya: ” bagaimana cara kita menggunakan konsep pdo pada phpmaker v2020 apakah harus buat sendiri atau sudah ada librarinya dari phpmaker ?” kalo lihat dari help phpmaker sudah ada ExecuteRows ExecuterRow Execute kelihatanya sih kek pdo tapi gimana cara menggunakna yang advance-nya ke binding data pas ngrimi dari url gitu mas mohon arahanya

    Balas
    • Masino Sinaga mengatakan

      Sab, 17 April 2021 pada 9:59 am

      Kalau di versi 2020, harus buat sendiri, karena belum include library-nya dari PHPMaker.

      Kalau untuk versi 2021, pilih pdo_mysql dari Tools -> Advanced Settings -> MySQL driver.

      Balas
  2. Agus Tuasuun mengatakan

    Jum, 20 Agustus 2021 pada 2:26 pm

    Halo pak
    saya sudah membaca artikel2 bapak, sangat bagus untuk pemula seperti saya ini.
    saya mau tanya ada kasus 2 tabel dgn struktur hampir sama beda beberapa field saja, bagaimana cara supaya form pada tabel 2 dapat otomatis terisi semua fieldnya ketika diketikan field ID tabel 1, sehingga data yang sama tersebut dapat tersimpan ke field 2. Terimakasih.

    Balas
    • Masino Sinaga mengatakan

      Jum, 20 Agustus 2021 pada 3:48 pm

      Halo juga. Anda bisa menggunakan server event Row_Inserted untuk mengeksekusi perintah memasukkan data di table yang sedang terbuka, ke dalam table lainnya.

      Baca topik Server Events and Client Scripts dari menu Help PHPMaker.

      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

  • Hati-Hati Memilih Versi PHP Sebelum Generate Code di PHPMaker 2022
  • Alasan AlwaysUseEnglishUSLocale Sebaiknya Aktif di Masino Extensions untuk PHPMaker 2022
  • MasinoInputMask18 Extension, Autoformat Angka dengan Fitur Lebih Kaya di PHPMaker 2022
  • MasinoSignature18 Extension, Mudahnya Mengelola Tanda Tangan di PHPMaker 2022
  • MasinoFormWizard18 Extension, Mengubah Tampilan Multi-Page di PHPMaker 2022

Menu

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

Komentar Terbaru

  • Masino Sinaga pada Hati-Hati Memilih Versi PHP Sebelum Generate Code di PHPMaker 2022
  • Thien Rudi pada Hati-Hati Memilih Versi PHP Sebelum Generate Code di PHPMaker 2022
  • Masino Sinaga pada Cara Menggunakan Login by session variables di Aplikasi Web dari PHPMaker 2021
  • Masino Sinaga pada Cara Menggunakan Login by session variables di Aplikasi Web dari PHPMaker 2021
  • Masino Sinaga pada Cara Menggunakan Login by session variables di Aplikasi Web dari PHPMaker 2021

Situs Terkait

  1. I Love PHPMaker
  2. Situs Resmi PHPMaker
  3. Forum Diskusi PHPMaker
  4. PHPMaker di IlmuKomputer.com
  5. 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 - 2021 | WordPress | Catat masuk | Kembali ke atas