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>