Setelah mengetahui konsep dasar CodeIgniter mulai dari cara konfigurasi, crud serta yang masih hangat yaitu cara upload gambar dan lain sebagainya. Sekarang mari kita mulai sebuah contoh penggunaan  CodeIgniter yang lebih dalam atau lebih spesifik lagi. Pada contoh pertama ini saya akan menunjukan bagaimana caranya menggunakan query-query dasar pada CodeIgniter. Kita akan membuat sebuah Buku Tamu. Selanjutnya ikutilah langkah-langkah berikut ini.
- Membuat Tabel Guestbook di database
Pada contoh ini kita akan membuat sebuah aplikasi Buku Tamu. Untuk itu kita membutuhkan
sebuah tabel dengan skema sebagai berikut ini:
Saya di atas langsung menjelaskan isi dari tabel tersebut karena saya anggap kalian sudah bias dalam membuat taabel di dalam database dan saya juga ingin kalian fokus terhadap materi ini langsung tanpa menyita banyak waktu untuk mengulas kembali.
- Mengkonfigurasi Guestbook
Langkah pertama buka file application/config/database.php. Setting sesuai dengan konfigurasi mysql Anda. Isikan username (root) jika menggunakan xampp , password dan nama database yang digunakan. Setelah itu buka juga file application/config/autoload.php
ubahlah variabel $autoload['libraries'] (kira-kira baris 41)
menjadi
$autoload['libraries']=array('database');
Kemudian buka melalui browser kalian. Jika tidak terjadi kesalahan apapun berarti Anda sudah berhasil
menyeting database dengan benar
- Membuat Model Guestbook
Untuk mendapatkan data dari database maka kita harus memiliki model yang dapat mengambil
data tersebut. Oleh karena itu Anda harus menambahkan model berikut di
Application/models/Guestbook_model.php. Adapun isi dari file tersebut adalah
<!--?php>
class Guestbook_model extends CI_Model {
     public $table_record_count;
               function __construct()
               {
          parent::__construct();
               }
 function get_data($start=NULL,$count=NULL)
 {
                $results=array();
                $this->db->from('guestbook');
                $this->table_record_count =$this->db->count_all_results();
                if($start)
                {
                if($count)
                $this->db->limit($start,$count);
                else
                $this->db->limit($start);
                }
                $query=$this->db->get('guestbook');
                if($query->num_rows()>0)
                return $query->result_array();
                else
                return FALSE;
 }
 function add($data)
                {
                $this->db->insert('guestbook',$data);
                return $this->db->insert_id();
 }
 function update($keyvalue,$data)
 {
                $this->db->where('id',$keyvalue);
                $this->db->update('guestbook',$data);
                return $this->db->affected_rows();
 }
 function delete($idField)
 {
                $this->db->where('id',$idField);
                $this->db->delete('guestbook');
                return true;
 }
}
ÂÂ
Model diatas terdiri atas lima fungsi yaitu konstruktor, get_data, add, update dan delete. Fungsi
get_data digunakan untuk mengambil seluruh isi data dari tabel guestbook. Fungsi tersebut terdiri atas dua
parameter yaitu start dan limit. Parameter tersebut dibutuhkan karena kita menggunakan library
pagination. (Library pagination digunakan untuk membuat fitur paging/halaman pada data). Library
pagination membutuhkan beberapa data diantaranya jumlah semua record. Pada variabel $this-
>table_record_count akan disimpan jumlah semua record di tabel.
- Membuat Controller Dan View
Pada controller ini kita akan memanggil library, helper dan model yang akan digunakan. Adapun
library yang akan digunakan adalah form_validation dan table. Sedangkan helper yang harus
digunakan adalah url dan smileys. Adapun hasil yang nanti akan tampak kurang lebih nya adalah sebagai
berikut:
                   ÂÂ
Selanjutnya adalah pembuatan controller
application/controllers/Guestbook.php
<!--?php>
 class Guestbook extends CI_Controller {ÂÂ
               function __construct() {
               parent::__construct();
        $this->load->library('pagination');
        $this->load->library('form_validation');
       $this->load->helper('smiley');
       $this->load->helper('url');
       $this->load->library('table');
       $this->load->model('Guestbook_model');
 }
function index()
{
 if($this ->_validate_data())
 {
 $data['nama']=$this->input->post('nama',TRUE);
 $data['email']=$this->input->post('email',TRUE);
 $data['komentar']=$this->input->post('komentar',TRUE);
 $data['tanggal']= date('Y-m-d H:m:s');
 $data['status']=0;
 if($this->guestbook->add($data))
 $data['status']='Guestbook sukses ditambahkan';
 else
 $data['status']='Guestbook gagal ditambahkan';
 }
 $paging_uri=2;
 if($this->uri->segment($paging_uri))
 $start=$this->uri->segment($paging_uri);
 else
 $start=0;
 $limit_per_page=10;
 $data['tguestbook_list']=$this->Guestbook_model->get_data($limit_per_page,$start);
 $config['base_url']= site_url('guestbook');
 $config['total_rows']=$this->Guestbook_model->table_record_count;
 $config['per_page']=$limit_per_page;
 $config['uri_segment']=$paging_uri;
 $this->pagination->initialize($config);
 $data['page_links']=$this->pagination->create_links();
 $image_array= get_clickable_smileys(base_url().'smileys/');
 $col_array=$this->table->make_columns($image_array,20);
 $data['smiley_table']=$this->table->generate($col_array);
 $this->load->view('v_guestbook',$data);
}
function _validate_data()
{
 $this->form_validation->set_rules('nama','Nama',
 'required|min_length[5]|max_length[12]');
 $this->form_validation->set_rules('email','Email',
 'required|valid_email|htmlspecialchars');
 $this->form_validation->set_rules('komentar','Komentar',
 'required|htmlspecialchars');
 return($this->form_validation->run()==FALSE)?FALSE:TRUE;
}
}
Jika kita akan menampilkan data dalam pagination perlu diingat dua hal, pertama kita
membutuhkan inputan berupa berapa jumlah data yang akan ditampilkan dan data dimulai dari
halaman keberapa dan data yang dihasilkan dari model harus berisi jumlah total data yang kita
punya.
Untuk mendapatkan data yang akan diambil mulai dari data ke berapa, library pagination
meletakkannya informasi tersebut di uri tertentu. Pada kasus ini kita meletakkannya di uri ke 2.
Maka untuk mendapatkannya kita perlu memanggil fungsi $this->uri->segment(2);
Sedangkan untuk jumlah data sudah tersimpan di property model (table_record_count).
⢠Validate_data â Fungsi ini bertugas untuk memvalidasi data yang akan masuk ke buku tamu
$this->form_validation->set_rules('nama','Nama',
'required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('email','Email',
'required|valid_email|htmlspecialchars');
$this->form_validation->set_rules('komentar','Komentar',
'required|htmlspecialchars');
return($this->form_validation->run()==FALSE)?FALSE:TRUE;
Selanjutnya adalah membuat view yang akan digunkan untuk menampilkan data buku tamu
tersebut.
application/views/v_guestbook.php
ÂÂ
ÂÂ
ÂÂ
<title></title>ÂÂ
body {
 background-color: #fff;
 margin: 40px;
 font-family: Lucida Grande, Verdana, Sans-serif;
 font-size: 14px;
 color: #4F5155;
}
ÂÂ
ÂÂ
ÂÂ
ÂÂÂÂ
Guest Book
ÂÂ
ÂÂ
ÂÂ
<!--?php echo validation_errors();?-->
<!--?php if(isset($status)):?-->
Â
Â
Data Sukses Disimpan
Â
Â
<!--?php unset($v);endif;?-->
<!--?>
if($tguestbook_list)
{
 foreach($tguestbook_listas $value)
 {
 echo"
- ".$value['nama'].
ÂÂ
 " ( ".$value['tanggal']." ): ".
 nl2br(parse_smileys($value['komentar'],base_url()."smileys/")).
 "
- ";
ÂÂ
 }
}
?>
<!--?php echo $page_links;?-->
<!--?php echo js_insert_smiley('bukutamu','komentar');?-->
Â
Â
Isi Buku Tamu
Â
Â
<form method="post" name="bukutamu">Â
Nama :
<input name="nama" type="text" value="<?phpecho</p>
set_value('nama');?>" />
Email :
<input name="email" type="text" value="<?phpecho</p>
set_value('email');?>" />
<textarea cols="40" name="komentar" rows="4"></p> <p><?php echo set_value('komentar');?></p> <p></textarea></p>
Â
Â
Â
<!--?php echo $smiley_table;?-->
Â
Â
<input type="Submit" value="Submit Query" /></p>
Â
Â
</form>Â
Â
Â
Pada view tersebut akan di tampilkan data isi buku tamu dalam list beserta form yang akan
digunakan untuk menginputkan data. Kita juga dapat menggunakan validation helper (fungsi
validation_error) untuk menampilkan error yang terjadi.