Tutorial CodeIgniter Dasar Part II – CRUD chapter 1

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

Di tutorial yang kedua ini, kita akan bahas bagaimana cara membuat CRUD dengan menggunakan CI…. kenapa kita harus belajar membuat aplikasi CRUD? soalnya ini merupakan dasar kita untuk ke depannya.. untuk membuat aplikasi yang kompleks, sebenarnya kita hanya mengelola dan mengolah database, meliputi membuat database (Create), membaca (Read), mengubah (Update), menghapus (Delete), ato disingkat menjadi CRUD.

Adapun di sini kita akan belajar membuat model untuk data yang akan diolah, view untuk membuat interface, dan controller untuk mengolah model dan ngeload view..

OK, pertama-tama, kita buat sebuah database bernama tutorial_ci, dan buatlah sebuah table bernama mahasiswa (kenapa selalu ‘mahasiswa’? ga punya contoh lain :P ), isinya ada id, nim, nama, alamat.. OK segitu saja.. kamu tinggal copy SQL berikut:

CREATE TABLE IF NOT EXISTS `mahasiswa` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `nim` varchar(20) NOT NULL,
  `nama` varchar(100) NOT NULL,
  `alamat` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Jadi kita membuat tabel kosong bernama ‘mahasiswa’ dengan field seperti di atas…

Diharapkan kamu yang mengikuti tutorial ini udah pernah mengikuti tutorial sebelumnya.. kenapa? karena konfigurasinya kita menggunakan konfigurasi di tutorial dasar part I, bisa klik di sini
Seperti pada tutorial dasar part I, webroot kita ini diasumsikan bernama “webku”, dan konfigurasinya diasumsikan sama, oleh karena itu silahkan baca tutorial dasar part I terlebih dahulu.

1. Menampilkan semua data

OK, langkah pertama adalah membuat sebuah model….

Buatlah sebuah file mahasiswa_model.php di /system/application/models dengan isi adalah barisan kode seperti berikut:

<?php
/**
 * @author Cecep Yusuf
 */
 
class Mahasiswa_model extends Model {
 
}
?>

Sejauh ini, kita sudah membuat sebuah model untuk mahasiswa, yang nantinya mempunyai banyak fungsi untuk mengolah table ‘mahasiswa’…

Di bawah ini, kita akan menambahkan function selectAll(), yang mana berfungsi untuk menyeleksi semua field di table mahasiswa (select * from mahasiswa), jadi code tadi setelah ditambahkan menjadi seperti berikut:

<?php
/**
 * @author Cecep Yusuf
 */
 
class Mahasiswa_model extends Model {
    function selectAll(){
        return $this->db->get('mahasiswa')->result();
    }    
}
?>

Nah, sejauh ini kita sudah bikin function selectAll() yang berfungsi untuk memilih semua field dari table mahasiswa.

Setelah itu, model akan diolah oleh controller, jadi sekarang kita buat sebuah controller yang berfungsi untuk memanipulasi objek mahasiswa_model

OK, buatlah sebuah controller bernama data_mahasiswa.php di /system/application/controllers dengan isi file sebagai berikut:

<?php
/**
 * @author Cecep Yusuf
 */
 
class Data_mahasiswa extends Controller {
    function  __construct() {
        parent::Controller();
    }
}
?>

function __construct() adalah sebagai konstruktor… berbagai perintah yang ada di dalam fungsi ini akan selalu dipanggil di saat objek Data_mahasiswa dibuat… jadi berbagai fungsi untuk meload library, model, helper, dan sebagainya, kita tinggal masukkan di function ini supaya tidak diketik ulang di setiap fungsi….

Karena kita akan meload model mahasiswa_model setiap kali dibuat controller, maka kita load modelnya di bagian __construct() di dalam controller Data_mahasiswa. Jadi kode lengkapnya seperti berikut:

<?php
/**
 * @author Cecep Yusuf
 */
 
class Data_mahasiswa extends Controller {
    function  __construct() {
        parent::Controller();
        $this->load->model('mahasiswa_model');
    }
 
}
?>

Kemudian, kita buat function index() sebagai penampil semua data yang ada di table mahasiswa, jadi URLnya akan berbentuk http://localhost/webku/data_mahasiswa/index ATAU http://localhost/webku/data_mahasiswa (Index tidak perlu dituliskan)

<?php
/**
 * @author Cecep Yusuf
 */
class Data_mahasiswa extends Controller {
    function  __construct() {
        parent::Controller();
        $this->load->model('mahasiswa_model');
    }
    function index(){
        $data['mahasiswa'] = $this->mahasiswa_model->selectAll();
        $this->load->view('data_mahasiswa_view', $data);
    }
}
?>

Di dalam function index() di atas, kita lihat ada script seperti ini:
$data['mahasiswa'] = $this->mahasiswa_model->selectAll();
kode tersebut berarti data hasil keluaran dari function selectAll() di model mahasiswa_model berupa array dan disimpan di dalam array $data['mahasiswa'], yang nantinya data tersebut bisa diakses di view..

Kemudian kita lihat lagi, ada script berikut:
$this->load->view('data_mahasiswa_view');
function view() dalam objek ‘load’ adalah untuk meload view yang sudah kita buat di /system/application/views, dengan mengeset variable hasil ekstrak dari variable $data, sehingga nanti bisa diakses dari view..

OK, kita buat view-nya dengan nama file data_mahasiswa_view.php di /system/application/views dengan isi sebagai berikut 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></td>
        </tr>
        <?php endforeach ?>
    </tbody>
</table>

Sekarang, coba buka alamat di browser: http://localhost/webku/data_mahasiswa, keluar apa? table kan? dengan data KOSONG….

OK, sekarang kita lanjut ke sesi yg kedua.. yaitu MENAMBAHKAN DATA…

2. Menambahkan data

Kita akan membuat tampilan seperti berikut:

Data Mahasiswa

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

Tambah data

Silakan buat sebuah anchor() (a) di bawah table di dalam file data_mahasiswa_view.php..
Jangan lupa sebelumnya load dulu url_helper di controller dengan cara menambahkan code berikut:

<?php 
...
   $this->load->helper('url');
...
?>
anchor() adalah function helper yang udah tersedia di CI, untuk menggantikan tag ‘a’

Buatlah sebuah anchor sebagai link ke function add() di Controller (fungsi ini belum dibuat), caranya dengan menambahkan script berikut:

<?php echo anchor('data_mahasiswa/add', 'Tambah Data') ?>

jadi kode lengkapnya di data_mahasiswa_view.php adalah sebagai berikut:

<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>
<?php echo anchor('data_mahasiswa/add', 'Tambah Data') ?>

Langkah selanjutnya adalah membuat function add() di controller data_mahasiswa.php, tambahkan function ini:

...
    function add(){
        $this->load->view('add_view');
    }
...

Di sana terdapat code untuk meload file view yang bernama add_view.php
Silakan buat view add_view.php di folder /system/application/views dengan isi sebagai berikut:

<h1>Tambah data</h1>
<form action="" method="post">
    <table>
        <tr>
            <th>NIM</th>
            <td><input name="nim" /></td>
        </tr>
        <tr>
            <th>Nama</th>
            <td><input name="nama" /></td>
        </tr>
        <tr>
            <th>Alamat</th>
            <td><textarea name="alamat"></textarea></td>
        </tr>
        <tr>
            <th></th>
            <td><input type="submit" value="tambah" /></td>
        </tr>
    </table>
</form>
Perlu diketahui bahwa cara di atas belum menggunakan library ‘form’ bawaan dari CI.. kita memakai cara manual dulu, sebelum nanti kita bahas penggunaan helper di CI di tutorial selanjutnya…

Method yang digunakan yaitu POST, yang akan menghasilkan sebuah variable array $_POST…

Sebelumnya, kita tambahkan function insert() di model mahasiswa_model.php seperti berikut:

...
    function insert($set){
        $this->db->insert('mahasiswa', $set);
    }
...

function insert tersebut sudah ada di library database CI, jadi kita tidak usah membuat query ‘insert into….’ lagi…

sekarang, di Controller data_mahasiswa.php kita ubah function add() menjadi seperti berikut:

...
    function add() {
        if($_POST==NULL) {
            $this->load->view('add_view');
        }else {
            $this->mahasiswa_model->insert($_POST);
            redirect('data_mahasiswa/index');
        }
    }
...

Kita jelasin, di sana ada fungsi If untuk mengecek apakah data dari $_POST sudah terSET atau belum… kalo kita udah mengklik submit, berarti kita sudah mengeset variable $_POST… jika belum (=NULL), maka program hanya meload view saja….

di sana ada function redirect(), yaitu function bawaan CI, yang berfungsi untuk me-redirect halaman (mengalihkan), sehingga ketika kita menambahkan data, maka akan dialihkan lagi ke index…

Sejauh ini, kamu berhasil membuat aplikasi CI untuk menambahkan data ke database dan menampilkannya….

silakan ketik url berikut untuk melihat hasilnya: http://localhost/webku/data_mahasiswa

Sementara segini aja dulu ya…
Cheyuz-nya cape 2 jam ngetik trus nih,,, hahaha.. :D
tapi gpp, demi kalian :)

Nanti di part III kita akan membuat untuk update dan delete nya….
selamat mencoba…

SALAM WEB DEVELOPER!

Tags: , ,

25 Comments

tebo

10. May, 2010

mantab gan tutornya
heuehuehu

Cheyuz

10. May, 2010

hehehe thankz gan :)

faer

12. May, 2010

mksh tutorialnya….ditunggu tutorial berikutnya…

Cheyuz

12. May, 2010

sip, sama2 hehe

Nubitol

14. May, 2010

Atulah disani CI, disana CI. Bosen! kenapa sih Toys Framework gitu bisa begitu populer. PHP aja udah acak-acakan dan bener-bener bahasa pemrograman maianan buat anak kecil, ditambah lagi Toys Framework semacam Code Igniter yang acak-acakan yang tak lebih dari memisah logic dan viewer dan akhirnya pada view nya juga ada logic nya… Halah..

Cheyuz

17. May, 2010

kenapa sering ngebahas CI trus? soalnya tugas pemrograman internet kami materinya Code Igniter… jadi saya bikin tutorial ‘toys framework’ CI supaya anak2 ilkom 07 bisa mengerti CI dan menguasai materi dalam promnet… terima kasih…

newbie CI

18. May, 2010

Mas Cheyuz salam kenal…

saya mo tanya…
kalo kita mo ambil data dari table lalu data hasil query tersebut saya mo masukan ke table lain?
bagaimana itu mas…
contoh :

Calon Staff
ID Nama HOBI
1 aaaa baca
2 bbbbb nulis

Staff
Nama HOBI
xxxx tidur
yyyyy main

jika ‘xxxx’ ingin diganti dengan ‘aaaa’ dan data dari HOBI dari aaa masuk ke TABEL STAFF

terima kasih…

Cheyuz

20. May, 2010

tinggal diselect aja dulu, trus dimasukkin ke table..

$set = $this->db->get(‘calon_staff’)->result_array();
foreach($set as $s){
unset($s['id']);
$this->db->insert(‘nama_hobby’, $s);
}

lebih jelas YM aja..

bukmacherzy promocje

01. Jun, 2010

Hello dude, can i post articles to your website ? Let me know if you are interested

Cheyuz

12. Jun, 2010

boleh, tapi jangan lupa untuk mencantumkan sumbernya…

fitra

18. Jun, 2010

gan klo pass di run error seperti ini :
An Error Was Encountered

Unable to locate the model you have specified: mahasiswa_model

itu apa nya yah sorry newbie nich

thank’s

Cheyuz

18. Jun, 2010

harusnya bisa gan… paling yg salahnya itu ada yg salah di class mahasiswa_model, udah dicek sama ato ngga?

fitra

21. Jun, 2010

sorry gan nanya lagi nich syntax
$this->load->helper(‘url’);
itu naronya di mana gan di data_mahasiswa.php atau di data_mahasiswa_view.php
sy taro di data_mahasiswa_view.php error gan
seperti ini errornya : Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in C:\xampp\htdocs\webku\system\application\controllers\data_mahasiswa.php on line 29

fitra

21. Jun, 2010

sorry gan di atas ada slh ketik :
sy taro di data_mahasiswa.php error gan
error : Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in C:\xampp\htdocs\webku\system\application\controllers\data_mahasiswa.php on line 29

fitra

21. Jun, 2010

Sorry gan dah bisa , thank’s yah
nice tuto gan

joe182

22. Jul, 2010

Saya mengalami masalah sama dengan fitra, naruh $this->load->helper(‘url’);
dimana mas?
terima kasih

arif

27. Jul, 2010

Mau nambahin aja:

class Mahasiswa_model extends Model {
function __construct() {
parent::Model();
$this->load->database();
}
function selectAll(){
return $this->db->get(‘mahasiswa’)->result();
}
}

nice tutorial.. well

Cheyuz

27. Jul, 2010

@arif: ga usah diload lagi gan… kan udah diload di autoload.php
heuheu

Cheyuz

27. Jul, 2010

@joe182: di Controller, sebelum statement dijalankan…

lina

28. Jul, 2010

html di view bisa dibikin lebih simple ga mas. ato ada library tambahan ga biar lebih simple. misalnya kayak di Yii tinggal load CHtml::beginForm(), CHtml::buttonSubmit(”)….. dll…
thanks.

Cheyuz

28. Jul, 2010

@lina: ada mba… pake helper bawaan CI… tapi masih jelek… masih prosedural… paling klo saya biasanya bikin library sendiri buat form…

lina

28. Jul, 2010

pake form_open(), form_input, form_submit.. dll ya?
aku lagi memulai belajar framework ni.
belajar Yii dah tobat (berat) trus ganti CI lebih mudah dipahami
:-)
oiya kalo
if ($this->input->post(’submit’))…..
bisa diganti pake isset ga ya mas? seperti apa jadinya..

[...] 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.. [...]

[...] Tutorial CodeIgniter Dasar Part II – CRUD chapter 1 [...]

[...] sebuah controller data_mahasiswa.php (atau Anda bisa melanjutkan tutorial dari Tutorial Dasar Part I untuk membuat controller data_mahasiswa.php dan [...]

Leave a reply

Spam Protection by WP-SpamFree Plugin