Minggu, 29 Juli 2012

Aplikasi CRUD

Aplikasi CRUD (Create, Read/Retrieve, Update, dan Delete) adalah aplikasi yang digunakan untuk melakukan maintenance data, yang terdiri atas modul untuk melakukan penambahan data, pembacaan data, perbaikan, dan penghapusan data.

Orientasi dari suatu aplikasi CRUD adalah manipulasi pada satu tabel, secara utuh atau sebagian kolomnya saja.

Suatu aplikasi CRUD yang lengkap akan menampilkan data dari suatu tabel dalam bentuk tabel atau grid, dengan menu yang terdiri atas tambah, ubah, dan hapus; yang dilengkapi dengan fitur untuk melakukan pemfilteran data. Data disajikan secara utuh atau pun dengan menggunakan paging.

Data harus disajikan dengan menggunakan paging, jika jumlah baris data sudah sangat banyak, sudah melewati ukuran layar. Paging digunakan untuk membuat agar pengguna tidak perlu melakukan scroll layar dan juga agar waktu penampilan data dari server tidak terlalu lama.

CodeIgniter pada versi awal menyediakan fasilitas untuk membuat aplikasi CRUD yang disebut dengan scafolding, tetapi sejak versi 1.7 fitur ini dihapus.

Tetapi pengembang aplikasi dengan dengan menggunakan framework CodeIgniter tidak perlu khawatir, karena banyak framework yang dikembangkan dengan menggunakan CodeIgniter atau pun librari (plugin) yang dapat digunakan.

Beberapa contoh aplikasi CRUD yang bisa digunakan adalah framework iotataubeta, atau beberapa yang ditampilkan berikut:




Senin, 23 Juli 2012

Hasil Query Data

Method query() atau pun ActiveRecord akan memberikan hasil query yang sama, yaitu berupa objek record. 


Objek record ini dapat diproses dengan menggunakan foreach(), atau dikonversi terlebih dahulu menjadi array record, sehingga bisa diproses dengan menggunakan for() yang menggunakan array.


Sebelum melakukan pemrosesan data hasil query, maka pengembang disarankan untuk melakukan pemeriksaan terlebih dahulu dengan menggunakan method num_rows(). Pemeriksaan ini digunakan untuk memastikan apakah ada data hasil query atau tidak. Jika tidak ada maka kita bisa menampilkan pesan bahwa tidak ada data yang diquery, sebagai ganti prosesnya.


Kita dapat menggunakan fungsi result() kepada objek database, $this->db->result(), yang akan menghasilkan sebuah objek record atau array kosong.


$row=$query->result();


akan menghasilkan sebuah objek record, yang kemudian isinya ditampilkan dengan cara:


echo $row->namakolom1;
..
echo $row->namakolomn;


Proses konversi menjadi array dapat dilakukan dengan menggunakan fungsi result_array();


$row=$query->result_array();


Hasilnya akan menghasilkan sebuah array record, yang kemudian isinya ditampilkan dengan perintah berikut:


echo $row["namakolom1"];
..
echo $row["namakolomn"];


Untuk memroses keseluruhan data objek hasil array dilakukan dengan cara:


   foreach ($query->result() as $row)
   {
      echo $row->namakolom1;
      ..
      echo $row->namakolomn;
   }



Jika kita melakukan pemeriksaan terlebih dahulu, maka berikut adalah kodenya:


$query = $this->db->query("select * namatabelatauview");
if ($query->num_rows() > 0)
{
   foreach ($query->result() as $row)
   {
      echo $row->namakolom1;
      ..
      echo $row->namakolom2;
   }
}  else {

   echo "Tidak ada data hasil query!";
}

Minggu, 22 Juli 2012

Method Query Dengan CI

CI memberikan kebebasan kepada pengembang aplikasi yang menggunakan frameworknya. Pengembang yang masih senang menggunakan perintah SQL untuk melakukan query, CI menyediakan fungsi atau method query(), dengan parameter berupa string SQL.

Pengembang aplikasi harus menyiapkan perintah SQL terlebih dahulu, baru kemudian dimasukkan sebagai parameter dari method query().


<?php
..
$sqlstr="select * from namatabel ";
$qresult=$this->db->query($sqlstr);
var_dump($qresult);
..
?>

Perintah SQL yang dijadikan parameter untuk method query() dapat berupa perintah untuk membaca data dari database (select), untuk menambah data (insert), untuk memperbaiki data (update), atau untuk melakukan penghapusan (delete).


Hasil dari method query() dan ActiveRecord sama saja, berupa objek hasil query, apabila perintah SQL adalah select.

Selain perintah select, maka hasilnya adalah jumlah record yang terkena proses. Method untuk mendapatkan jumlah record yang terkena proses adalah affected_rows():


$nr=$this->db->affected_rows()

Kita dapat menggunakan nilai dari jumlah record yang terkena proses ini, untuk mengetahui apakah proses insert, update, atau delete berhasil atau tidaknya.


Jumat, 20 Juli 2012

Konfigurasi Database Dalam CI

Salah satu keunggulan dari framework PHP CI adalah dukungan framework untuk pembuatan aplikasi database. CI menyediakan dukungan kepada hampir database besar yang populer, dari MySQL, PostgreSQL, MS SQL Server, dan Oracle.

Pengembang bisa langsung berkonsentrasi pada pengembangan program. Mengapa? Karena CI telah membuatkan librari yang membungkus semua fungsi database yang ada dalam PHP menjadi seragam.

Konfigurasi
Data tentang database yang akan digunakan oleh program, cukup didefinisikan di dalam file konfigurasi database.php yang ada di dalam direktori application/config.

Berikut adalah contoh dari isi konfigurasi database.php

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
$db['default']['swap_pre'] = "";
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Pengembang cukup mengubah isi dari item hostname, username, password, database, dan dbdriver.
Jika kita menggunakan MySQL, maka konfigurasi di atas, cukup diubah hostname, username, password, dan databasenya saja.

Autoload
Agar koneksi database dibuka secara otomatis, maka berikutnya pengembang cukup mendefinisikan di dalam file konfigurasi autoload, pada item libraries dimasukkan database sebagai librari class yang harus diload secara otomatis.

Kamis, 19 Juli 2012

ActiveRecord Dasar: Metode Query Database Dalam CI

SQL merupakan bahasa untuk melakukan query data yang berawal dari database yang menggunakan sistem manajemen database relasional.

CI menyediakan metode query data yang memudahkan pemrogram yang belum mahir untuk menyusun perintah SQL untuk dapat dengan mudah melakukan query data, dengan metode yang disebut dengan ActiveRecord. Istilah ActiveRecord ini populer di lingkungan Ruby On Rail.

ActiveRecord memungkinkan pemrogram untuk melakukan query data tanpa harus membuat perintah SQL, tetapi cukup menyebutkan nama tabel atau viewnya saja.

$rs=$this->db->get('namatabel');

Perintah get() sama dengan kita memberikan perintah SQL:

select * from namatabel

Jika kita ingin mengambil sebagian kolom dari suatu tabel, maka kita bisa menggunakan fungsi select()

$this->db->select("namakolom1, namakolom2");

$rs=$this->db->get('namatabel');


Sama dengan perintah SQL:

select namakolom1, namakolom2 from namatabel

Chaining
Kita bisa membuat perintah ActiveRecord dengan menggunakan satu baris:



$this->db->select("namakolom1, namakolom2")->get('namatabel');


Perintah ActiveRecord bisa disatukan, sehingga pengembang bisa menyederhanakan perintah.










Rabu, 18 Juli 2012

Konfigurasi Autoload

CI menganjurkan untuk melakukan pemuatan (load) suatu helper atau librari class dilakukan pada saat akan digunakan. Cara ini dilakukan agar tidak terlalu banyak baris program yang harus dimuat dan diinterpretasi oleh PHP di server.

Dalam kondisi tertentu beberapa helper dan librari class banyak digunakan atau hampir selalu digunakan dalam suatu program yang dibuat; seperti helper HTML, URL, dan FORM hampir selalu digunakan oleh program untuk menghasilkan suatu tampilan entri,

Jika kita dapat mengidentifikasi bahwa heper dan librari ini ada hampir pada setiap controller dan fungsi-fungsinya, model, atau viewnya, maka kita bisa membuat agar pemuatan dilakukan secara otomatis oleh CodeIgniter, yang dilakukan dengan menspesifikasikannya dalam file konfigurasi autoload.php.

File autoload.php berada di bawah direktori application/config.

Dalam file autoload.php ini, kita mendefinisikan pemuatan secara otomatis semua helper yang paling sering digunakan, librari class mana yang sering digunakan, dan bisa jadi file model mana saja yang digunakan.


Berikut adalah item-item yang dapat dimuat secara otomatis:
  • Semua librari class yang ada di bawah folder "libraries"
  • Semua file helper yang ada di bawah folder "helpers"
  • File config tambahan yang ditemukan di bawah folder "config"
  • File-file bahasa yang ada di bawah folder "system/language"
  • Model-model yang ditemukan dalam folder "models"


Dengan didefinisikan di dalam file autoload.php ini, maka pemrogram tidak perlu melakukan pemuatan lagi di dalam setiap controller, model, atau view yang akan menggunakannya.









Selasa, 17 Juli 2012

Membuat Form Dengan Teknik MVC

Di dalam aplikasi dengan menggunakan MVC, maka kita dianjurkan untuk dapat memilah bagian-bagian dari program yang dibuat menjadi setidaknya 3 file, controller, view, dan model. Jangan sampai semua kode hanya ada di dalam controller, jika terjadi demikian, maka apa bedanya program yang dihasilkan dengan framework dengan yang tidak?

Kita akan membuat secara bertahap, memilah contoh pembuatan form pada tulisan sebelumnya dengan menggunakan model dan view.

Contoh membuat form komentar yang menggunakan hanya satu file controller saja, ditunjukkan seperti berikut:


<?php
class C_formkomentar extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->helper("form");
}
function index(){
$aksi="simpankomentar";
$namapengunjung=array(
 "name"=>"namapengunjung"
 ,"size"=>"50"
 ,"maxlength"=>"100"
);
$email=array(
 "name"=>"email"
 ,"size"=>"50"
 ,"maxlength"=>"100"
);
$komentar=array(
 "name"=>"komentar"
 ,"rows"=>"5"
 ,"cols"=>"40"
);
echo form_open($aksi);
echo form_label("Nama : ").form_input($namapengunjung);
echo br();
echo form_label("Email : ").form_input($email);
echo br();
echo form_label("Komentar : ").form_textarea($komentar);
echo br();
echo form_close();
}
}
?>


Program untuk menampilkan form di atas, menggunakan satu file saja, yaitu controller. Suatu controller seharusnya tidak panjang programnya seperti di atas, karena kita belum menggunakan teknik pemrograman dengan MVC.

Kita harus membuat sebuah file model untuk mendefinisikan elemen form dan sebuah view untuk menampilkannya, menjadi seperti berikut:

Isi file model m_formkomentar.php:


<?php
class M_formkomentar extends CI_Model{
function formelemen(){
$aksi="simpankomentar";
$namapengunjung=array(
 "name"=>"namapengunjung"
 ,"size"=>"50"
 ,"maxlength"=>"100"
);
$email=array(
 "name"=>"email"
 ,"size"=>"50"
 ,"maxlength"=>"100"
);
$komentar=array(
 "name"=>"komentar"
 ,"rows"=>"5"
 ,"cols"=>"40"
);
return array(
"aksi"=>$aksi
,"namapengunjung"=>$namapengunjung
,"email"=>$email
,"komentar"=>$komentar
)
}
}
?>


Isi file view v_formkomentar.php:


<?php
echo form_open($aksi);
echo form_label("Nama : ").form_input($namapengunjung);
echo br();
echo form_label("Email : ").form_input($email);
echo br();
echo form_label("Komentar : ").form_textarea($komentar);
echo br();
echo form_close();
?>


Isi file view v_formkomentar ini hanya merupakan penyederhanaan contoh, kita harus memberikan kode HTML tambahan agar dapat ditampilkan dengan lebih baik.

Setelah kita membuat model dan viewnya, maka kita harus memperbaiki file controllernya menjadi seperti berikut:


Isi file controller c_formkomentar.php:


<?php
class C_formkomentar extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->helper();
}
function index(){
$this->load->model("m_formkomentar");
$data=$this->m_formkomentar->formelemen();
$this->load->view("v_formkomentar",$data);
}
}
?>


Program controller yang dibuat menjadi lebih sederhana dan ringkas. Dampaknya adalah kita bisa mendefinisikan elemen form tambahan di dalam file model, tanpa perlu khawatir mengubah logika program, dan mengubah tampilannya dengan mengubah file view.