CodeIgniter 3# Contoh Aplikasi Manipulasi Database (insert,update,delete)

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>&nbsp; </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>&nbsp;</td>
<td><input name="Tambah" type="submit" id="Tambah" value="Submit" /></td>
</tr>
<tr>
<td>&nbsp;</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>&nbsp;</td>
<td><input name="Submit" type="submit" id="Tambah" value="Edit" /></td>
</tr>
<tr>
<td>&nbsp;</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:

insert,update

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

  • http://gojeg.blogspot.com/ gojeg

    Pertamaxx..
    Lanjut gan..
    Gik, iklanmu pop=up metu terus.. Golek pluguns WP sing nggo mateni pop-up.

  • admin

    Iyo e, padahal wingi sedino wis gak ono, saiki kumat meneh….

  • http://akhrikas.wordpress.com akhrikas

    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

  • admin

    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…

  • pinkman

    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

    • admin

      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… :)

      • http://www.muhammadhafid.com muhammad hafid

        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.

        • gieart

          oke.. maksih telah berkunjung ke sini.. :)

  • ridwanisme

    mas itu harus pake xamp ya…kalo sama apache bisa ga ???
    saya pake apache tapi error trs di file Mpegawai line 22..knapa ya?

    • admin

      pake semua pake server (wamp,xampp,vertrigo, dll) bisa kok.. error messagenya sperti apa?

  • abdul rohim

    makasih mas tutorialnya,,,,,, kerennn,,, smoga ilmunya tambah terus…

    • admin

      Iya mas abdul… sama2.. mksih ats doanya…:)

  • http://melengo.wordpress.com ozan

    Gimana kalok multipel delet mengunakan cekbox gan.

    • admin

      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 :

      <input type="checkbox" name="records[]" value=/>
      

      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…:-)

  • http://error marata

    mas saya masih baru belajar nnih,ada yg error bunyinya seperti ini :P 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

    • admin

      Mungkin ada kurung kurawal, titik koma, kurung, yng kurang mas… coba di cek lagi..:D

  • oyib

    mas numpang tanya, bisa gak ngajar private tntng CI?

    • admin

      Kita pertimbangkan waktunya dulu.. PM aja..:D

  • oyocks

    gan tolong bantuannya gimana nampilan edit, update delete pada browser, masih pendatang baru gan

    • admin

      Kode program ini udah bisa insert, update, delete kok gan..:D

  • http://Website aone

    gimana kalo databasenya sudah ada relasi gan?

    • admin

      contoh kasusny seprti apa gan??… n permslahany ada dmana??..:-)

  • http://Website Andre

    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

  • admin

    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’). :-)

  • Wans

    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…

    • admin

      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

  • Wans

    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

    • admin

      Coba souce code mas ny di krim ke email saya. Nanti saya cek. :)

  • Wans

    sudah saya kirimkan,, silakan di cek

    • Herman

      saya juga punya permasalahan yang sama, mas. mohon pencerahannya

      • admin

        Sya usahakan utk upgrade kode program ini ke CI 2.0, krena kode ini masih pake versi 1.7 :)

  • fatchur

    Fatal error: Call to undefined method CI_Controller::ci_controller() in C:\Program Files\xampp\htdocs\CodeIgniter\application\controllers\pegawai.php on line 4

  • http://blogpunyaneni.blogspot.com neni

    ko saya cobain error yaahh??.. jadi waktu buka form edit, d textfieldnya malah ada “” bukan isi nya.. itu gara gara apa yaa??.. mohon bantuannya :)

  • http://shidiksaragih.wordpress.com shidik saragih

    suwun mas :D
    akhirnya bisa juga :)

    • gieart

      Semangatt! :)

      • http://www.facebook.com/profile.php?id=100003405472568 Kumis

        terima kasih, aketril yang sangat membantu :) btw saya juga punya pertanyaan yang sama dengan baobaz di atas.. (sepertinya group dan role itu redundan ya?)

Plugin from the creators of Brindes :: More at Plulz Wordpress Plugins