Seperti yang kita ketahui, tidak ada satu Aplikasi Web manapun yang tidak pernah menggunakan Lookup Table untuk mengambil data dari tabel lain guna ditampilkan di sebuah field pada sebuah form. Biasanya fitur ini sering digunakan pada field yang menggunakan elemen Combobox atau DropDown List. Data yang disimpan di field tersebut adalah data Kode dari Lookup Table, sementara data yang ditampilkan ke Pengguna adalah Deskripsi-nya.
Sering kali ada kebutuhan untuk menyaring data yang berasal dari Lookup Table tadi sebelum ditampilkan ke Pengguna. Jelas dibutuhkan mekanisme yang memudahkan Web Developer untuk menyaring data Lookup Table tadi berdasarkan kriteria menurut business-logic tertentu.
Untuk itulah PHPMaker menyediakan sebuah server event yang bernama Lookup_Selecting, yang lokasinya berada di bawah Server Events -> Table-Specific -> Common di dalam project PHPMaker Anda. 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.
Lagi-lagi, sesuai dengan namanya, server event ini dipanggil sebelum memilih atau mengambil Record-Record dari Lookup Table. Anda dapat menggunakan server event ini untuk mengganti kriteria penyaringan Record dari Lookup Table yang bertalian.
Langsung saja kita simak contoh berikut. Kita akan memodifikasi kriteria penyaringan Record ketika sebuah daftar pilihan menampilkan nilai pada field MyLookupField pada tabel terpilih yang datanya diambil dari Lookup Table.
function Lookup_Selecting($fld, &$filter) { if ($fld->FldName == "MyLookupField") $filter = str_replace("xxx", "yyy", $filter); }
Dalam contoh di atas, sistem akan memeriksa jika nama field pada tabel terpilih adalah MyLookupField, maka ganti kriteria penyaringan yang semula adalah xxx, menjadi yyy dengan menggunakan fungsi PHP yang bernama str_replace().
Contoh lainnya, kita bisa menambahkan kriteria penyaringan pada Lookup Table daripada menimpa kriteria penyaringan yang ditampilkan pada kode sebelumnya.
function Lookup_Selecting($fld, &$filter) { if ($fld->FldName == "MyLookupField") ew_AddFilter($filter, "MyField = 'xxx'"); // Asumsi: tipe field MyField adalah string }
Dalam contoh yang kedua tadi, betapa mudahnya kita bisa menambahkan kriteria penyaringan dengan hanya menggunakan global function yang sudah disediakan oleh PHPMaker yang bernama ew_AddFilter.
Hohoho…, lagi-lagi betapa mudahnya bukan? 🙂
nuriyatech mengatakan
gan, gimana saya bisa contac agan, ym atau hp kalau ada tolong di emailkan ya gan, soalnya saya ada yg mau saya bicarakan . tq
Masino Sinaga mengatakan
Barusan sudah saya kirim email, gan. 🙂
Hendra mengatakan
Siang pak,
saya mau banyak bertanya semoga di ijinkan 🙂
saya baru banget kenal yang namanya php jadi saya masih 0
saya ingin membuat aplikasi yang berisi tentang beberapa categori dan user
misal user 1 hanya bisa akses ke tabel a, b ,c
dan user 2 hanya bisa akses ke tabel d,e,f
kemudian
misal table a : berisi field : nama, alamat, no telp
table b berisi nama, gaji, catetan
nah saya ingin dari table b itu ketika input untuk filed nama otomatis bisa seleksi dari table A dengan fied nama.
Mohon maaf mungkin kata2 saya agak sulit di cerna 🙂
terimakaish pak
Masino Sinaga mengatakan
Selamat malam. Oke saya jawab singkat saja ya, bahwa semua itu tentu bisa diimplementasikan dengan menggunakan PHPMaker. Bagaimana caranya? Silahkan Anda pelajari menu Help dari dalam PHPMaker.
Hendra mengatakan
wah makasih pak, ternyata ada helpnya 😀 kebiasaan buruk say nih hhehe
Masino Sinaga mengatakan
Sama-sama. Jangan lupa, kunjungi juga Forum Diskusi PHPMaker.
Hampir setiap hari saya aktif di sana menjawab pertanyaan-pertanyaan member. 🙂
hendra mengatakan
Misal saya ada mapping data barang, customer X hanya dapat memilih barang A,B,C,D,E.
Saya sudah dapat melakukan filtering itu.
MIsalkan direcord pertama dia sudah memilih barang B, maka bagaimana menyaring supaya pada inputan record ke 2, hanya terfilter A,C,D,E ?
Masino Sinaga mengatakan
Artikel ini semoga dapat membantu: Stock Inventory Management: Banyak Hal yang Bisa Anda Pelajari dari Project Ini.
hendra mengatakan
Terima kasih pak, jika ingin lihat codingnya khan harus punya PMP nya 🙂
Novra mengatakan
Bagaimana cara menghilangkan pilihan yang sudah dipilih dari dropdownlist berdasarkan akunnya ?
misal :
Ada pilihan a,b,c
lalu akun 1 sudah memilih a, maka selanjutnya hanya tampil b dan c. Sementara akun 2, pilihannya masih lengkap a,b,c
maaf saya baru menggunakan PHP maker
Terimakasih
Masino Sinaga mengatakan
Anda bisa pakai kode jQuery dan tempatkan di bagian Startup Script yang terdapat di bawah Client Scripts -> Table-Specific -> sesuai halaman yang diinginkan.
Baca topik Server Events and Client Scripts dari menu Help PHPMaker.
alex mengatakan
sore pak masino
cara membuat lookup table master detil gimana ya….maksud nya sy punya kolom master sy lookup dri tble lain muncul di table master dan detil….mohon bantuanya pak…tq
Masino Sinaga mengatakan
Baca topik Lookup Table dari menu Help PHPMaker.
fajar mengatakan
siang bapak masino, salam kenal,
saya sudah menjadi pembaca setia http://www.masinosinaga.com sekitar sebulan yang lalu, sangatlah menarik artikel yang bapak tulis, sangat menginspirasi saya, dan sejak saat itu saya mulai belajar phpmaker. terimaksih pak masino.
saya mau bertanya tentang lookup table, apakah phpmaker bisa lookup dari json, misalnya saya ingin menampilkan data poli di combobox, yang tersmpan kodepoli, dan yang tertampil di combobox tersebut adalah nama polynya. saya sudah mencari referensi di internet dan forum, tapi masih belum ada perecerahan juga, mohon kebaikanya menularkan ilmunya bapak masino, terimakasih
Masino Sinaga mengatakan
Untuk saat ini data Lookup Table di PHPMaker hanya bisa menggunakan Database. Jadi, belum support JSON.
Yusuf mengatakan
Pak, mau nanya misal saya punya table produk dengan field idproduk, nmproduk, status, kemudian punya table order misal field idorder, nmorder dan table orderdetil ada iddetil, idorder, idproduk, nmproduk. Saya ingin begitu saya ketik di table detil idproduk, maka otomatis muncul nmproduk dan status di table produk juga ikut berubah, misal awalnya ada menjadi tidak ada. Saya sudah coba pake modify table dengan sinkron ketiga table dalam bentuk relation tapi tidak keluar. Mohon bantuannya
Masino Sinaga mengatakan
Di PHPMaker ada fitur yang namanya Auto fill. Anda bisa menggunakan itu.
Untuk info lebih lanjut, baca topik Lookup Table dari menu Help PHPMaker; di dalamnya ada bagian yang menjelaskan Auto fill.
Nanda mengatakan
Pak Masino, untuk Filter Lookup apakah bisa Hanya berfungsi di Halaman Add / Edit saja,
jadi saya bikin Filter dengan kriteria : status=’1′ di halaman Add, namun ternyata Filter tersebut terbawa juga ketika berada di Halaman List, padahal di Halaman List Rencana semua data tetap muncul (tanpa Filter)
Masino Sinaga mengatakan
Gunakan Filter dengan kondisi sbb:
Nanda mengatakan
oke Pak, tapi untuk Halaman EDit nya kok engga ngaruh yaa
atau
sudah di coba beberapa kode diatas tapi hanya halaman Add saja yang berpengaruh,
Terimakasih
Masino Sinaga mengatakan
Lilg mengatakan
Bagaimana aplikasi yg menggunakan table lookup dengan php maker terasa berat untuk record lebih dari 100ribu, bagaimana agar aplikasi menjadi ringan?
Masino Sinaga mengatakan
1. PHPMaker memiliki fitur Lookup Table dengan menggunakan Modal dialog yang di dalamnya ada textbox pencarian.
2. Pasang Index di field yang ditampilkan atau digunakan untuk proses pencarian.
3. Seharusnya tidak ada masalah kalau menggunakan Modal Dialog dan field Anda sudah di-index, karena data yang ditampilkan di Modal Dialog tadi dibagi per halaman (default 10 record per halaman).