13. Kasus 6. Buku Tamu menggunakan Codeigniter

Setelah mengetahui konsep das

ar CodeIgniter mari kita mulai sebuah contoh penggunaan CodeIgniter. Pada contoh pertama ini akan ditunjukan bagaimana menggunakan query-query dasar pada CodeIgniter. Kita akan membuat Buku Tamu. Selanjutnya ikutilah langkah-langkah berikut ini.

Membuat Table Guestbook

Pada contoh ini  kita akan membuat sebuah aplikasi  Buku Tamu. Untuk itu kita membutuhkan sebuah tabel dengan schema sebagai berikut


CREATE TABLE guestbook
(
id bigint auto_increment PRIMARY KEY,
nama varchar(50),
email varchar(50),
tanggal datetime,
komentar text,
status int
);


Konfigurasi Guestbook

Buka file application/config/database.php. Setting sesuai dengan konfigurasi mysql Anda. Isikan username, 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. 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 extendsCI_Model {
public$table_record_count;
function Guestbook_model()
{
parent::Model();
}
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 isi 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 keluaran yang akan tampak adalah sebagai berikut:

28

Selanjutnya adalah pembuatan controller


<?phpif(!defined(‘BASEPATH’))exit(‘No direct script access allowed’);
class Guestbook extends CI_Controller {
function Guestbook()
{
parent::CI_Controller ();
$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’,’guestbook’);
}

function show()
{
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
->get_data($limit_per_page,$start);
$config[‘base_url’]= site_url(‘guestbook’);
$config[‘total_rows’]=$this->guestbook->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(‘guestbook’,$data);
}
function index()
{
$this->show();
}
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;
}
}


 

Pada controller ini ada 3 fungsi utama yaitu:

  • Konstruktor – fungsi ini akan kita gunakan sebagai  tempat untuk me-load sumberdaya yang dibutuhkan. Seperti library dan helper. Adapun library yang akan digunakan adalah pagination, table, input (sudah autoload). Sedangkan helper yang akan digunakan adalah url dan smiley. Berikut ini adalah kode yang digunakan untuk memanggil library dan model tersebut.

29Pada fungsi load model, parameter kedua itu digunakan untuk alias, jadi jika tanpa alias maka kita harus memanggil fungsi model dengan cara  $this->guestbook_model, sedangkan dengan alias cukup $this->guestbook.

  • Show – fungsi ini akan menampilkan dan memasukkan data buku tamu. Secara logis isi fungsi ini terbagi dua. Yang pertama adalah bagian untuk memasukkan data bukutamu.

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’;
}


 

Jika data sudah tervalidasi dengan benar maka artinya data sudah siap untuk dimasukkan. Maka kita akan menggunakan library input untuk mengambil data form lalu memanggil fungsi $this->guestbook->add($data) untuk memasukkan data tersebut ke dalam database.

Bagian kedua adalah bagian untuk menampilkan data buku tamu.


if ($this->uri->segment($paging_uri))
$start=$this->uri->segment($paging_uri);
else
$start=0;
$limit_per_page=10;
$data[‘tguestbook_list’]=$this->guestbook
->get_data($limit_per_page,$start);
$config[‘base_url’]= site_url(‘guestbook’);
$config[‘total_rows’]=$this->guestbook->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(‘guestbook’,$data);


 

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


<html>
<head>
<title>Buku Tamu</title>
<styletype=”text/css”>
body {
background-color: #fff;
margin: 40px;
font-family: Lucida Grande, Verdana, Sans-serif;
font-size: 14px;
color: #4F5155;
}
</style>
</head>
<body>
<h2>Guest Book </h2>
<hr>
<?php echo validation_errors();?>
<?php if(isset($status)):?>
<div class=”success”>
<span class=”message_content”>Data Sukses Disimpan</span>
</div>
<?php unset($v);endif;?>
<?
if($tguestbook_list)
{
foreach($tguestbook_listas $value)
{
echo”<li><strong><u>”.$value[‘nama’].
“</u></strong> ( “.$value[‘tanggal’].” ): “.
nl2br(parse_smileys($value[‘komentar’],base_url().”smileys/”)).
” <hr></li>”;
}
}
?>

<?php echo $page_links;?>
<?php echo js_insert_smiley(‘bukutamu’,’komentar’);?>
<br>
<h4>Isi Buku Tamu</h4>
<form name=”bukutamu” method=”post”>
<label for=”nama”>Nama : </label>
<input type=”text” name=”nama” value=”<?phpecho
set_value(‘nama’);?>”/><br>
<label for=”email”>Email : </label>
<input type=”text” name=”email” value=”<?phpecho
set_value(’email’);?>”/><br>
<textarea name=”komentar” cols=”40″ rows=”4″>
<?php echo set_value(‘komentar’);?>
</textarea>
<div class=”no-border”>

<?php echo $smiley_table;?>
</div>
<input type=”Submit”/>
</form>
</body>
</html>


 

Pada view tersebut akan di tampilkan data isi buku  tamu dalam list beserta form yang akan digunakan untuk menginputkan data. Kita dapat menggunakan validation helper (fungsi validation_error) untuk menampilkan error yang terjadi.

 

Sumber : Buku Framework CodeIgniter

4 comments on “13. Kasus 6. Buku Tamu menggunakan Codeigniter
  1. musab says:

    gan membuat comment seperti seperti tampilan ini bagaimana ya.? mohon sarannya

  2. I think everything posted was very reasonable.
    However, what about this? what if you wrote a catchier post title?
    I am not suggesting your information is not solid., however suppose you added a title to maybe grab
    people’s attention? I mean 13. Kasus 6. Buku Tamu menggunakan Codeigniter | Andra Wisata's Blog is a little
    vanilla. You ought to glance at Yahoo’s home page and note how they create post headlines to get viewers to open the
    links. You might try adding a video or a related picture or two to grab readers excited about
    what you’ve got to say. Just my opinion, it would bring your posts a
    little bit more interesting.

Leave a comment

May 2024
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
2728293031  
terbanyak dipilih
  • None