Menggunakan PHPMaker sebagai Tools untuk membangun Aplikasi Web memang sangat mengasyikkan. Hampir semua pola business-logic pengolahan data dapat diatasi dengan PHPMaker. Bahkan, salah satu permintaan dari pengunjung situs saya melalui komentar ini akan membuktikan bahwa PHPMaker lagi-lagi dapat memenuhi tantangan tersebut dengan sangat mudah dan cepat.
Di artikel ini kita akan mengulas lebih detail kemampuan PHPMaker untuk mengimplementasikan sebuah business-logic mengenai Studi Kasus KRS Online, seperti yang diinginkan oleh pengunjung di atas tadi.
Intinya, kita akan membuktikan, bahwa PHPMaker dapat menghasilkan Aplikasi Web seperti studi kasus tersebut dengan sangat mudah, cepat, sekaligus menyenangkan. Mudah-mudahan Anda tidak akan terkejut dengan kemampuan PHPMaker berikut ini.
Baiklah, sekarang ikuti langkah-langkah berikut dengan teliti:
- Pertama sekali, pastikan Anda sudah membuat sebuah Database MySQL yang bernama krs.
-
Jalankan script SQL berikut di dalam Database krs tadi untuk menghasilkan dua tabel yang masing-masing bernama krs dan matakuliah, beserta beberapa Record di dalam tabel matakuliah:
-- ---------------------------- -- Table structure for krs -- ---------------------------- DROP TABLE IF EXISTS `krs`; CREATE TABLE `krs` ( `nomor` int(10) NOT NULL AUTO_INCREMENT, `nim` varchar(15) NOT NULL, `kodekuliah` varchar(10) NOT NULL, `semester` varchar(15) NOT NULL, `tahun` int(5) NOT NULL, PRIMARY KEY (`nomor`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of krs -- ---------------------------- -- ---------------------------- -- Table structure for matakuliah -- ---------------------------- DROP TABLE IF EXISTS `matakuliah`; CREATE TABLE `matakuliah` ( `kode` varchar(10) NOT NULL, `nama` varchar(50) NOT NULL, `sks` int(2) NOT NULL, `semester` varchar(10) NOT NULL, PRIMARY KEY (`kode`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of matakuliah -- ---------------------------- INSERT INTO `matakuliah` VALUES ('TI001', 'Pengantar Algoritma 1', '2', 'Ganjil'); INSERT INTO `matakuliah` VALUES ('TI002', 'Analisa Numerik', '3', 'Ganjil'); INSERT INTO `matakuliah` VALUES ('TI003', 'Pengantar Bahasa C++', '3', 'Ganjil'); INSERT INTO `matakuliah` VALUES ('TI004', 'Pengantar Ilmu Komputer', '2', 'Ganjil'); INSERT INTO `matakuliah` VALUES ('TI005', 'Algoritma 2', '2', 'Ganjil'); INSERT INTO `matakuliah` VALUES ('TI006', 'Pengantar Visual Basic', '2', 'Ganjil'); INSERT INTO `matakuliah` VALUES ('TI007', 'Kalkulus', '2', 'Ganjil'); INSERT INTO `matakuliah` VALUES ('TI008', 'Pengantar Database', '2', 'Ganjil'); INSERT INTO `matakuliah` VALUES ('TI009', 'Rekayasa Komputer', '3', 'Genap'); INSERT INTO `matakuliah` VALUES ('TI010', 'Perangkat Keras', '2', 'Genap'); INSERT INTO `matakuliah` VALUES ('TI011', 'Perancangan Database', '3', 'Genap'); INSERT INTO `matakuliah` VALUES ('TI012', 'Pengantar Bahasa PHP', '2', 'Genap'); INSERT INTO `matakuliah` VALUES ('TI013', 'Pengantar Javascript', '2', 'Genap'); INSERT INTO `matakuliah` VALUES ('TI014', 'Struktur Data', '3', 'Genap'); INSERT INTO `matakuliah` VALUES ('TI015', 'Pengenalan PHPMaker', '3', 'Genap');
- Selanjutnya, buat sebuah project baru PHPMaker dengan mengacu kepada Database krs di atas tadi.
- Pastikan di panel Database sebelah kiri, Anda sudah memberi tanda centang pada kedua tabel tersebut.
- Klik tabel matakuliah dari panel Database tadi, kemudian klik tab Fields, lalu klik field sks. Pilih TOTAL dari kolom List Page -> Aggregate. Tujuannya, kita akan membuat fungsi perhitungan total nilai pada kolom atau field sks di halaman List.
- Masih dari tab Fields, sekarang klik field semester, lalu beri tanda centang pada kolom Ext. Search yang terdapat di bawah kolom List Page. Tujuannya, kita akan menampilkan field ini pada panel pencarian cepat (Quick Search) untuk menyaring Record berdasarkan data semesternya.
-
Pastikan Anda masih memilih field semester, lalu dari panel Edit Tag di tengah bawah, pilih Select. Tujuannya untuk mengganti control yang digunakan field ini menjadi ComboBox. Kemudian pada panel User Values di sebelah kanannya, klik icon plus yang berwarna hijau untuk menambahkan dua Record, masing-masing Ganjil dan Genap. Jadi, kira-kira seperti ini hasilnya setelah Anda tambahkan:
--------------------- Value Label --------------------- Ganjil Ganjil --------------------- Genap Genap ---------------------
- Pastikan sekali lagi Anda masih memilih field semester dari tab Fields, lalu geser scroll ke kanan di grid bagian atas, sampai Anda melihat kolom Advanced Search Page. Selanjutnya, ketikkan “Ganjil” pada kolom Default value untuk field semester tadi. Tujuannya, kita akan menggunakan nilai standar (default) Ganjil ketika halaman List yang berisi data semester tadi ditampilkan, sehingga data yang berada di tabel akan ditampilkan yang memiliki semester Ganjil. Tentu saja Anda nanti dapat menampilkan data yang semester Genap.
- Sampai di sini, kita sudah berhasil menentukan pengaturan yang diperlukan pada sisi Field. Selanjutnya, tiba gilirannya kita akan menambahkan hanya sedikit kode saja pada bagian Server Events dan Client Scripts. Untuk itu, pastikan sekarang Anda sudah mengklik tab Code (Server Events, Client Scripts and Custom Templates) pada posisi Anda masih memilih tabel semester.
-
Tambahkan kode PHP berikut ke server event Page_Load yang terdapat di bawah lokasi berikut: Server Events -> Table-Specific -> List Page, sehingga kode selengkapnya adalah:
// Page Load event function Page_Load() { //echo "Page Load"; Language()->setPhrase("CustomActionCompleted", "Data KRS berhasil ditambahkan."); $this->CustomActions["ambilkrs"] = "Ambil KRS"; }
Fungsi dari kode ini adalah, kita akan menampilkan tombol yang bertuliskan Ambil KRS ketika halaman List pertama kali dimuat.
-
Selanjutnya, masih pada lokasi di atas, kali ini klik server event Page_Render, lalu pastikan Anda sudah memiliki kode berikut:
// Page Render event function Page_Render() { //echo "Page Render"; if (ew_ExecuteScalar("SELECT nim FROM krs WHERE nim='03503120' AND semester='".$this->semester->AdvancedSearch->SearchValue."' AND tahun=2014") <> "") { unset($this->CustomActions["ambilkrs"]); } }
Fungsi dari kode tersebut adalah, sistem akan memeriksa apakah data KRS sesuai dengan kriteria tersebut di atas sudah ada di tabel krs atau belum. Jika sudah ada, maka sembunyikan tombol Ambil KRS, supaya user tidak dapat menambahkan data KRS lagi.
-
Selanjutnya, masih pada lokasi di atas juga, sekarang klik server event Row_CustomAction, lalu pastikan Anda sudah memiliki kode seperti ini:
// Row Custom Action event function Row_CustomAction($action, $row) { // Return FALSE to abort if ($action == "ambilkrs") { ew_Execute("INSERT INTO krs VALUES(null, '03503120', '".$row["kode"]."', '".$row["semester"]."', '2014')"); } return TRUE; }
Fungsi dari kode ini adalah untuk memasukkan data ke tabel krs sesuai dengan data yang terpilih atau tercentang pada halaman List.
- Sampai di sini, kita sudah berhasil menambahkan kode di bagian Server Events. Selanjutnya kita akan menulis kode jQuery pada bagian Client Scripts untuk menangani event click dari user ketika memilih Record yang akan ditambahkan ke tabel krs, dan juga untuk menangani jumlah total SKS dari mata kuliah yang dipilih.
-
Sekarang pergi ke lokasi berikut: Client Scripts -> Table-Specific -> List Page -> Startup Script:
$(document).ready(function() { $("#elf_matakuliah_sks").html("0"); var tableControl= document.getElementById('#tbl_matakuliahlist'); var arrayOfValues = []; $("input:checkbox[name='key_m[]']").click(function() { $('input:checkbox:checked', tableControl).map(function() { arrayOfValues.push($(this).closest("tr").find("td[data-name='sks'] span").text()); }).get(); var tot_sks = 0; for (var i = 0; i < arrayOfValues.length; i++) { tot_sks += arrayOfValues[i] << 0; } $("#elf_matakuliah_sks").html(tot_sks); tot_sks = 0; arrayOfValues = []; }); $("input:checkbox[name='key']").click(function() { $('input:checkbox:checked', tableControl).map(function() { arrayOfValues.push($(this).closest("tr").find("td[data-name='sks'] span").text()); }).get(); var tot_sks = 0; for (var i = 0; i < arrayOfValues.length; i++) { tot_sks += arrayOfValues[i] << 0; } $("#elf_matakuliah_sks").html(tot_sks); tot_sks = 0; arrayOfValues = []; }); });
Sekali lagi, fungsi dari kode jQuery ini untuk menangani ketika user memberi tanda centang pada judul kolom atau pada baris Record mata kuliah yang terpilih, sekaligus akan menampilkan hasil perhitungan total semester dari mata kuliah yang terpilih tersebut.
- Sekarang pastikan Anda sudah menyimpan hasil pekerjaan Anda pada project PHPMaker, lalu generate semua file script seperti biasa dengan menggunakan PHPMaker.
Setelah Anda selesai men-generate file-file script, maka silahkan jalankan Aplikasi Web tersebut melalui browser. Klik menu matakuliah, maka seharusnya sekarang Anda dapat melihat ada control CheckBox di tabel pada halaman List tersebut. Di bagian bawah dari tabel, seharusnya Anda juga melihat ada sebuah tombol yang bertuliskan Ambil KRS.
Dari semua uraian di atas, dapat disimpulkan, bahwa betapa cepatnya PHPMaker dapat menangani kebutuhan penyimpanan data yang terpilih berdasarkan tanda centang melalui control CheckBox di halaman List. Tidak hanya itu, kode yang Anda tulis untuk mengimplementasikan kebutuhan tadi pun sangat sedikit; hanya beberapa baris kode saja. Hanya dibutuhkan tiga Server Event dan satu Client Script saja untuk mengimplementasikannya.
Kecuali untuk kode jQuery, memang sedikit agak banyak, karena kita harus menangani kemungkinan Pengguna mengklik control CheckBox untuk memilih semua Record, dan juga kemungkinan Pengguna mengklik control CheckBox yang terdapat di setiap baris Record, lalu menjumlahkan total SKS dari Record yang terpilih tersebut.
Belum ada tools lain selain PHPMaker yang dapat menangani hal ini dengan sangat mudah, cepat, dan sekaligus menyenangkan. Satu lagi bukti bahwa PHPMaker merupakan tools favorit Web Developer untuk saat ini dan menjadi trend di masa mendatang. 😀
Herman mengatakan
Terima Kasih sblmnya master sdh sy coba dan berhasil
cuma ketik sy klik tombol Ambil KRS selalu muncul pesan “This page is asking you to confirm that you want to leave – data you have entered may not be saved”
Pertanyaan sy bgmn cara agar pesan tersebut tidak muncul master?
Terima Kasih
Masino Sinaga mengatakan
Oh, pesan itu muncul karena Anda menggunakan Extension MasinoDetectChanges11.
Supaya pesan tersebut tidak muncul lagi, hapus tanda centang pada item pengaturan DetectChangesOnListForm dari menu Tools -> Extensions -> MasinoDetectChanges11 -> tab Advanced, klik OK, lalu generate ulang semua file script-nya dari PHPMaker.
Herman mengatakan
Sip sudah tidak muncul pesan tersebut lagi
Terima Kasih Master atas responnya yang cepat
Masino Sinaga mengatakan
Sama-sama. 🙂
Bagus mengatakan
Sdh saya Coba dan Berhasilll… makasih Pak.
skrg sy lg coba Menambahkan Tabel Mahasiswa dgn Field:
nim, nama, jurusan.
Nah.. skrg sy coba buat Form Manual (bkn Custom File) dgn nama : cari_mhs.php
dgn isi sbb :
NIM :
Nama :
Jurusan :
asumsi Form diatas adalah cari data mahasiswa, namun sy coba input manual dulu dan hasil input diatas
ditampilkan di matakuliahlist.php.
kmudian di matakuliahlist.php sy ubah kode ini :
function Row_CustomAction($action, $row) {
$nimm = “$_GET[nim]”;
// Return FALSE to abort
if ($action == “ambilkrs”) {
ew_Execute(“INSERT INTO krs VALUES(null, ‘$nimm’, ‘”.$row[“kode”].”‘, ‘”.$row[“semester”].”‘, ‘2014’)”);
}
return TRUE;
// rencana disini diarahkan ke hlaman cetak KRS (ssuai hasil input)
}
dari Metode Script diatas sdh saya coba dan berhasil. (hanya cetak KRS yg blum)
jadi prosesnya sperti ini :
form_cari mhsiswa -> input KRS (List) -> Cetak_hasil input KRS.
# namun prtanyaan saya :
apkah di PHP Maker dgn Metode ‘konvensional’ sprti itu dianjurkan ?
ataukah ada cara Lain yang lebih Sistematis ?
trimakasih atas Responnya Pak.
Masino Sinaga mengatakan
Selama kebutuhan Anda terpenuhi dengan membuat form pencarian secara manual, ya silahkan saja. Meskipun begitu, saya menyarankan agar Anda membuatnya melalui fitur Custom Files. Bisa juga dengan membuat View di Database untuk membantu pembuatan form pencarian tadi. Itu untuk metode pencarian.
Sedangkan mengenai penambahan kode di server event Row_CustomAction, harap diingat bahwa server event ini akan dieksekusi sejumlah banyaknya Record yang terpilih dan diproses oleh sistem. Oleh karena itu, Anda tidak dapat menaruh kode untuk me-redirect ke halaman lain di server event ini, karena hanya satu Record saja yang akan diproses.
Jadi solusinya, taruh kode untuk meredirect ke halaman lain di server event Page_Redirecting pada tabel matakuliah tersebut. Kira-kira hasilnya menjadi seperti ini:
Freddy mengatakan
Selamat malam bang,
bang Serial number dan User License PHP MAKER 11 dapat didownload dimana ya? atau serial number dan username licensinya apa ya bang?
Masino Sinaga mengatakan
Selamat malam dek. 🙂
Maaf, Serial Number bukanlah sesuatu yang dapat di-shared di sini. Jika Anda berminat dan serius menggunakan PHPMaker, maka Anda harus membeli lisensinya terlebih dulu melalui link ini: http://www.hkvstore.com/purchase.asp?prodid=11 supaya bisa mendapatkan Serial Number-nya.
Harap maklum, ya. 😉
anggi mengatakan
mas maaf nih sebelumnya karena pertanyaan aku OOT.
aku memakai phpmaker versi 9
gini mas, aku punya satu table isi ada beberapa field nah ada 2 field yg aku buat untuk mempersingkat input oleh user.
contohnya kaya gini field pertama nomor register awal field kedua nomor register akhir, nah aku mau pas pada saat user add maka dua field tersebut otomatis jadi terextract dari field nomor register awal sampai dengan nomor register akhir satu persatu record.
gimana caranya ya mas.
mohon bantuan.
Terimakasih banyak sebelumnya mas
Masino Sinaga mengatakan
Gunakan server event Row_Inserting.
Baca topik Server Events and Client Scripts dari menu Help PHPMaker untuk informasi dan contoh-contoh kode-nya.
Rijal mengatakan
Sore Master Masino Sinaga
Mau tanya nih, misalnya sy mau menambahkan fasilitas EDIT di halaman tersebut.
apakah Query editnya juga diletakkan di sini juga :
tapi bgaimana langkah2nya, kok bingung ya. Maklum masih pemula.
trimakasih.
Masino Sinaga mengatakan
Server event Row_CustomAction sebaiknya digunakan hanya untuk memanipulasi data berdasarkan nilai Record yang terpilih (tercentang) pada tabel di halaman List. Jadi, data dimanipulasi di belakang layar berdasarkan data dari Record yang terpilih. Jika Anda ingin menambahkan fungsi Edit, maka gunakanlah fitur Grid-Edit.
Baca topik Tutorial – Inline Add, Inline Copy, Inline Edit, Grid-Add and Grid-Edit dari menu Help PHPMaker untuk informasi dan contoh pengimplementasiannya.
media mengatakan
Dear pak masino,
Sy ingin bertanya ttg artikel bpk ini. Sy sdh mencoba simulasi dan sebagai pemula php dan phpmaker sy sangat senang. Tp sy msh bingung seandainya mau membuat simulasi agak lebih real pengisian krs ini dibuat dlm mode master-detail dg mengubah struktur tabel
Tbl krs-no,nim,semester,tahun
Tbl krsdetail-no,kodekuliah
Tbl matakuliah-sama dg artikel.
Apakah bisa dibuat dg phpmaker atau ada cara tertentu pak?
Masino Sinaga mengatakan
Kalau bingung ya belajar dan cobalah berlatih terus. 🙂
Pelajari topik Tutorial – Master/Detail dari menu Help PHPMaker, jika ingin menggunakan mode Master/Detail.
media mengatakan
Sy sdh coba artikel pak masino ttg pengisian krs dg memilih matakuliah ini dg mode master detail dg mencontoh di help phpmaker. Hanya saja yg sy dapatkan pada bagian detail grid adalah ‘mengisi’ data matakuliah pd row kosong bukan ‘memilih’ data dg mencentang spt simulasi artikel ini. Apa mungkin phpmaker blm support cara yg sy maksud? Terimakasih sblumnya atas tanggapan bpk.
Hadi mengatakan
Yang terhormat Master Masino ,sy newbie br satu minggu.saya punya tabel user berisi user name dan departemen. Bagaiman cara membatasi user hanya bisa melihat /edit daftar employee di departemennya saja ? Trus gmn admin bisa memfilter daftar employee per departemem dg combobo? Sudah ada tabel departemen di database.
Berikutnya gmn cara search daftar employee menggunakan modal dialog box? Bukan dari combobox, dg
Aturan seperti di atas ,yakni hanya yg ada di departemennya saja.Makasih Master. Besr harapan saya dpt ilmu dr web ini agar semangat explore phpmaker.
Masino Sinaga mengatakan
Silahkan Anda pelajari topik Tutorial – Advanced Security – User ID Security dari menu Help PHPMaker.
Untuk memfilter data pada Combobox, Anda bisa menggunakan property Filter dari panel Lookup Table dari field yang bertalian.
Untuk mencari data menggunakan modal dialog, aktifkan item Use modal dialog for Advanced Search dari pengaturan level Table.
Pelajari menu Help untuk info lebih lanjut. Semua ada di sana.
trie mengatakan
Pagi pak
Bila saya ingin menampilkan preview report sekaligus bisa diprint format pdf berdasarkan satu kode barang gimana caranya pak tapi sya tidak ingin menampilkan recordnya satu table database yg sya mau buat adalah combobox dan preview stok saja…contoh sya mengambil data dari tabel mutasi dan ingin mempreview stok berdasarkan satu kode…mohon pencerahanya..trims
Masino Sinaga mengatakan
Anda bisa menggunakan fitur Custom Files dari dalam project PHPMaker Anda. Sedangkan untuk menghasilkan custom report dalam format .pdf, Anda bisa menggunakan fpdf library (silahkan Googling).
Baca topik Custom Files dari menu Help PHPMaker untuk info lebih lanjut.
teguh mengatakan
Siang Pak,
Saya Sedang belajar PHP maker. saya coba migrasi dari visual studio. yang saya mau tanyakan. bagaimana membuat menu cetak di menu Order ya? kalo di vb2010 kan bisa kita cetak saat klik tombol simpan. kalo di PHP maker bagaimana ya? terima kasih
Masino Sinaga mengatakan
Anda bisa menggunakan fpdf library melalui fitur Custom Files. Untuk memanggilnya, gunakan server event Row_Inserted atau Row_Updated dengan memanggil Custom File tadi yang akan mengekspor data ke file PDF, dan dari sana Anda tinggal mencetaknya.
Achmad Noercholis mengatakan
Terimakasih atas tutorialnya pak sangat bermanfaat… kalau boleh tanya di phpmaker apakah ada cara yang bisa kita gunakan untuk menambahkan “confirm” pada gridadd? terimakasih sebelumnya.
Masino Sinaga mengatakan
Sama-sama.
Belum ada fitur Confirm untuk mode GridAdd.
Ahmad Hidayat mengatakan
nyari Row Custom Action event di phpmaker2020 di mana ya mas?
Ahmad Hidayat mengatakan
Sori mas ada di list page rupanya. tq.