Insert – Edit – Delete dengan Codeigniter 2.0

Inert Edit Delete dengan Codeigniter 2.0
Melanjutkan artikel sebelumnya Tampil data memakai Codeigniter versi 2.0.2 sekarang kita tambahkan pada aplikasi kita fungsi untuk menyimpan, edit dan delete data.

Dalam aplikasi pendaftaran user ini, saya menyimpan password dengan meng-enkripsi md5 terlebih dahulu untuk field password. Kemudian pada waktu edit,password tidak akan tampil. Jika field password tidak diedit, maka password tidak di ganti, tetapi jika filed input password diubah, maka password akan diubah, dengan fungsi enkripsi md5 tentunya.

Kalau dilihat dari sisi coding, ga terlalu jauh dengan script terdahulu, tetapi saya menambahkan fungsi validasi inputannya. Sehingga pada controller user, kita tambahkan fungsi edit untuk menampilkan data yang akan diedit, fungsi submit yang berfungsi menangani submit dari form input dan edit, dan fungsi delete untuk menghapus data. Scriptnya adalah sebagai berikut :

<?php
class User extends CI_Controller{
	
	/*---script sebelumnya---*/
	
	function submit(){
		if ($this->input->post('submit')){
						
			if ($this->input->post('id')){
				$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]');
				$this->form_validation->set_rules('password', 'Password', 'matches[passconf]');
				$this->form_validation->set_rules('fullname', 'Fullname', 'required|min_length[5]|max_length[25]');
				
				if ($this->form_validation->run() == FALSE){
					$data['id'] = $this->input->post('id');
					$data['username'] = set_value('username');
					$data['fullname'] = set_value('fullname');
					$this->load->view('view_user/edit',$data);
				}else{
					$this->Model_user->update();
        	redirect('user/index');
        }	
			}else{
				$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]');
				$this->form_validation->set_rules('password', 'Password', 'required|matches[passconf]');
				$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
				$this->form_validation->set_rules('fullname', 'Fullname', 'required|min_length[5]|max_length[25]');
			
        if ($this->form_validation->run() == FALSE){
						$data['query'] = $this->Model_user->getAll();
						$this->load->view('view_user/input',$data);
				}else{
	          $this->Model_user->save();
  	        redirect('user/index');
  	    }
      }
		}
	}
	
	function edit(){ 
  	$id=$this->uri->segment(3);
  	$data['result']=$this->Model_user->getUser($id);
    
    if (empty($id) or count($data['result'])==0 ){
    	redirect('user/index');
    }else{    
	    $result=$this->Model_user->getUser($id);
	    $data['id'] = $result['id'];
	    $data['username'] = $result['username'];
			$data['fullname'] = $result['fullname'];
	    $this->load->view('view_user/edit', $data); 
    }    
  }
  
  function delete($id){
  	$this->db->delete('user', array('id' => $id));
		redirect('user/index');
  } 
}

agak panjang ya 😀 mungkin jika Anda menemukan yang lebih pendek, bisa kasih tau saya 😀

Untuk modelnya ditambahkan fungsi seperti dibawah ini :

<?php
class Model_user extends CI_Model{
	
/*---fungsi sebelumnya ---*/	
	
	function getUser($id){
		$this->db->where('id', $id); 
    $query = $this->db->get('user'); 
    
    return $query->row_array();
	}
	
	function save(){
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $fullname = $this->input->post('fullname');
    $data = array(
      'username'=>$username,
      'password'=>md5($password),
      'fullname'=>$fullname
    );
    $this->db->insert('user',$data);
  }
  
  function update(){
    $id   = $this->input->post('id');
		$username = $this->input->post('username');
		$password = $this->input->post('password');
    $fullname = $this->input->post('fullname');
    if ($password==''){
    	$data = array(
      'username'=>$username,
      'fullname'=>$fullname
    );
    }else{
    	$data = array(
      'username'=>$username,
      'password'=>md5($password),
      'fullname'=>$fullname
    );
    }
    
    $this->db->where('id',$id);
    $this->db->update('user',$data);    
  }
}

Untuk view, saya membuat file edit.php pada folder view_user yang scriptnya sebagai berikut :

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Data User</title>
  </head>
  <body>
    <div id="form_input" title="Edit Data">
      <table>
        <?php echo validation_errors(); ?>
        <?php echo form_open('user/submit'); ?>
        <tr >
            <td> <?php echo form_label('User Name : '); ?></td><?php echo form_hidden('id',$id); ?>
            <td> <?php echo form_input('username',$username,'id="username"'); ?></td>
        </tr>
        <tr>
            <td> <?php echo form_label('Password : ');?> </td>
            <td> <?php echo form_password('password','','id="password"'); ?></td>
        </tr>
         <tr>
            <td> <?php echo form_label('Repeat Password : ');?> </td>
            <td> <?php echo form_password('passconf','','id="passconf"'); ?></td>
        </tr>
        <tr>
            <td> <?php echo form_label('Full Name : ');?> </td>
            <td> <?php echo form_input('fullname', $fullname,'id="fullname"'); ?></td>
        </tr> 
        <tr>
        		<td><?php echo form_submit('submit','Save')?>
        </tr>
      </table>
      </div>
  </body>
</html>
  • al k

    Terima kasih atas tutorailnya CI untuk versi 2.0 sangat berguna bagi saya.

    • sama-sama, senang bisa membantu .. 🙂

  • pertamaxx
    salam kenal bang, saya juga newbie di codeigniter programmer, ni lagi ngobrak-ngabrik situs anda, cukup mudah dipahami, dan bisa saya kembangkan,….

  • ..

  • david

    Mas Dudu salam kenal.. boleh ngga dishare file attachmentnya. TQ mas

    • tinggal ikuti artikelnya, sudah ada disitu.. 🙂 copas juga bisa

  • Nice share gan 🙂
    akhirnya nemu juga artikel yang bergna tentang CI 2.0 😀
    agak beda struktur codingan dibandingkan CI 1.7.x ..
    ane baru mulai belajar CI, pas CI release CI 2.0 jadi jarang nemu artikel yang bahas CI 2.0

  • udud

    gan ko ane keluar ini yah
    An Error Was Encountered
    Unable to load the requested file: view_user.php

    • sudah terjawab di errornya 🙂 silahkan buat view_user.php

  • mht

    tutorialnyaaaa mudah di pelajari hehhahh

  • HUSEIN

    $id=$this->uri->segment(3);

    code ini maksudnya apa ya ?

  • Ikut belajar mas..
    mu nanya ni..
    pas ngeklik delete, datanya emang ilang.. tapi ga ke apus..
    jadi pas di refresh balik lagi datanya..
    kenapa ya mass??
    🙂

    • kemungkinan salah di query nya

  • agus

    gan, koq gak ada tempat downloadnya?? maap ane masih newbie

    • ada di github, cari aja..

  • pembaca

    mas dudu apakah script ini perlu pada waktu submit dan form tidak ada isi.?

    $data[‘query’] = $this->Model_user->getAll();

    menurut saya kok tidak perlu, maaf ini cuma pendapat orang baru belajar.

    • Kalo kosong ya memang tidak digunakan, script tersebut diperlukan karena setelah submit saya menampilkan isi datanya sekaligus

  • arif

    saya memakai jqgrid mas saya punya controller seperti ini..

    class user extends CI_Controller {
    function __construct()
    {
    parent:: __construct();
    $this->load->model(‘user_model’, ‘user’);

    }

    function edit(){
    $id=$this->uri->segment(3);
    $data[‘result’]=$this->adm_user->getUser($id);

    if (empty($id) or count($data[‘result’])==0 ){
    redirect(‘admin/article/index’);
    }else{
    $result=$this->adm_user->getUser($id);
    $this->load->view(‘admin/article/edit_form’, $result);
    }
    }
    }

    dan model seperti ini

    class user_model extends CI_Model {
    function __construct()
    {
    parent:: __construct();
    }

    function getUser($id){
    $this->db->where(‘id’, $id);
    $query = $this->db->get(‘tp_user’);
    return $query->row_array();
    }
    }

    jika kita ingin memanggil fungi getUser biasanya kan kita manggilnya

    $result=$this->adm_user_model->getUser($id);

    tapi saya pakai itu malah error, tetapi saya pakai

    $result=$this->adm_user->getUser($id);

    malah tidak error, apa masalahnya mas.?

    • pemanggilannya harusnya seperti ini

       $this->nama_model->nama_function($id).

      kalo dari yang anda bilang diganti nama modelnya, berarti mungkin penamaan modelnya yang salah

  • capone

    mass dudu .. kok pas di klik save malah muncul
    Object not found!
    kenapa ya ?

    • nama function nya belum ada / salah tulis

  • cristiano

    good articel

  • newbie

    bagus bang artikel nya,, haha thx

  • dian

    mas kok edit ku nggak jalan

    • cek lagi sintaknya

  • astri

    mas dudu, maksudnya kata ‘user’ di sytax yang ini apa ya?
    $this->db->insert(‘user’,$data);

    aku baru belajar soalnya 🙂

    • user nama tabelnya

  • astri

    mas, eror ku sama kayak capone ..

    object not found!

    padahal function submit di controllernya udah ada .. function submit yg salah dimana ya?

    • di cek url nya

  • astri

    maksudnya gimana ya mas?
    soalnya url-nya udah sama kok ..
    salah dimana lagi ya urlnya ..

    • not found kan bearti function nya ga ada/ salah. siapa tau URL nya ngarah ke function lain

  • Gan suwun tutorialnya…

    sangat membantu buat newbie seperti ane…hehehehe

  • Kuiia_bejaiia

    A PHP Error was encountered
    Severity: Notice
    Message: Undefined property: User::$form_validation
    Filename: controllers/user.php
    Line Number: 30

    mas ko saya muncul ERROR seperti di atas ya??:|padahal lagi belajar tapi ko muncul error seperti itu 🙁

    • dwijonarko

      tambahkan

      $this-&gt;load-&gt;library('form_validation');

      pada constructor

  • Alamtopani

    Krennnnn

    • haha

      hahahaha

  • haha

    gan,,

    udah nyoba bkin sama kyag gtu kok gk bisa insert yah
    #keterlaluan..

    • dwijonarko

      salah query mungkin?

  • rifqi fardi

    permisi mas mau tanya, (semoga blog nya masih sering dikunjungi hehe)
    saya dapat masalah di controller user method submit
    di baris >> if ($this->input->post(‘id’)){}else{}

    kenapa di kondisi itu saya selalu masuk di else nya ya? kodingan nya menurut saya sudah sama itu kan ngambil id dari method edit sebelumnya di $data[‘id’] = $result[‘id’]; tp kenapa selalu masuk ke kondisi else nya ya -_-” tolongin saya dong. trus kalo mau tau nilai value id di taruh di console nya gimana ya? nulis console di php method nya apa ya? karena saya sudah pake echo””; gak bisa. terima kasih

    • hehehe terimakasih kunjungannya. Masih sering dikunjungi ko meskipun artikelnya sedikit berkurang 🙁

      if ($this->input->post(‘id’)) terse but gambol dari form edit mas, yaitu membuat input hidden dengan nama id. Dan id tersebut merupakan id yang akan di edit. Jadi di form edit ada kode seperti ini mas

      < ?php echo form_hidden('id',$id); ?>

      semoga membantu

      • rifqi fardi

        ahh [solved] saya tidak membaca seluruh script nya hehe iya mas, saya kurang form hidden di view nya. kebetulan saya bikin sendiri view nya. terima kasih banyak mas. meskipun sudah jarang ada waktu posting artikel tp tetep fast response itu sangat membantu yang noobs seperti saya mas hehe. kalo boleh add akun skype atau media chat lain mungkin?

        • Saya SUdah ga pake codeigniter lagi sekarang, mulai move on ke Laravel. Dan terkendala kesibukan ini itu :D. Silakan mention/follow di twitter @dwijonarko 🙂

  • Andhika

    cara nampilin data asli nya gimana pak ? soalnya ini yang nampil malah enkripsi nya

    • kalo sudah di eknripsi ga bisa tampil data aslinya, karena enkripsi MD5 sifatnya searah