Hallo semua, sebelumnya saya minta maaf jika ada beberapa komentar-komentar dan permintaan untuk bertukar link yang belum ditanggapi. Karena ada kesibukan jadi saya tak sempat ngurus blog ini
. Baiklah sekarang kita kembali saja ke judul. Sesuai dengan judulnya, postingan kali ini merupakan kelanjutan dari postingan sebelumnya yaitu Simple CRUD with CodeIgniter. Jika sebelumnya kita sudah membuat program CRUD sederhana, sekarang kita akan menambahinya dengan form validation dan information message.
. Baiklah sekarang kita kembali saja ke judul. Sesuai dengan judulnya, postingan kali ini merupakan kelanjutan dari postingan sebelumnya yaitu Simple CRUD with CodeIgniter. Jika sebelumnya kita sudah membuat program CRUD sederhana, sekarang kita akan menambahinya dengan form validation dan information message.Seperti sebelumnya, kita harus mengatur konfigurasi library dan helper di file autoload.php. Kali ini kitambahkan library form_validation dan session.
$autoload['libraries'] = array('database', 'form_validation', 'session');
$autoload['helper'] = array('form', 'url');
Sedangkan untuk konfigurasi database di file database.php masih tetap sama.
$db['default']['hostname'] = 'localhost'; $db['default']['username'] = 'root'; $db['default']['password'] = ''; $db['default']['database'] = 'ci';
Nama database yang digunakan adalah "ci" dan nama tabelnya "cd".
CREATE DATABASE ci; USE ci; CREATE TABLE `cd` ( `kode_cd` int(11) NOT NULL auto_increment, `judul` varchar(50) default NULL, `kategori` varchar(25) default NULL, `stok` int(11) default '0', `harga` int(11) default '0', PRIMARY KEY (`kode_cd`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
Coding model pada file crud_model.php juga masih tetap sama.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Crud_model extends CI_Model {
private $table_name;
public function __construct()
{
parent::__construct();
$this->table_name = 'cd'; //setting nama tabel
}
function create_data($data) //untuk manambah record
{
$this->db->insert($this->table_name, $data);
if($this->db->affected_rows() > 0){
return true;
} else {
return false;
}
}
function read_data() //untuk membaca seluruh record
{
$sql = $this->db->get($this->table_name);
if($sql->num_rows() > 0){
foreach($sql->result() as $row){
$data[] = $row;
}
return $data;
} else {
return null;
}
}
function update_data($kode,$data) //untuk meng-update record
{
$this->db->where('kode_cd', $kode);
$this->db->update($this->table_name, $data);
if($this->db->affected_rows() > 0){
return true;
}
else{
return false;
}
}
function delete_data($kode) //untuk menghapus record
{
$this->db->where('kode_cd', $kode);
$this->db->delete($this->table_name);
if($this->db->affected_rows() > 0){
return true;
}
else{
return false;
}
}
function get_data($kode) //untuk mengambil record berdasarkan kodenya
{
$this->db->where('kode_cd', $kode);
$query = $this->db->get($this->table_name);
if($query->num_rows() > 0){
return $query->row();
}
else{
return null;
}
}
}
Sedangkan coding untuk controller yang ada di file crud.php terdapat perubahan. Dengan library form_validation kita dapat menentukan aturan tiap-tiap field. Misalnya, field "title" tidak boleh kosong, field "stock" harus berupa bilangan integer positif, dsb.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Crud extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('crud_model');
}
function index() //untuk menampilkan form awal yaitu form tambah data cd
{
$data['cd'] = '';
$data['cd_row'] = $this->crud_model->read_data();
$this->load->view('crud_view', $data);
}
function edit() //untuk menampilkan form edit data cd
{
$code = $this->input->post('code');
if (!empty($code)) $kode = $code;
else $kode = $this->security->xss_clean($this->uri->segment(3));
$result = $this->crud_model->get_data($kode);
if ($result == null) redirect('crud');
else $data['cd'] = $result;
$data['cd_row'] = $this->crud_model->read_data();
$this->load->view('crud_view', $data);
}
function delete() //untuk menghapus data cd
{
$kode = $this->security->xss_clean($this->uri->segment(3));
$result = $this->crud_model->get_data($kode);
if ($result == null) {
redirect('crud');
} else {
$delete = $this->crud_model->delete_data($kode);
// tampilkan information message
if ($delete) $this->session->set_flashdata('message', 'Data deleted!');
else $this->session->set_flashdata('message', 'Failed to delete data!');
redirect('crud');
}
}
function create() //untuk menambah data cd
{
// setting konfigurasi form validation
$this->form_validation->set_error_delimiters('<div id="error">', '</div>');
$this->form_validation->set_rules('title', 'Title', 'trim|required|xss_clean');
$this->form_validation->set_rules('category', 'Category', 'trim|required|xss_clean');
$this->form_validation->set_rules('stock', 'Stock', 'trim|required|is_natural_no_zero|xss_clean');
$this->form_validation->set_rules('price', 'Price', 'trim|required|is_natural_no_zero|xss_clean');
// jika tidak lolos validasi
if ($this->form_validation->run() == FALSE){
$this->index();
// jika lolos validasi
} else {
$data = array(
'judul' => $this->input->post('title'),
'kategori' => $this->input->post('category'),
'stok' => $this->input->post('stock'),
'harga' => $this->input->post('price')
);
$create = $this->crud_model->create_data($data);
// tampilkan information message
if ($create) $this->session->set_flashdata('message', 'Data created!');
else $this->session->set_flashdata('message', 'Failed to create data!');
redirect('crud');
}
}
function update() //untuk meng-update data cd
{
// setting konfigurasi form validation
$this->form_validation->set_error_delimiters('<div id="error">', '</div>');
$this->form_validation->set_rules('title', 'Title', 'trim|required|xss_clean');
$this->form_validation->set_rules('category', 'Category', 'trim|required|xss_clean');
$this->form_validation->set_rules('stock', 'Stock', 'trim|required|is_natural_no_zero|xss_clean');
$this->form_validation->set_rules('price', 'Price', 'trim|required|is_natural_no_zero|xss_clean');
// jika tidak lolos validasi
if ($this->form_validation->run() == FALSE){
$this->edit();
// jika lolos validasi
} else {
$code = $this->input->post('code');
$data = array(
'judul' => $this->input->post('title'),
'kategori' => $this->input->post('category'),
'stok' => $this->input->post('stock'),
'harga' => $this->input->post('price')
);
$update = $this->crud_model->update_data($code,$data);
// tampilkan information message
if ($update) $this->session->set_flashdata('message', 'Data updated!');
else $this->session->set_flashdata('message', 'Failed to update data!');
redirect('crud');
}
}
}
Coding view pada file crud_view.php juga terdapat perbuahan. Untuk menampilkan error message tiap-tiap field, kita tambahkan kode <?php echo form_error('nama field');?> seperti dibawah ini.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CRUD CodeIgniter</title>
<link rel="stylesheet" href="<?php echo base_url();?>css/style.css" type="text/css" />
</head>
<body>
<?php
if (empty($cd)) {
$cd->kode_cd = '';
$cd->judul = '';
$cd->kategori = '';
$cd->stok = '';
$cd->harga = '';
$type = 'create';
} else {
$type = 'update';
}
?>
<div id="container">
<h1>CRUD Data CD</h1>
<!-- information message -->
<div id="message"><?php echo $this->session->flashdata('message'); ?></div>
<!-- end information message -->
<div id="form">
<?php
echo form_open('crud/'.$type);
echo form_hidden('code',$cd->kode_cd);
?>
<div id="field">
<span class="label">Title</span>
<?php echo form_input(array('name'=>'title','maxlength'=>50,'value'=>$cd->judul));?>
<?php echo form_error('title'); // tampilkan error (jika ada) ?>
</div>
<div id="field">
<span class="label">Category</span>
<?php
$options = array(
'' => '- select category -',
'action' => 'Action',
'animasi' => 'Animasi',
'drama' => 'Drama',
'horor' => 'Horor',
'Komedi' => 'Komedi'
);
echo form_dropdown('category', $options,$cd->kategori);
echo form_error('category'); // tampilkan error (jika ada)
?>
</div>
<div id="field">
<span class="label">Stock</span>
<?php echo form_input(array('name'=>'stock','value'=>$cd->stok));?>
<?php echo form_error('stock'); // tampilkan error (jika ada) ?>
</div>
<div id="field">
<span class="label">Price</span>
<?php echo form_input(array('name'=>'price','value'=>$cd->harga));?>
<?php echo form_error('price'); // tampilkan error (jika ada) ?>
</div>
<div id="field">
<span class="label"> </span>
<?php echo form_submit(array('name'=>'submit','id'=>'submit','value'=>'Submit'));?>
<?php if ($type=='update') { ?>
<input type="button" id="button" value="Cancel" onclick="window.location.href='<?=site_url('crud');?>'"/>
<?php } ?>
</div>
<?php echo form_close(); ?>
</div>
<div id="table">
<table align="center">
<tr id="head">
<td id="no">No</td>
<td id="judul" align="center">Title</td>
<td id="kategori">Category</td>
<td id="stok">Stock</td>
<td id="harga">Price</td>
<td id="action">Action</td>
</tr>
<?php
if ( !empty($cd_row) ) {
$no = 1;
foreach ($cd_row as $row) { ?>
<tr id="row">
<td id="no"><?php echo $no;?></td>
<td id="judul"><?php echo $row->judul;?></td>
<td id="kategori"><?php echo $row->kategori;?></td>
<td id="stok"><?php echo $row->stok;?></td>
<td id="harga"><?php echo $row->harga;?></td>
<td id="action"> <a href="<?php echo site_url('crud/edit/'.$row->kode_cd);?>">Edit</a> | <a href="<?php echo site_url('crud/delete/'.$row->kode_cd);?>" onclick="return confirm('Are you sure?');">Delete</a></td>
</tr>
<?php
$no++;
}
} else { ?>
<tr id="row">
<td colspan="6" align="center">EMPTY</td>
</tr>
<?
}
?>
</table>
</div>
</div>
</body>
</html>
Setelah semua coding pada model, controller, dan view sudah beres, selanjutnya kita jalankan aplikasinya dengan mengetikkan pada browser http://localhost/ci/index.php/crud. Maka akan tampil halaman aplikasi CRUD seperti dibawah ini.
Setelah itu kita coba tes validasinya dengan memasukkan inputan kosong, jika validasinya sukses maka akan tampil seperti dibawah ini.
FYI, selain dapat menampilkan error message pada tiap-tiap field, CodeIgniter juga dapat menampilkan semua error message manjadi 1. Caranya cukup dengan menuliskan satu baris kode saja yaitu <?php echo validation_errors(); ?>, maka secara otomatis semua error message akan tempil menjadi 1. Untuk keterangan lebih jelas dapat dilihat di http://codeigniter.com/user_guide/libraries/form_validation.html.
Selamat mencoba






21 Comment:
Siplah tulisannya.
terima kasih mas
Nice Post Thanks for sharing this information which is useful for all.
php web development
Mas bagaimana caranya: ketika TITLE sudah di isi tetapi STOK masih kosong saat di submit isian TITLE tidak hilang agar tidak mengisi ulang.
Sebelumnya terimakasih atas kedermawanan ilmunya.
-Adhi-
thanks info-nya.
Klo boleh saran, upload file-nya di mediafire atau indowebster aja mas. di ziddu lemot abis...
"cuma saran"
kalau kita melakukan update atau delete kok muncul ini mulu ya...
Message: Cannot modify header information - headers already sent by
nice code
bisa gak ya pesan kesalahan diseting sesuai dengan kata-kata yang kita inginkan ?
kalo pengen ditambah pagination gimana yha mas caranya??
-newbie-
ada contoh sistem admin di CI 2 mas, kalau ada bagi ya untuk belajar. Aku dapat yg versi luar dari codeigniter.com tapi ingin dapat yang versi dari Indonesia.
mas kalo pk nya diinput gimana ,mas?
tidak otomatis seperti kode cd?
adhi: bisa diakali pakai session
rendra: bisa gan, nanti kapan waktu ane buat postingannya
tjokro: bisa mas, caranya sama..
$this->form_validation->set_rules('title', 'Title', 'trim|required|xss_clean'); gan itu title,Title . parameter keduanya buat apaan gan ??
nulis code view nya digenerate pakai apa ?
siiiiiiiiiipppppp lah tulisannya,.,.
sangat bagus sekali untuk dicontoh,..,.
Mas, kok di tempat saya muncul warning
"Creating default object from empty value" ??
mas kok sudah saya download dan di coba error gini
Parse error: syntax error, unexpected $end in crudview line 104
sudah saya cari kurung kurawalnya lengkap. mohon pencerahannya..
mas,udh saya coba code diatas tp ada bebrp eror sbb : input data g bs dr form krn setlh disubmit data yg tampil ditabel isinya angka 0 semua jd input data cm bisa dari database, sama halnya dengan edit data setelah dipilih data yg mw diedit lalu lakukan edit data lalu submit maka data yg masuk ke tabel semua nilainya 0.itu knp y?trims....
kalo misalnye kita nulis comment gini di text area, dan kita ada enternye. contoh
"AA--
--AA"
dan, nampilinnye gimane?
mas, saya uda ikutin semua tpi ko tiap kali kita input full data yg keluar malah form_validation yg ga diinput lengkap. kalao gtu apa yg kurang? help..
mksh gan
A PHP Error was encountered
Severity: Warning
Message: Creating default object from empty value
Filename: views/crud_view.php
Line Number: 11
error begini ni bos
Post a Comment