Dear reader,
Okey, Klo Gie sebelumnya posting tentang MVC di CodeIgniter, nah…, kali ini Gie posting contoh operasi manipulasi database (insert,update,delete) dengan CodeIgniter. Gie pikir ini merupakan hal mendasar yang harus kita kuasai sebelum kita membuat aplikasi yang rumit bin kompleks. He3x….,
Ok, langsung saja bikin database di phpmyadmin, beri nama sesuai dengan konfigurasi database.php yang telah temen2 lakukan. Klo database Gie bernama ciprojectdb. Kemudian buat 1 tabel dalam database tersebut dengan skema seperti berikut:
CREATE TABLE `pegawai` ( `id` int(11) NOT NULL auto_increment, `nip` varchar(20) NOT NULL, `nama` varchar(30) NOT NULL, `pekerjaan` varchar(30) NOT NULL, `alamat` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Setelah table terbuat maka langkah berikutnya adalah membuat model, dari table tersebut. Caranya adalah buat file dengan nama misal: mpegawai.php kemudian simpan pada folder ci-project/system/application/models. Dalam file ini kita akan membuat sebuah kelas dengan nama MPegawai yang mana di dalam kelas tersebut akan kita buat fungsi-fungsi yang kita butuhkan untuk memanipulasi database pada table pegawai yang telah kita buat di atas. Perlu diketahui penamaan kelas harus sama dengan nama file dan huruf pertama harus huruf kapital. Untuk huruf berikutnya, klo Gie biasane setiap awal kata Gie pake huruf kapital. Kelihatan lebih jelas maslahnya. Nah, untuk kode program pada kelas MPegawai lengkapnya seperti berikut:
Mpegawai.php
<?php
class MPegawai extends Model{
// fungsi konstruktor
function MPegawai(){
parent::Model();
}
//fungsi untuk mendapatkan data pegawai berdasarkan id
function getPegawai($id){
$data = array();
$this->db->where('id',$id);
$this->db->limit(1);
$Q = $this->db->get('pegawai');
if($Q->num_rows() > 0){
$data = $Q->row_array();
}
$Q->free_result();
return $data;
}
// fungsi untuk mendapatkan semua data pegawai
function getAllPegawai(){
$data = array();
$this->db->order_by('nama','asc');
$Q = $this->db->get('pegawai');
if ($Q->num_rows() > 0){
foreach ($Q->result_array() as $row){
$data[] = $row;
}
}
$Q->free_result();
return $data;
}
// fungsi untuk menambahkan data pegawai ke dalam tabel hari form isian
function addPegawai(){
$data = array(
'nip' => $this->input->post('nip'),
'nama' => $this->input->post('nama'),
'pekerjaan' => $this->input->post('pekerjaan'),
'alamat' => $this->input->post('alamat')
);
$this->db->insert('pegawai',$data);
}
// fungsi untuk mengedit data pegawai berdasarkan id pegawai
function editPegawai(){
$data = array(
'nip' => $this->input->post('nip'),
'nama' => $this->input->post('nama'),
'pekerjaan' => $this->input->post('pekerjaan'),
'alamat' => $this->input->post('alamat')
);
$this->db->where('id',$this->input->post('id'));
$this->db->update('pegawai',$data);
}
// fungsi untuk menghapus data pegwai berdasarkan id pegawai
function deletePegawai($id){
$this->db->where('id',$id);
$this->db->delete('pegawai');
}
}
?>
Selanjutnya kita akan membuat Controller dengan nama Pegawai dan di simpan dalam file pegawai.php pada folder ci-project/system/application/controllers. Kode programnya adalah sebagai berikut:
pegawai.php
<?php
class Pegawai extends Controller{
function Pegawai(){
parent::Controller();
$this->load->model('MPegawai');
}
function index(){
$data['title'] = "Halaman Data Pegawai";
$data['pegawai'] = $this->MPegawai->getAllPegawai();
$this->load->vars($data);
$this->load->view('pegawai_home');
}
function add(){
if ($this->input->post('nip')){
$this->MPegawai->addPegawai();
$this->session->set_flashdata('message','Data Pegawai berhasil ditambahkan !');
redirect('pegawai','refresh');
} else {
$data['title'] = "Menambah Data Pegawai";
$this->load->vars($data);
$this->load->view('pegawai_add');
$this->session->set_flashdata('message','Data Pegawai gagal ditambahkan !');
}
}
function edit($id=0){
if ($this->input->post('nip')){
$this->MPegawai->editPegawai();
$this->session->set_flashdata('message','Data Pegawai telah diedit !');
redirect('pegawai','refresh');
}else{
//$id = $this->uri->segment(4);
$data['title'] = "Edit Data Pegawai";
$data['pegawai'] = $this->MPegawai->getPegawai($id);
$this->load->vars($data);
$this->load->view('pegawai_edit');
}
}
function delete($id){
//$id = $this->uri->segment(4);
$data['title'] = "Hapus Data Pegawai";
$data['pegawai'] = $this->MPegawai->getPegawai($id);
$this->load->vars($data);
$this->load->view('pegawai_delete_confirm');
}
function delete_confirm(){
$id = $this->input->post('id');
$confirm = $this->input->post('confirm');
if ($confirm=="Hapus"){
$this->MPegawai->deletePegawai($id);
$this->session->set_flashdata('message','Data Pegawai telah dihapus!');
redirect('pegawai/index','refresh');
}else{
redirect('pegawai/index','refresh');
}
}
}
?>
Setelah model dan controller telah kita buat, maka kita akan membuat view sesuai kebutuhan kita, yaitu untuk halaman utama pegawai kita buat pegawai_home.php, halaman edit kita buat pegawai_edit.php , halaman tambah data kita buat pegawai_add.php, dan halaman delete kita buat pegawai_delete_confirm.php. Keempat file tersebut disimpan dalam folder ci-project/system/application/views. Dan berikut ini adalah kode program dari masing-masing file:
pegawai_home.php
<h1><?php echo $title;?></h1>
<p><a href="<?=base_url()?>index.php/pegawai/add">Tambah Pegawai</a></p>
<?php
if ($this->session->flashdata('message')){
echo "<p><i>".$this->session->flashdata('message')."</i></p>";
}
?>
<table width="450" border="1">
<tr>
<td width="27">NIP</td>
<td width="99">Nama</td>
<td width="101">Pekerjaan</td>
<td width="91">Alamat</td>
<td width="98">Aksi</td>
</tr>
<?php
if (count($pegawai)){
foreach ($pegawai as $key => $list){
?>
<tr>
<td><?=$list['nip'];?></td>
<td><?=$list['nama'];?></td>
<td><?=$list['pekerjaan'];?></td>
<td><?=$list['alamat'];?></td>
<td><a href="<?=base_url()?>index.php/pegawai/edit/<?=$list['id'];?>">Edit</a> | <a href="<?=base_url()?>index.php/pegawai/delete/<?=$list['id'];?>">Hapus </a></td>
</tr>
<?php
}
}
?>
<tr>
<td colspan="4">Total Pegawai </td>
<td><?=count($pegawai);?></td>
</tr>
</table>
<p> </p>
pegawai_add.php
<h1><?php echo $title;?></h1>
<form id="form1" name="form1" method="post" action="<?=base_url()?>index.php/pegawai/add">
<table width="400" border="1">
<tr>
<td colspan="2"><div align="center"><strong>Tambah Data Pegawai </strong></div></td>
</tr>
<tr>
<td colspan="2">
<?php
if ($this->session->flashdata('message')){
echo "<i>".$this->session->flashdata('message')."</i>";
}
?>
</td>
</tr>
<tr>
<td>NIP</td>
<td><input name="nip" type="text" id="nip" /></td>
</tr>
<tr>
<td>Nama</td>
<td><input name="nama" type="text" id="nama" /></td>
</tr>
<tr>
<td>Pekerjaan</td>
<td><input name="pekerjaan" type="text" id="pekerjaan" /></td>
</tr>
<tr>
<td>Alamat</td>
<td><input name="alamat" type="text" id="alamat" /></td>
</tr>
<tr>
<td> </td>
<td><input name="Tambah" type="submit" id="Tambah" value="Submit" /></td>
</tr>
<tr>
<td> </td>
<td><a href="<?=base_url()?>index.php/pegawai/">Ke halaman depan >> </a></td>
</tr>
</table>
</form>
pegawai_edit.php
<h1><?php echo $title;?></h1>
<form id="form1" name="form1" method="post" action="<?=base_url()?>index.php/pegawai/edit">
<table width="400" border="1">
<tr>
<td colspan="2"><div align="center"><strong>Edit Data Pegawai </strong></div></td>
</tr>
<tr>
<td colspan="2">
<?php
if ($this->session->flashdata('message')){
echo "<i>".$this->session->flashdata('message')."</i>";
}
?>
</td>
</tr>
<tr>
<td>NIP</td>
<td><input name="nip" type="text" id="nip" value="<?=$pegawai['nip'];?>"/></td>
</tr>
<tr>
<td>Nama</td>
<td><input name="nama" type="text" id="nama" value="<?=$pegawai['nama'];?>" /></td>
</tr>
<tr>
<td>Pekerjaan</td>
<td><input name="pekerjaan" type="text" id="pekerjaan" value="<?=$pegawai['pekerjaan'];?>" /></td>
</tr>
<tr>
<td>Alamat</td>
<td><input name="alamat" type="text" id="alamat" value="<?=$pegawai['alamat'];?>" /></td>
</tr>
<tr>
<input type="hidden" value="<?=$pegawai['id']?>" name="id" />
<td> </td>
<td><input name="Submit" type="submit" id="Tambah" value="Edit" /></td>
</tr>
<tr>
<td> </td>
<td><a href="<?=base_url()?>index.php/pegawai/">Ke halaman depan >> </a></td>
</tr>
</table>
</form>
pegawai_delete_confirm.php
<h1><?php echo $title;?></h1>
<?php
echo form_open('pegawai/delete_confirm');
echo "<p><label for='ptitle'>Nama : $pegawai[nama] </label><br/><br>";
echo form_hidden('id',$pegawai['id']);
echo form_submit('confirm','Hapus');
echo form_submit('confirm','Batal');
echo form_close();
?>
Nah, sekarang saatnya untuk melihat hasilnya. Caranya : buka browser kemudian ketikkan http://localhost/ci-project/index.php/pegawai/. Jika tidak ada kesalahan maka akan tampil seperti berikut:

Okey, latihan manipulasi database kita kali ini cukup, jika ada kesulitan / kesalahan silahkan bertanya dengan mengisi komentar di bawah. Dan akhirnya sampai jumpa di postingan berikutnya…bye2
Pertamaxx..
Lanjut gan..
Gik, iklanmu pop=up metu terus.. Golek pluguns WP sing nggo mateni pop-up.
Iyo e, padahal wingi sedino wis gak ono, saiki kumat meneh….
mas gie,
1. di route.php $route['default_controller'] = “pegawai”;
2. di config.php $config['base_url'] = “http://localhost/kontak/”;
3. ada error di <a href="
Fatal error: Call to undefined function base_url() in C:\xampp\htdocs\kontak\system\application\views\pegawai_home.php on line 2
mohon pencerahannya, terima kasih mas gie
Coba buka pada file autoload.php, pada baris $autoload['helper'] = array() , ubah menjadi $autoload['helper'] = array(‘url’,'form’,'text’,'date’);. Error yang Akhrikas temukan kemungkin disebabkan karena helper URL belum diload. Semoga membantu…
error Fatal error: Call to a member function flashdata() on a non-object in C:\xampp\htdocs\CI\Pegawai\system\application\views\pegawai_home.php on line 5
bisa dibantu?
trim
Spertinya library session blum di load mas… coba buka file di system/application/config/autoload.php, cari baris yang ada $autoload['libraries'] kemudian tambahkan ‘session’ dalam array-nya. Misalny seperti berikut ini:
$autoload['libraries'] = array(‘database’, ‘session’, ‘form_validation’)
Thanks… semoga membantu…
waaw…. saaya baru belajar codeigniter, dan saya untuk pertama kalinya berhasil membuat manipulasi data dari tutorial ini. artikel dan komentar-komentarnya sangat membantu sekali. permasalahan yang saya hadapi adalah seperti keluar eror yang seperti mas pinkmen katakan.
Thanks ya admin, saya ijin save page as halaman ini guna untuk pembelajaran.
oke.. maksih telah berkunjung ke sini..
mas itu harus pake xamp ya…kalo sama apache bisa ga ???
saya pake apache tapi error trs di file Mpegawai line 22..knapa ya?
pake semua pake server (wamp,xampp,vertrigo, dll) bisa kok.. error messagenya sperti apa?
makasih mas tutorialnya,,,,,, kerennn,,, smoga ilmunya tambah terus…
Iya mas abdul… sama2.. mksih ats doanya…:)
Gimana kalok multipel delet mengunakan cekbox gan.
utk multiple checkbox kita tinggal memberi nama checkbox tesb sbg variable array yang menampung id id yang akan di hapus. Misal di view kita tambahkan chekbox sperti ini :
kemudian pada bagian controller kita loop sebanyak data yang ada (record yng dicek) utk dihapus:
$records = $this->input->post('records'); foreach ($records as $id => $key){ // loop utk penghapusan sebanyak data yng di cek $this->MPegawai->delete($id) }Saya kira sperti itu bisa mas.. semoga bisa membantu…:-)
mas saya masih baru belajar nnih,ada yg error bunyinya seperti ini
arse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in C:\xampp\htdocs\lat1\ci_project\system\application\controllers\pegawai.php on line 8, itu knapa y
Mungkin ada kurung kurawal, titik koma, kurung, yng kurang mas… coba di cek lagi..:D
mas numpang tanya, bisa gak ngajar private tntng CI?
Kita pertimbangkan waktunya dulu.. PM aja..:D
gan tolong bantuannya gimana nampilan edit, update delete pada browser, masih pendatang baru gan
Kode program ini udah bisa insert, update, delete kok gan..:D
gimana kalo databasenya sudah ada relasi gan?
contoh kasusny seprti apa gan??… n permslahany ada dmana??..:-)
saya dapat error mesaage kaya gini terus Mas :
A PHP Error was encountered
Severity: Notice
Message: Undefined property: MPegawai::$db
Filename: models/Mpegawai.php
Line Number: 22
Fatal error: Call to a member function order_by() on a non-object in D:\xampp\htdocs\try\system\application\models\Mpegawai.php on line 22
Kemungkinan library databaseny belum di load itu mas, coba buka file autoload.php di folder config, trus bagian $config['libraries'] ditambahkan ‘database’ di dalam arraynya jadi => array(‘database’).
Fatal error: Class ‘Controller’ not found in C:\xampp\htdocs\kantor\application\controllers\pegawai.php on line 2
autoload dan config nya smua udah ditambahin.. mhon petunjuknya…
Masnya pake CI versi berapa?? tutorial ini masih pake yang 1.7, klo yang versi > 2.0, pas extends Controller berubah jadi extends CI_Controller, begitu jg dengan model, Model => CI_Model. Trims
klo gt, mlah jadi kyak gni:
Fatal error: Call to undefined method CI_Controller::Controller() in C:\xampp\htdocs\kantor\application\controllers\pegawai.php on line 4
pake CI 2.0.3, xampp 1.7.4, editor CodeLobster
Coba souce code mas ny di krim ke email saya. Nanti saya cek.
sudah saya kirimkan,, silakan di cek
saya juga punya permasalahan yang sama, mas. mohon pencerahannya
Sya usahakan utk upgrade kode program ini ke CI 2.0, krena kode ini masih pake versi 1.7
Fatal error: Call to undefined method CI_Controller::ci_controller() in C:\Program Files\xampp\htdocs\CodeIgniter\application\controllers\pegawai.php on line 4
ko saya cobain error yaahh??.. jadi waktu buka form edit, d textfieldnya malah ada “” bukan isi nya.. itu gara gara apa yaa??.. mohon bantuannya
suwun mas
akhirnya bisa juga
Semangatt!
terima kasih, aketril yang sangat membantu
btw saya juga punya pertanyaan yang sama dengan baobaz di atas.. (sepertinya group dan role itu redundan ya?)