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]
<?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’);
}
}
[/php]

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

Untuk modelnya ditambahkan fungsi seperti dibawah ini :
[php]
<?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);
}
}
[/php]

Untuk view, saya membuat file edit.php pada folder view_user yang scriptnya sebagai berikut :
[php]
<!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>
[/php]

46 thoughts on “Insert – Edit – Delete dengan Codeigniter 2.0

  1. Raja ML

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

    Reply
  2. Zuhdi Robbani

    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

    Reply
  3. fizah

    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??
    🙂

    Reply
  4. 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.

    Reply
    1. dudu Post author

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

      Reply
  5. 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.?

    Reply
    1. dudu Post author

      pemanggilannya harusnya seperti ini [php] $this->nama_model->nama_function($id).[/php] kalo dari yang anda bilang diganti nama modelnya, berarti mungkin penamaan modelnya yang salah

      Reply
  6. astri

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

    aku baru belajar soalnya 🙂

    Reply
  7. astri

    mas, eror ku sama kayak capone ..

    object not found!

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

    Reply
  8. 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 🙁

    Reply
  9. 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

    Reply
    1. dudu Post author

      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

      semoga membantu

      Reply
      1. 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?

        Reply
        1. dudu Post author

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

          Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.