Thursday, May 30, 2013

Uji Coba Sistem Database Becak HMVC Framework

Sesuai dengan janji Pakdhe Sakiyun tempo hari yaitu menguji coba sistem database, maka pada artikel kali ini akan kita bahas bagaimana membuat aplikasi buku tamu (guestbook) sederhana,  memanfaatkan  operasi database klasik dan PDO (PHP Data Object), yang telah tersedia dalam framework becak.
Aplikasi guestbook kita kali ini dilengkapi dengan fasilitas menampilkan data, menambah data, merubah serta menghapus data yang sudah pernah tersimpan di database. Jadi secara keseluruhan 4 operasi dasar database yaitu : SELECT, INSERT, UPDATE dan DELETE akan diuji cobakan.
Tole : "Pakdhe..pakdhe, kok ada database klasik segala to?"
Pakdhe : "Itu istilah pakdhe aja, gak perlu bingung ya..soalnya kan saat ini den bagus PHP menyediakan beberapa cara untuk koneksi dan mengoperasikan database. Dari dulu sebenarnya PHP sudah menyediakan teknik pengoperasian database dan sampai saat ini masih banyak yang menggunakan. Teknik ini sengaja pakdhe kasih nama klasik karena sudah ada dari jaman dulu kala. Nah sekarang, si PHP menyediakan juga teknik pengoperasian database yang full Object Oriented Pogramming (OOP) dan selanjutnya dinamakan PDO"
Tole :"Trus pas nanti kita bikin program apakah ada perbedaan antara database klasik dan PDO pakdhe?
Pakdhe :"Tenang saja, khusus untuk framework ini antara yang klasik dan PDO tadi, sudah pakdhe bungkus secara rapi sehingga para pengguna framework ini tidak merasakan perbedaan tata cara pengorasian database-nya Tole..Biar tidak penasaran, coba dengarkan dongengan pakdhe dulu ya.."
To nde poin saja ya, pertama-tama (herannya kok tidak ada kosa kata "terakhir-akhir" ya? he..he..), yang harus kita persiapkan tentunya adalah database-nya. Silahkan buka aja phpmyadmin via browser anda, kemudian buat database baru dengan nama coba. Kira-kira proses pembuatan database ini terlihat seperti gambar dibawah ini
Selanjutnya lengkapi database yang barusan kita buat tadi dengan table-nya. Coba silahkan bikin table dengan nama guestbook, seperti terlihat pada script dibawah ini :

  1. CREATE TABLE IF NOT EXISTS `guestbook` (  
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,  
  3.   `nama` varchar(50) NOT NULL,  
  4.   `email` varchar(50) NOT NULL,  
  5.   `isi` text NOT NULL,  
  6.   `tgl_posting` datetime NOT NULL,  
  7.   PRIMARY KEY (`id`)  
  8. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;  
Nah..sampai disini proses pembuatan database-nya sudah rebes...eeh..beres...selanjutnya mari kita obrak-abrik programnya. Seperti biasa saya bahas dulu susunan folder aplikasinya biar pembaca yang budiman tidak bingung.
Sebenarnya tata cara pembuatan folder aplikasi guestbook ini sama saja dengan aplikasi uji coba kita tempo hari. Kalau dalam uji coba tempo hari kita bikin folder welcome dalam folder directories, sekarang kita bikin folder bukutamu. Untuk lebih jelasnya lihat gambar disamping.
Sebelum lebih jauh ke pembuatan controller, model dan view, pertama kali yang harus kita kerjakan adalah melakukan konfigurasi database. Coba anda perhatikan lingkaran nomor 1 warna merah pada gambar disamping. Konfigurasi ini mutlak harus kita kerjakan terlebih dahulu agar aplikasi kita dapat terkoneksi ke database. Untuk uji coba yang pertama, kita manfaatkan dulu operasi database klasik nanti kalau aplikasi sudah jadi kita akan uji coba operasi database dengan PDO.
Step by step pembuatan aplikasi akan saya bahas dibawah ini.

1. Konfigurasi Database Klasik

Silakan buka file database.php pada folder application/config. Atau kalau belum ada filenya, silahkan dibuat terlebih dahulu. Kemudian copas script konfigurasi seperti dibawah ini.
Yang harus anda perhatikan pada konfigurasi ini adalah pada baris ke 11 (user), baris ke 14 (password) dan baris ke 17 (database). Pada baris ke 11 bisa anda rubah kalau anda menggunakan user lain untuk koneksi ke mysql. Untuk contoh kali ini sengaja saya gunakan user default bawaan dari mysql yaitu root. Jika mysql anda di-password jangan lupa masukkan password koneksi mysql pada baris ke 14. Sedangkan baris ke-17 adalah nama database yang baru saja kita bikin diatas. Kalau tadi anda tidak menamakan database-nya dengan nama coba, maka anda diwajibkan mengganti nama database tadi sesuai dengan nama database yang anda buat.

  1. <?php  
  2. $config = array();  
  3.   
  4. // jika ingin menggunakan PDO ubah mejadi 'mysql_pdo'  
  5. $config['db']['type']       = 'mysql';   
  6.   
  7. // jika anda menggunakan PDO, ubah menjadi '127.0.0.1'  
  8. $config['db']['server']     = 'localhost';   
  9.   
  10. //sesuaikan dengan user yang ada di database mysql anda  
  11. $config['db']['user']       = 'root';  
  12.   
  13. //sesuaikan dengan password mysql anda  
  14. $config['db']['password']   = '';  
  15.   
  16. //sesuaikan dengan nama database yang anda buat  
  17. $config['db']['database']   = 'coba';  
  18. ?>  

2. Aplikasi Buku Tamu

Seperti biasa, untuk membuat aplikasi yang perlu kita sediakan adalah Controller, Model dan View terlebih dahulu. Struktur folder-nya bisa anda lihat pada gambar diatas. Satu per satu coba kita bahas ya..
2.1 Controller
Controller kita kali ini sengaja dinamakan page. Oleh karena itu nama filenya juga page.php. Dalam controller ini terdapat 5 fungsi yaitu:l
  1. __construct : adalah fungsi konstruktor yang berisi deklarasi perintah yang jalan otomatis ketika pertama kali aplikasi dijalankan
  2. index : adalah fungsi default yang akan menampilkan data dan tampilan awal dari aplikasi
  3. edit : adalah fungsi yang bertugas menampilkan data yang akan di-edit/dirubah
  4. simpan : adalah fungsi yang menangani penyimpanan data, baik itu data baru ataupun data lama yang akan diubah/update
  5. hapus : adalah fungsi yang menangani penghapusan data dari database
Adapun script controller page tersebut terlihat seperti dibawah ini

  1. <?php defined('SYS'or exit('Access Denied!');  
  2. class page extends controller  
  3. {  
  4.     public function __construct()  
  5.     {  
  6.         parent::__construct();  
  7.         loader::model('guestbook_model');  
  8.     }  
  9.     public function index()  
  10.     {  
  11.         $this->output->cache(1);        
  12.         $data = array(  
  13.             'id' => '',  
  14.             'nama' => '',  
  15.             'email' => '',  
  16.             'isi' => '',  
  17.             'tgl_posting' => '',  
  18.             'status' => 'data_baru',  
  19.             'daftar_bukutamu' => $this->guestbook_model->GetData()  
  20.         );  
  21.         echo view("guestbook_view"$data, false);  
  22.     }  
  23.     function edit($id){  
  24.         $data_lama = $this->guestbook_model->GetData("WHERE id=$id");  
  25.         $temp = array();  
  26.         foreach($data_lama as $key => $val){  
  27.             $temp[$key] = $val;  
  28.         }  
  29.         $data = array(  
  30.             'id' => $id,  
  31.             'nama' => $temp[0]['nama'],  
  32.             'email' => $temp[0]['email'],  
  33.             'isi' => $temp[0]['isi'],  
  34.             'tgl_posting' => $temp[0]['tgl_posting'],  
  35.             'status' => 'edit',  
  36.             'daftar_bukutamu' => $this->guestbook_model->GetData()  
  37.         );  
  38.         echo view("guestbook_view"$data, false);  
  39.     }  
  40.     function simpan()  
  41.     {  
  42.         $id = isset($_POST['id']) ? $_POST['id'] : NULL;          
  43.         $nama = isset($_POST['nama']) ? $_POST['nama'] : '';  
  44.         $email = isset($_POST['email']) ? $_POST['email'] : '';  
  45.         $isi = isset($_POST['isi']) ? $_POST['isi'] : '';  
  46.         $status = isset($_POST['status']) ? $_POST['status'] : 'data_baru';  
  47.           
  48.         $data = array(  
  49.             'id' => $id,  
  50.             'nama' => $nama,  
  51.             'email' => $email,  
  52.             'isi' => $isi,  
  53.             'tgl_posting' => date('Y-m-d H:i:s')  
  54.         );  
  55.         if($status == 'data_baru'){  
  56.             $result = $this->guestbook_model->InsertData($data);  
  57.             if($result==1) {  
  58.                 echo "<h2>Sukses Menambah Buku Tamu</h2>";  
  59.                 echo "<p><a href='".this()->base_url."/bukutamu/page'>Kembali ke halaman depan</a></p>";  
  60.             }  
  61.         } else if($status == 'edit'){  
  62.             $result = $this->guestbook_model->UpdateData($dataarray('id'=> $id));  
  63.             if($result==1) {  
  64.                 echo "<h2>Sukses Merubah Buku Tamunya $nama</h2>";  
  65.                 echo "<p><a href='".this()->base_url."/bukutamu/page'>Kembali ke halaman depan</a></p>";  
  66.             }  
  67.         }//end if edit  
  68.           
  69.     }//end simpan  
  70.     function hapus($id){  
  71.         $result = $this->guestbook_model->DeleteData(array('id'=> $id));  
  72.         if($result==1) {  
  73.             echo "<h2>Sukses Menghapus Buku Tamu</h2>";  
  74.             echo "<p><a href='".this()->base_url."/bukutamu/page'>Kembali ke halaman depan</a></p>";  
  75.         }  
  76.     }  
  77. }  
  78. ?>  
2.2 Model
Sedangkan model kita kali ini dinamakan guestbook_model. Oleh karena itu nama file PHP nya sama dengan nama kelasnya yaitu guestbook_model.php. Terdapat 5 fungsi dalam class model ini yaitu:
  1. __construct : adalah konstruktor yang berisi deklarasi perintah untuk me-load sistem database. Sedangkan config yang dibaca adalah db (konfigurasi "db" sudah saya bahas pada sub bab 1 diatas)
  2. GetData : bertugas untuk meng-eksekusi perintah SELECT yang berfungsi untuk mengambil data dari database
  3. InserData : bertugas meng-eksekusi perintah penyimpanan data baru(INSERT)
  4. UpdateData : bertugas untuk mengeksekusi perintah perubahan (UPDATE) data
  5. DeleteData : bertugas untuk mengeksekusi perintah penghapusan (DELETE) data
Adapun script model guestbook_model tersebut terlihat seperti dibawah ini

  1. <?php defined('SYS'or exit('Access Denied!');  
  2. class guestbook_model extends model {  
  3.     public function __construct(){  
  4.         loader::database("db");  
  5.     }  
  6.     function GetData($where=""){  
  7.         $this->db->select("SELECT * FROM `guestbook` ".$where);  
  8.         return $this->db->fetch_array();  
  9.     }  
  10.     function InsertData($data){  
  11.         return $this->db->insert('guestbook'$data);  
  12.     }  
  13.     function UpdateData($data$where){  
  14.         return $this->db->update('guestbook'$data$where);  
  15.     }  
  16.     function DeleteData($where){  
  17.         return $this->db->delete('guestbook'$where);  
  18.     }  
  19. }  
  20. ?>  
2.3 View
Terakhir yang perlu kita bikin adalah tampilannya (view). View kita kali ini dinamakan guestbook_view.php. Script lengkapnya seperti berikut ini.

  1. <html>  
  2. <head>  
  3. <title>Buku Tamu Sederhana</title>  
  4. </head>  
  5. <body>  
  6. <h2>Buku Tamu Sederhana</h2>  
  7. <h3>Isi Buku Tamu</h3>  
  8. <form method="POST" action="<?php echo this()->base_url;?>/bukutamu/page/simpan">  
  9. <p><input type="text" name="nama" size="40" value="<?php echo $nama;?>" /><label>Nama</label></p>  
  10. <p><input type="text" name="email" size="40" value="<?php echo $email;?>" /><label>Email</label></p>  
  11. <label>Isi</label>  
  12. <p><textarea name="isi" rows="5" cols="40"><?php echo $isi;?></textarea></p>  
  13. <input type="hidden" name ="id" value="<?php echo $id;?>" />  
  14. <input type="hidden" name ="status" value="<?php echo $status;?>" />  
  15. <p><input type="submit" value="simpan"></p>  
  16. </form>  
  17. <h3>Daftar Buku Tamu</h3>  
  18. <table border="1" width="100%" style="border-collapse:collapse;">  
  19. <tr>  
  20.     <th>ID</th>  
  21.     <th>Nama</th>  
  22.     <th>Email</th>  
  23.     <th>Isi</th>  
  24.     <th>Tgl Posting</th>  
  25.     <th>Operasi</th>  
  26. </tr>  
  27. <?php   
  28. foreach($daftar_bukutamu as $d) {  
  29. ?>  
  30. <tr>  
  31.     <td><?php echo $d['id'];?></td>  
  32.     <td><?php echo $d['nama'];?></td>  
  33.     <td><?php echo $d['email'];?></td>  
  34.     <td><?php echo $d['isi'];?></td>  
  35.     <td><?php echo $d['tgl_posting'];?></td>  
  36.     <td align="center">  
  37.     <a href="<?php echo this()->base_url.'/bukutamu/page/edit/'.$d['id'];?>">Edit</a> -   
  38.     <a href="<?php echo this()->base_url.'/bukutamu/page/hapus/'.$d['id'];?>" onclick="return confirm('Anda yakin akan menghapus data ini?')">Hapus</a>  
  39.     </td>  
  40. </tr>  
  41. <?php  
  42. }//end foreach  
  43. ?>  
  44. </table>  
  45. <p>Waktu komputasi 0.0591 detik. Kebutuhan memory 1.76 MB</p>  
  46. </body>  
  47. </html>  
Nah..sampai disini aplikasi sebagai bahan uji coba sedah selesai kita buat. Untuk menguji aplikasinya jalan apa tidak coba anda ketik di URL browser seperti ini : http://localhost/becak/index.php/bukutamu/page. Seharusnya kalau anda tidak salah ketik akan muncul program seperti terlihat pada gambar dibawah ini.
Silahkan anda isi datanya, kemudian setelah terisi, data-data yang ada tersebut coba di-edit atau dihapus. Jika tidak ada yang error berarti uji coba kita untuk mengoperasikan sistem database berhasil. Tapi untuk uji coba operasi database PDO belum kita lakukan.O..iya sebelum saya lupa, khusus untuk PDO ini ada catatan penting seperti dibawah ini.
Operasi databasePDO ini akan jalan jika modul PDO sudah terpasang/ter-install pada web service anda. Untuk mengetahui PDO-nya sudah terpasang apa belum coba gunakan fungsi phpinfo(). Hati-hati kalau anda masih menggunakan jasa web hosting. Tidak semua web hosting menyediakan modul PDO ini. Jika hosting anda belum memasang modul PDO jangan memaksakan diri menggunakan operasi database PDO, kecuali anda pingin nasibnya sama dengan pakdhe Sakiyun..hehe..
 Jika anda ingin menggunakan PDO, maka yang perlu anda lakukan hanya merubah konfigurasi database saja. Merubahnya bagaimana? lihat script dibawah ini :

view plainprint?
  1. <?php  
  2. $config = array();  
  3.   
  4. // jika ingin menggunakan klasik ubah mejadi 'mysql'  
  5. $config['db']['type']       = 'mysql_pdo';   
  6.   
  7. // jika anda menggunakan klasik, ubah menjadi 'localhost'  
  8. $config['db']['server']     = '127.0.0.1';   
  9.   
  10. //sesuaikan dengan user yang ada di database mysql anda  
  11. $config['db']['user']       = 'root';  
  12.   
  13. //sesuaikan dengan password mysql anda  
  14. $config['db']['password']   = '';  
  15.   
  16. //sesuaikan dengan nama database yang anda buat  
  17. $config['db']['database']   = 'coba';  
  18. ?>  
Nah, sekarang coba anda ukur waktu komputasi (lama proses eksekusi program). Dalam framework sudah disediakan fasilitas untuk mengukur waktu komputasi dan besarnya memory yang dibutuhkan untuk menjalankan aplikasi. Pada aplikasi ini fasilitas pengukur waktu komputasi dan kebutuhan resource memory sudah terpasang. Coba anda lihat gambar hasil eksekusi program diatas. Di tulisan yang paling bawah itu adalah pengukur waktu komputasi dan konsumsi memory. Menurut pakdhe Sakiyun antara operasi klasik dan operasi PDO lebih cepat operasi klasik. Kalau para pembaca tidak/belum percaya silahkan dicoba saja.



sumber: http://www.blogkomputer.com/sampul-tutorial-membangun-hmvc-php-framework.html

No comments:

Post a Comment