Seperti yang sudah kita ketahui, PHPMaker akan mengekstrak object Tables dan Views yang terdapat di dalam Database, lalu menggunakannya untuk menghasilkan atau membangkitkan halaman Add/Copy, Edit, View, Delete, Search di Aplikasi Web.
Alasan mengapa kedua object tadi bisa digunakan di PHPMaker, karena pada dasarnya dari awal mereka masing-masing sudah memiliki object Field, sehingga bisa langsung diekstrak oleh PHPMaker untuk menghasilkan control di Form atau kolom di halaman List.
Inilah alasan kuat mengapa PHPMaker baru menggunakan kedua object ini supaya dapat ditampilkan di dalam project PHPMaker saat mode design atau mode development. Mungkin di antara Anda ada yang bertanya, lalu bagaimana dengan object Stored Procedure (SP) di dalam Database? Apakah bisa juga digunakan di dalam project PHPMaker?
Sayangnya, sampai dengan versi 11, PHPMaker belum mendukung object SP untuk ditampilkan saat mode-design atau mode-development di dalam project PHPMaker. Mungkin…, ini mungkin lho ya…, karena tidak semua SP bisa disamakan dengan View, sekalipun SP itu ada yang bisa mengembalikan Recordset. Beberapa SP yang kita ketahui ada yang memiliki parameter sebelum dapat dijalankan agar dapat mengembalikan hasil atau output tertentu.
Itulah kenapa pada akhirnya SP tidak bisa (baca: belum, dengan harapan suatu saat nanti mudah-mudahan bisa) digunakan sebagai object di dalam project PHPMaker kita. Meskipun demikian, bukan berarti kita sebagai Web Developer yang menggunakan PHPMaker untuk membangun Aplikasi Web tidak bisa memanfaatkan SP di dalam Aplikasi Web yang dihasilkan oleh PHPMaker.
Di artikel ini saya akan tunjukkan bagaimana mudahnya kita sebagai Web Developer dapat tetap memanggil SP dari dalam Aplikasi Web yang dihasilkan oleh PHPMaker, lalu mengambil hasil yang dikeluarkan oleh SP tadi untuk selanjutnya diolah sesuai dengan kebutuhan.
Katakanlah kita memiliki SP di SQL Server dengan kode sebagai berikut:
CREATE PROCEDURE [dbo].[GetKantor] AS BEGIN SELECT Kode_Kantor, Nama_Kantor FROM kantor; END GO
SP yang kita buat ini bernama GetKantor yang akan mengembalikan sebuah Recordset yang di dalamnya terdiri dari dua kolom, yaitu Kode_Kantor dan Nama_Kantor. Karena balikannya dalam bentuk Recordset, maka kita harus menangani pengembalian nilai dari SP tadi sama seperti jika kita menangani Recordset di Aplikasi Web kita selama ini.
Untuk memanggil SP tadi dan menampilkan hasilnya di Aplikasi Web, maka kita bisa mengoptimalkan fitur Custom Files untuk membuat halaman kostum yang isinya dapat berupa kode PHP yang kita tentukan sendiri. Jika Anda belum paham apa itu Custom Files di PHPMaker, maka saya sarankan agar membaca terlebih dulu artikel melalui link tadi.
Oke, jika sudah paham apa itu Custom Files dan bagaimana cara menambahkannya di project PHPMaker, maka langkah selanjutnya adalah kita menyalin kode PHP berikut ke dalam bagian Content milik Custom File yang sudah kita tambahkan ke dalam project PHPMaker tadi:
<?php global $conn; $rs = $conn->Execute("GetKantor"); if ($rs && $rs->RecordCount() > 0) { $rs->MoveFirst(); while (!$rs->EOF) { echo $rs->fields(0)."<br>"; $rs->MoveNext(); } $rs->Close(); } else { echo "Maaf, data tidak ditemukan."; } echo "<br>Selesai"; ?>
Perhatikanlah kode PHP di atas. Pertama sekali kita mendeklarasikan variabel $conn dengan kata kunci global untuk memastikan bahwa variabel yang kita gunakan ini sama dengan variabel connection standar yang digunakan oleh Aplikasi Web yang dihasilkan oleh PHPMaker.
Berikutnya kita cukup memanggil SP tadi dengan menggunakan method Execute milik object connection tadi. Setelah itu, kita memeriksa jika Recordset yang dikembalikan adalah valid dan jumlah record-nya lebih besar dari nol, maka eksekusi mulai dari Record pertama sampai terakhir, lalu menampilkan nilai yang terdapat pada field pertama saja.
Sedangkan jika nilai kembalian dari SP tadi tidak valid atau tidak memiliki Record, maka tampilkan pesan yang menyatakan bahwa data tidak ditemukan.
Betapa mudah dan cepatnya, bukan? 😀
untuk menyisipkan parameter di stored procedure bagaimana ya di php maker?
Tinggal ditambahkan saja. Untuk case di atas, misalkan SP GetKantor punya satu parameter berupa “Kode”, maka pemanggilannya menjadi seperti ini:
Misal field nomor order, mengambil dari stored procedure.
Bagaimana ya pak mengambil nya ?
Apakah di Row_Inserting bisa langsung dicoding ?
Bisa.
Saya coba ini (copy paste kode PHP diatas, hanya mengganti nama stored procedure saja)
Namun saat diakses tidak bisa berhasil,hanya keluar kode PHP diatas.
1. Pastikan Anda menyertakan tag pembuka/penutup PHP di atas.
2. Pastikan Anda menyalinnya ke dalam file .php (bukan .html).
1. tag pembka & penutup PHP sdh ada
2. File Name sudah saya ganti menjadi .PHP, namun masih ada error
Fatal error: Call to a member function Execute() on a non-object in C:\xampp\htdocs\crm\orderhistory.php on line 3
Padahal saya sdh exec dari SQL bisa, krn memang saya coba buat stored proc sederhana saja.
Seperti yang dijelaskan pada artikel ini, Anda disarankan mengoptimalkan fitur Custom Files, karena di kode PHP tersebut menggunakan object Connection milik PHPMaker.
Solved pak,
Masalahnya pada setting Custom File , Include Common File saya coba dicontreng.
Mantap.
Saya pingin buat report, dengan parameter kode customer, tanggal 1 , tanggal 2.
Bagaimana menambahkan obyek text box dan disampingnya ada button untuk pencarian data customer.
Lalu menambahkan 2 obyek tanggal.
Gunakan Extended Search atau Advanced Search. Baca topik Table Setup dari menu Help PHPMaker.
Saya pelajari dulu Extended & advanced search.
Contoh seperti aplikasi bapak di http://kodepos.posindonesia.co.id/kodeposalamatlist.php
seperti itu yg saya inginkan 🙂
Pelajari dulu atau pelajari sekarang? Hehe… 😀
Oke, selamat mengeksplorasi, semoga sukses.
Sudah saya pelajari advanced & extended search.
Tapi ini masalahnya khan saya mau panggil stored procedure dengan paramater yg di passing dari front.
Untuk pemanggilan store proc sy sudah buat Custom files dan sdh berhasil saya tampilkan.
Tapi saya cari cari Custom Files di TableOption nya tdk ada setting Advanced & custom search.
Itu dia bagaimana menambagkan obyek tex box, combo, di Custom File.
Apakah coding HTML & PHP untuk menambahkan obyek harus dimasukkan di CONTENT ya ?
Iya.
OK, saya coba
BTW , saya coba coding CSS kok tdk ada efeknya nya jika dimasukkan di CONTENT
Untuk menambahkan kode CSS sendiri, silahkan ikuti petunjuk di artikel ini: Mudahnya Mengubah Warna Glyphicons Bootstrap 3 di Aplikasi Web dari PHPMaker.
Custom Files memang digunakan jika layout-nya berbeda jauh dengan file-file/halaman yang di-generate oleh PHPMaker.
Jika Anda ingin mengoptimalkan fitur Advanced Search atau Extended Search, maka sebaiknya tetap mengoptimalkan file-file script yang sudah dihasilkan oleh PHPMaker. Untuk pemanggilan SP, tinggal disisipkan di server event yang terkait.
Untuk yang ini saya masih blm mengerti maksud bapak. Advanced & extended khan ada nya di Table dan View.
Padahal khan sy mau panggil SP.
Khan field nya supaya dapat diset di SEARCH, blm dapat ditangkap sebagai obyek oleh PHPmaker,
Apakah maksudnya saya membuat table temporary dengan field seperti return table dari SP, supaya dapat ditangkap oleh PHPmaker, lalu ngisinya saat ditrigger dari server event ?
Tidak harus selalu membuat Table temporary.
Anda bisa membuat View di dalam Database berdasarkan satu atau beberapa Table yang sudah ada, lalu menggunakan View tadi sebagai object untuk menghasilkan halaman yang ada Extended Search atau Advanced Search-nya.
ok pak, terima kasih pencerahannya.
Saya mengerti. Terima kasih banyak
Sama-sama.
Tetapi saya mengaplikasikannya masih blm berhasil.
Codingnya ditaruh dimana ya pak ?
Saya memberi code ew_Execute(“CALL pr_order_history)
di Row_Inserting kok tdk ada efeknya ya.
Bagaimana saya tahu SP yang Anda buat itu untuk apa kalau Anda mengatakan tidak ada efeknya itu maksudnya seperti apa?
SP menampilkan status order customer, sehingga customer dapat melihat apakah ordernya berstatus masih SO, sudah DO, atau sudah FAKTUR. Select nya SO LEFT joint table DO, dan FAKTUR.
Sehingga jika DO kosong berarti belum dibuat DO, dst.
Parameternya hanya tanggal BETWEEN.
Sebenarnya menggunakan View juga bisa, namun saya pingin defauldnya kosong, supaya tidak langsung SELECT data,
Oleh karenanya saya mau buat menggunakan SP.
Kalau memang bisa menggunakan VIEW tapi default-nya ingin kosong, ya mending pakai Database View saja. Supaya default data yang ditampilkan di halaman List kosong, maka tinggal aktifkan saja Requires search criteria dari pengaturan tab Table di project-nya.
OK pak, sdh pakai view & solved.
Simple .
Baguslah kalau begitu.
Jika dalam 1 menu saya ingin menampikan multi page . Masing masing PAGE mengambil dari database view, bagaimana caranya ya ?
Misalkan tujuannya : TAB1 berisi view AR customer, TAB 2 berisi GIRO customer blm cair.
Saat ini PHPMaker baru menyediakan fitur Multi-Page melalui bantuan control Tab hanya untuk membagi Field-Field yang terdapat di dalam satu buah object Table/View saja. Belum bisa menampilkan beberapa object Table/View ke dalam beberapa Tab.
Terima kasih pak konfirmnya
Sama-sama.
Saat saya pakai trial versi 10, Site Header Logo & footer text bisa diganti, yg versi 11 kok disable ya ?
Coding nya utk merubah bgmn ya pak 😉
Hehe, kalau yang di v10 memang author PHPMaker-nya masih baik, di mana jika versi trial maka text di header dan footer masih bisa diganti.
Kalau di v11, memang sudah tidak bisa lagi. Solusinya ya harus beli lisensinya. Gak rugi kok beli sejak sekarang. Karena semakin cepat kita dapat lisensinya, maka semakin banyak fitur yang bisa kita gunakan dan optimalkan sejak awal.
he he..pasti beli pak, tunggu app nya lounching dulu.
Thx info
Lha kalau nunggu sampai launching, berarti header footer belum bisa diubah dong? Hehe… 🙂
o ya..maksudnya pre lounching.
Setelah demo ke management, baru beli 🙂 h h h
when I run the code don’t appear any data and show me this error
Array to string conversion in C:\wamp64\www\erp111\phpfn15.php on line 7460
my code is
$sKode = ’10’; //contoh
$syear = ‘2020’;
//$rs = $conn->Execute(“GetKantor(‘”.$sKode.”‘, )”);
$rs = $conn->Execute(“CALL rptfinance1(‘”.$sKode.”‘, ‘”.$syear.”‘)”);
if ($rs && $rs->RecordCount() > 0) {
$rs->MoveFirst();
while (!$rs->EOF) {
echo $rs->fields(0).””;
$rs->MoveNext();
}
$rs->Close();
} else {
echo “Maaf, data tidak ditemukan.”;
}
What PHPMaker version are you using?
Please I Need to open custom file to view Stored Procedure in row_inserting
can You PLZ give me example
You had already asked this question in PHPMaker Discussion Forum. Please continue the discussion from there.