Melakukan Update Data dari Database dengan Codeigniter

Tutorial sebelumnya telah dijelaskan cara untuk membuat fungsi insert dan delete data yang ada di dalam database. Selain dua fungsi di atas, masih ada satu fungsi lagi yang kurang, yaitu fungsi update database dengan Codeigniter.

Fungsi update ini sangat penting di dalam sebuah website, karena tidak mungkin kita menghapus data yang lama dan melakukan insert terhadap data yang baru hanya karena kesalahan inputan. Oleh karenanya, dibutuhkan fungsi update database yang dapat mengedit data sehingga tidak perlu untuk menghapus data yang telah disimpan sebelumnya.

Nb: Jika ingin melihat seluruh tutorial Codeigniter anda dapat mengunjungi tutorial membuat web dengan Codeigniter.

Update Database dengan Codeigniter

Seperti biasa saya akan menulisakan urutan source cara membuat fungsi update database dengan codeigniter ini secara berurutan dari controller, model, dan views.

Jika anda telah membaca tutorial sebelumnya, yaitu membuat fungsi delete record database, sebenarnya konsep yang ada tidak berbeda jauh.

Controller

Fungsi di dalam controller ini cukup banyak, karena kita harus menampilkan data yang ada di dalam database, kemudian memberikan fungsi untuk update, dan terakhir membuat fungsi untuk  menyimpan update tersebut.

user_controller.php

<?php
class User_controller extends CI_Controller{

    function __Construct()
    {
        parent ::__construct();
    }

    function user()
    {
        $this->load->model('user_model');
        $data['judul'] = 'Daftar User';
        $data['daftar_user'] = $this->user_model->get_user_all();
        $this->load->view('daftar_user', $data);
    }

    function edit_user($id_user)
    {
        $data['judul']='Update Data User';
        $this->load->model('user_model');
        $data['edit']=$this->user_model->edit_user($id_user);
        $this->load->view('edit_user', $data);
    }

    function simpan_edit_user()
    {
        $id_user = $this->input->post('id_user');
        $nama_lengkap = $this->input->post('nama_lengkap');
        $username = $this->input->post('username');
        $password = $this->input->post('password');
        $email = $this->input->post('email');
        $alamat = $this->input->post('alamat');

        $data['judul'] = 'Update Data Codeigniter';
        $this->load->model('user_model');
        $data['edit'] = $this->user_model->simpan_edit_user($id_user, $nama_lengkap, $username, $password, $email, $alamat);
        $data['notifikasi'] = 'Data telah berhasil disimpan';
        $this->load->view('notifikasi', $data);
    }
}

Model

Sama seperti controller, fungsi di dalam model juga cukup banyak, tetapi saya rasa tidak perlu untuk menjelaskannya satu persatu. Anda dapat memahaminya dengan membaca nama fungsinya.

user_model.php

<?php
class User_model extends CI_Model{

    function get_user_all()
    {
        $query=$this->db->query("SELECT * FROM user ORDER BY id_user DESC");
        return $query->result();
    }

    function edit_user($id_user)
    {
        $q="SELECT * FROM  user WHERE id_user='$id_user'";
        $query=$this->db->query($q);
        return $query->row();
    }

    function simpan_edit_user($id_user, $nama_lengkap, $username, $password, $email, $alamat)
    {
        $data = array(
            'id_user'        => $id_user,
            'nama_lengkap'   => $nama_lengkap,
            'username'       => $username,
            'password'       => $password,
            'email'          => $email,     
            'alamat'         => $alamat
        );
        $this->db->where('id_user', $id_user);
        $this->db->update('user', $data);    
    }
}

Views

Di dalam views ini terdapat dua halaman view, yang pertama adalah untuk menampilkan halaman awal, kemudian yang kedua digunakan untuk melakukan edit data, dan terakhir adalah notifikasi bahwa data berhasil disimpan.

Views yang pertama adalah daftar_user.php yang digunakan untuk menampilkan seluruh data yang ada di dalam database.

daftar_user.php

<html>
<head>
	<title><?php echo $judul; ?></title>
</head>
<body>
	<h1>Daftar User</h1>
	<table border="1">
		<thead>
		<tr>
			<th>Nama Lengkap</th>
			<th>Username</th>
			<th>Email</th>
			<th>Alamat</th>
			<th>Action</th>
		</tr>
	</thead>
	<tbody>
            <?php
            foreach($daftar_user as $user){
			?>

        <tr>
			<td><?php echo $user->nama_lengkap; ?></td>
			<td><?php echo $user->username; ?></td>
			<td><?php echo $user->email; ?></td>
			<td><?php echo $user->alamat; ?></td>
			<td><?php echo '<a href="'.base_url().'index.php/user_controller/edit_user/'.$user->id_user.'">Edit</a>'?></td>
		</tr>
           <?php } ?>
	</tbody>
	<tfoot>
		<tr>
			<th>Nama Lengkap</th>
			<th>Username</th>
			<th>Email</th>
			<th>Alamat</th>
			<th>Action</th>
		</tr>
	</tfoot>
	</table>
</body>
</html>

Views yang kedua adalah edit_user.php yang digunakan untuk mengedit inputan record yang telah tersimpan di dalam database.

edit_user.php

<html>
    <head>
        <title><?php echo $judul; ?></title>
    </head>
    <body>                        
    <h1>Update Data User</h1>

    <?php 
        $att = array('id' => 'biodata-form');
        echo form_open('user_controller/simpan_edit_user', $att);
        echo form_hidden('id_user',$edit->id_user);
    ?>
        <table> 
            <tr>
                <td>Nama Lengkap</td>
                <td><input type="text" name="nama_lengkap" value="<?php echo $edit->nama_lengkap; ?>"/></td>
            </tr>
            <tr>
                <td>Username</td>
                <td><input type="text" name="username" value="<?php echo $edit->username; ?>"/></td>
            </tr>
            <tr>
                <td>Password</td>
                <td><input type="password" name="password" value="<?php echo $edit->password; ?>"/></td>
            </tr>
            </tr>
                <td>Email</td>
                <td><input type="text" name="email" value="<?php echo $edit->email; ?>"/></td>
            </tr>
            <tr>
                <td>Alamat</td>
                <td><textarea name="alamat" style="height: 80px;"><?php echo $edit->alamat; ?></textarea></td>
            <tr>
                <td></td>
                <td><input type="submit" value="Simpan"/></td>
            </tr>
        </table>
    </form>
    </body>
</html>

Views terakhir adalah untuk notifikasi.php untuk memberikan informasi bahwa data telah berhasil diupdate. Sebenarnya notifikasi tersebut dapat digabungkan dengan daftar_user.php, tetapi sengaja saya pisahkan agar tidak membingungkan bagi anda yang baru pertama kali belajar php maupun Codeigniter.

notifikasi.php

<html>
<head>
	<title><?php echo $judul; ?></title>
</head>
<body>
	<p><?php echo $notifikasi; ?></p>
</body>
</html>

Anda dapat mencoba source code yang telah selesai dibuat dengan cara mengetikkan URL pada browser: http://localhost/codeigniter/index.php/user_controller/user

update database dengan codeigniter
Daftar User
update database dengan codeigniter
Update Data

Kemudian cobalah untuk melakukan edit data dan klik Simpan.

Jika source anda ketikkan dengan benar, maka data di dalam database akan berhasil di update.

Source code update_database_codeigniter.

Tutorial selanjutnya akan membahas mengenai validasi form Codeigniter.

Semoga bermanfaat.

19 Comments


  1. sepertinya ada yang kurang di bagian user_model untuk update password tidak ditambahkan md5

    Reply

  2. Saya ga ngerti di bagian edit_user.php
    ‘biodata_buku’); ?>

    itu, ambil id id’=>’biodata_buku’ darimana ya ?

    lalu kenapa saya muncul notif:

    Fatal error: Call to undefined function form_open()

    Reply

    1. Kalo Fatal error: Call to undefined function form_open() itu mungkin belum disetting helper di autoload.php nya, coba diganti jadi $autoload['helper'] = array('url','form');

      Atribut ‘id’ => ‘biodata-form’ mungkin untuk memberikan atribut id pada table, jadi table tsb ber-id ‘biodata-form’
      CMIIW

      oya, kalo update password dikasih md5, terus waktu save edit password kita gak kita rubah misalnya, jadinya password kita berubah jadi md5(hash password) karena yang di load pada form edit adalah hash passwordnya. itu gimana ya biar kalo gak ada perubahan di field password. Thx.

      Reply

      1. dari kemarin saya bingung.
        kepada Audya, terima kasih sarannya yang ini. sangat membantu.

        Reply

  3. waww lengkap dan jelas sekali,,saya langsung save boorkmark neh..makasih gan yah !!!

    Reply

  4. bisa mas bwahahaa… eror berkali2 tapi ada beberapa yang ga cocok soalny konfigurasinya beda mungkin ..

    Reply

  5. Mas mohon pencerahan nya dong,
    Saya sudah ikuti langkah2 diatas dari awal, hasil ok, tetapi ketika ingin menjadikan daftar user sebagai index kok hasilnya kosong. page daftar user tampil sbg home tetapi data user nya ngga ada, setingan mana yg kurang ya mas?

    Reply

  6. saya buat page baru main.php
    router.php sudah saya rubah menjadi $route[‘default_controller’] = “main”;

    class Main extends CI_Controller {
    function __construct()
    {
    parent::__construct();
    $this->load->model(‘user_model’);
    /*$this->load->helper(array(‘html’,’global’));*/
    }

    function index()
    {
    /*$this->load->model(‘user_model’);
    $data[‘judul’] = ‘List of user’;*/
    $data[‘daftar_user’] = $this->user_model->get_user_all();
    $this->load->view(‘daftar_user’, $data);
    }
    }

    Reply

  7. di database nya gak berubah.
    Notifikasinya ada eror dan data berhasil disimpan. maksudnya gimana ya?

    A PHP Error was encountered

    Severity: Notice

    Message: Array to string conversion

    Filename: database/DB_active_rec.php

    Line Number: 427

    Data telah berhasil disimpan

    Reply

  8. min

    Fatal error: Call to undefined function form_open() in C:\xampp\htdocs\Codeigniter\application\views\edit_user.php on line 10
    ane udh samain ko malah ga bisa??

    Reply

Leave a Reply

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