Tutorial CodeIgniter Dasar Part II – CRUD chapter 2

Posted on 12. May, 2010 by Cheyuz in Code Igniter, PHP, Tutorial, _other

OK, malam ini kita lanjutkan tutorial kemarin… maaf kalo agak telat, soalnya koneksi Cheyuz lagi bermasalah dan bentrok ngerjain tugas kuliah juga.. hehe…

Pada tutorial kemarin, kita udah bisa menambahkan data ke dalam database… (Create) dan menampilkannya (semua data)…. Sekarang, kita akan membuat aksi lainnya, yaitu update/ubah dan delete/hapus pada setiap data di dalam sebuah table…

Kita lanjutkan tutorial kemarin (Tutorial CodeIgniter Dasar Part II – CRUD Chapter 1) yang waktu itu kita udah membuat table mahasiswa dan membuat fungsi untuk menambahkan datanya.. sekarang mari kita buat fungsi/aksi lainnya, yaitu update dan delete…

Kita review hasil kerjaan dari tutorial kemarin…

<h1>Data Mahasiswa</h1>
<table>
    <thead>
        <tr>
            <th>No</th>
            <th>NIM</th>
            <th>Nama</th>
            <th>Alamat</th>
            <th>Aksi</th>
        </tr>
    </thead>
    <tbody>
        <?php $i = 1 ?>
        <?php foreach($mahasiswa as $m): ?>
        <tr>
            <td><?php echo $i++ ?></td>
            <td><?php echo $m->nim ?></td>
            <td><?php echo $m->nama ?></td>
            <td><?php echo $m->alamat ?></td>
            <td></td>
        </tr>
        <?php endforeach ?>
    </tbody>
</table>

Sebelumnya kita tambahkan 2 buah anchor (link) untuk membuat hyperlink menuju ke masing2 fungsi tersebut,.. yaitu anchor untuk edit dan delete.. (catatan: edit = update).
Buatlah dua buah anchor dengan bentuk kode seperti ini di kolom paling kanan tabel:

<?php echo anchor('data_mahasiswa/edit/'.$m->id, 'Ubah') . ' | ' . anchor('data_mahasiswa/delete/'.$m->id, 'Hapus'); ?>

jadi bentuknya seperti ini:

<h1>Data Mahasiswa</h1>
<table>
    <thead>
        <tr>
            <th>No</th>
            <th>NIM</th>
            <th>Nama</th>
            <th>Alamat</th>
            <th>Aksi</th>
        </tr>
    </thead>
    <tbody>
        <?php $i = 1 ?>
        <?php foreach($mahasiswa as $m): ?>
        <tr>
            <td><?php echo $i++ ?></td>
            <td><?php echo $m->nim ?></td>
            <td><?php echo $m->nama ?></td>
            <td><?php echo $m->alamat ?></td>
            <td><?php echo anchor('data_mahasiswa/edit/'.$m->id, 'Ubah') . ' | ' . anchor('data_mahasiswa/delete/'.$m->id, 'Hapus'); ?></td>
        </tr>
        <?php endforeach ?>
    </tbody>
</table>

previewnya:

Data Mahasiswa

No NIM Nama Alamat Aksi
1 0700335 Cecep Yusuf Cipanas, Cianjur edit | delete
2 0800113 Fitri Yuniar Jakarta edit | delete

Tambah data

1. Menghapus Data

Kemudian setelah itu, kita buat sebuah function di dalam model mahasiswa_model.php di folder /system/application/models:

<?php
...
    function delete($id){
        $this->db->delete('mahasiswa', array('id'=>$id));
    }
...
?>

Kemudian, di controller data_mahasiswa.php di /system/application/controllers tambahkan function berikut:

...
    function delete($id){
        $this->mahasiswa_model->delete($id);
        redirect('data_mahasiswa');
    }
...

fungsi di atas memanggil fungsi dari objek Mahasiswa_model yaitu delete, yang akan menghapus data dari table mahasiswa yang id nya adalah parameter dari function tersebut ($id)… Kemudian setelah itu baru diredirect/dialihkan ke tampilan index dari controller data_mahasiswa.

2. Mengubah Data

Nah, untuk mengubah data.. kita harus tahu fungsi untuk mengubah database dari Active Record yang disediakan oleh CI.. yaitu $this->db->update($nama_table, $data)

Sekarang, kita tambahkan function update() dan select($id) untuk menyeleksi SATU data yang akan dipilih berdasarkan id-nya… dibuat di model mahasiswa.php di /system/application/models,,,

...
    function update($id){
        $this->db->where('id',$id)->update('mahasiswa', $_POST);
    }
    function select($id){
        return $this->db->get_where('mahasiswa', array('id'=>$id))->row();
    }
...

Di situ ada fungsi update(), yang equivalen dengan query update from mahasiswa where id=$id set $_POST. Dan fungsi select yang nantinya akan kita gunakan ketika nilai dari data akan dimasukkan ke dalam sebuah form (untuk diedit) sehingga kita menggunakan row() yang berfungsi meretrieve data menjadi objek, tetapi hanya SATU BARIS DATA... (segitunya sampe dipertebel hehe :P )

Setelah kita membuat modelnya… kemudian kita tambahkan function edit() di Controller data_mahasiswa.php di /system/application/controller/:

...
    function edit($id){
        $data['m'] = $this->mahasiswa_model->select($id);
        $this->load->view('edit_view',$data);
    }
...

Di situ kita buat sebuah fungsi edit di controller data_mahasiswa.php dengan parameter $id.. karena kita akan mengubah data pada setiap data yang ada dengan mengambil id-nya… dan dipanggillah fungsi update() dari model mahasiswa… Tetapi sebelumnya kita harus ngambil sebuah data mahasiswa tertentu berdasarkan $id yang ada untuk dimasukkan ke dalam form,, sehingga nantinya bisa diubah… makanya kita membuat fungsi select()

Ini adalah view yang harus ada di /system/application/views dengan nama file edit_view.php (yang udah kita masukkan ke dalam fungsi $this->load->view() di controller.

Ini adalah isi dari view-nya:

<h1>Ubah data</h1>
<form action="" method="post">
    <table>
        <tr>
            <th>NIM</th>
            <td><input name="nim" value="<?php echo $m->nim ?>" /></td>
        </tr>
        <tr>
            <th>Nama</th>
            <td><input name="nama" value="<?php echo $m->nama ?>" /></td>
        </tr>
        <tr>
            <th>Alamat</th>
            <td><textarea name="alamat"><?php echo $m->alamat ?></textarea></td>
        </tr>
        <tr>
            <th></th>
            <td><input type="submit" value="ubah" /></td>
        </tr>
    </table>
</form>

Jadi, ketika view tersebut diload, maka form akan langsung terisi dengan data yang kita panggil dengan $id yang ada di URL… (yang merupakan parameter)

Kemudian, di controller kita tambahkan code berikut:

...
    function edit($id) {
        if($_POST==NULL) {
            $data['m'] = $this->mahasiswa_model->select($id);
            $this->load->view('edit_view',$data);
        }else {
            $this->mahasiswa_model->update($id);
            redirect('data_mahasiswa');
        }
    }
...

Kita lihat, ada fungsi if else… buat apa tuh??
itu buat ngecek apakah data udah dikirim atau belum (NULL)? Nah, klo udah dikirim berarti bakal diupdate… kalo belum maka program akan mengambil data (select) dan dimasukkan ke dalam form…

Kemudian terdapat fungsi redirect (sama seperti add), ketika data sudah diubah, maka halaman langsung dialihkan ke dalam action yang ada di prameter redirect tersebut….

Nah, sejauh ini kita sudah membuat aplikasi CRUD lengkap… Create, Read, Update, dan Delete….

Silakan cek program yang kita bikin sejauh ini dengan mengetikkan alamat url : http://localhost/webku/data_mahasiswa

Mudah-mudahan ini bisa ngebantu kita dalam suatu kasus tertentu di mana misalnya tugas maupun kerjaan meminta kita dibuatkan programnya dengan menggunakan CI,,,

Nanti kita lanjut tutorialnya di Part 3, tentang LAYOUTING dan TEMPLATING di Code Igniter….
Coming Soon ya…

Kalo ada pertanyaan, silakan komentar di bawah ini, insya Allah dibalas :)

Tags: , ,

15 Comments

top bin tob

14. May, 2010

cakepppppsssssss surakeppppsss tutorial na

Cheyuz

14. May, 2010

hehe makasih gan :)

ermalia

17. May, 2010

makasih lagi tutorialnya….
mudah dimengerti….
jadi bisa cepet belajarnya…

Cheyuz

18. May, 2010

sama2 ermalia… :)

mamed

25. May, 2010

Kalo mau buat web dinamis yang jot gimana?
:-)

Cheyuz

25. May, 2010

maksudnya gimana?

agaluh

27. Jun, 2010

salam kenal,
keren tutor CInya nih, ada pertanyaan sedikit ya mas cheyuz di edit_view.php
di baris <input name="nim" value="id ?>” />
“id” seharusnya “nim” karena yg akan diretrive nilai dari “nim” kan??

Cheyuz

03. Jul, 2010

@agaluh: oh iya mas bener, udah saya perbaiki, makasi buat ralatnya :)

septian Maulana

16. Jul, 2010

Nice Gan

himawari

30. Jul, 2010

numpang tanya dunk, ,
kalo anchornya di jadiin bentuk tombol gimana ya caranya?
newbie nih…
thx b4
^.^

rahayu_nikmah

02. Aug, 2010

Luar binasa gan..

Cheyuz

05. Aug, 2010

@himawari: bikin style (class) di CSS yang menyerupai bentuk tombol.. misalnya class “button”… jadi nanti di anchor ditambahkan atribut ‘class’… kode ga bisa ditulis di sini..

Cheyuz

05. Aug, 2010

@rahayu_hikmah: thankz :)

virda

05. Aug, 2010

hmm…. blh minta ymnya tak ??
ada yg mo dtnyain niiyh

Cheyuz

18. Aug, 2010

@shizuka: jangankan YM, no HP pun dikasihh… hehe :P

Leave a reply

Spam Protection by WP-SpamFree Plugin