CodeIgniter Talk : CRUD Part 2

Pada tutorial sebelumnya kita sudah menyelesaikan sebagian dari proses CRUD ini dari pengenalan CodeIgniter, Create database sampai pada Read database. Dikesempatan kali ini mari kita langsung saja menyelesaikan tutorial ini dengan menambahkan fitur Update berserta Delete-nya.

Tutorial Details

  • Program : Codeigniter v2.1.0
  • Topic : CRUD
  • Difficulty : Easy
  • Estimated Completion Time : About 15 minutes

Assumptions

  • Anda sudah menyelesaikan dengan baik tutorial CodeIgniter Talk : CRUD Part 1.
  • Anda sudah memahami bagaimana cara kerja CodeIgniter.
  • Anda sudah mengerti proses Create dan Read database dari framework CodeIgniter.
  • Anda ingin menyelesaikan tutorial berantai ini. 🙂

Step 1 (Updating a record)

Untuk dapat mengupdate database berdasarkan data yang ditampilkan, maka kita harus melakukan perubahan pada view, memberikan fungsi baru pada controller home dan membuat halaman baru untuk update.

  • Updating home_view.php

Bukalah file home_view.php lalu perhatikanlah html yang ada didalam tag. Ganti bagian itu dengan html berikut :

        <table>
            <thead>
                <tr>
                    <th>Student Number</th>
                    <th>Name</th>
                    <th>Grade Point Average(GPA)</th>
                    <th>Course</th>
                    <th>Actions</th>
                </tr>
            </thead>
            <tbody>
                <? foreach ($students as $student) { ?>
                    <tr>
                        <td><? echo $student->student_number ?></td>
                        <td><? echo $student->name ?></td>
                        <td><? echo $student->gpa ?></td>
                        <td><? echo $student->course ?></td>
                        <td><? echo anchor("home/edit/" . $student->id, "Edit", array("title" => "Edit " . $student->name)) ?> | <? echo anchor("home/delete/" . $student->id, "Delete", array("title" => "Delete " . $student->name)) ?></td>
                    </tr>
                <? } ?>
            </tbody>
            <tfoot>
                <tr>
                    <td colspan="5"><? echo anchor("home/add", "Add", array("title" => "Add new student")) ?></td>
                </tr>
            </tfoot>
        </table>

Yang sebenarnya kita lakukan adalah kita mengubah susunan table yang sudah kita buat kemarin. Dapat dilihat dibagian tag <thead>, disana terdapat table heading baru dengan nama “Actions”. Ya, dibawah kolom inilah kita akan menambahkan aksi Edit dan Delete terhadap record yang bersangkutan. Pembentukan link aksi Edit dan Delete sendiri dapat dilihat pada tag <td> dibagian akhir pada tag <tbody> dengan menggunakan script anchor();

Script anchor yang merupakan salah satu fungsi dari helper url yang bersungsi menciptakan tag <a> berserta atributnya.  Terdapat 3 parameter pada fungsi ini, yang pertama adalah link yang akan kita tuju. Untuk aksi Edit kita mendefinisikan link “home/edit” ditambah dengan id record yang bersangkutan. Link “home/edit” sendiri merupakan gabungan dari controller dan fungsi yang akan kita tuju. Pada parameter kedua kita mendefinisikan “Edit” dimana value tersebut akan menjadi text bagi link yang bersangkutan. Lalu pada parameter 3 kita dapat mendefinisikan attributes yang ingin kita masukan pada link yang kita buat. Dalam kasus ini kita mendefinisikan attribute “title” dengan nilai “Edit ” ditambah dengan $student->name. Jika link yang kita buat dihover, maka title  “Edit Student Name” akan keluar diatasnya.

  • Updating controller

Setelah kita mengubah halaman home_view, maka yang perlu kita lakukan adalah membuat fungsi yang akan menangani link untuk setiap aksi Edit. Bukalah file home.php pada folder application/controllers, dan buatlah fungsi edit seperti contoh dibawah ini.

    public function edit($id) {
        $inputs = $this->input->post(NULL, TRUE);
        if (!$inputs) {
            if (isset($id)) {
                $data['student'] = $this->students_model->get($id)->row();
                $this->load->view('form_view', $data);
            } else {
                redirect("home");
            }
        } else {
            $data = array("student_number" => $inputs['student_number'],
                "name" => $inputs['name'],
                "gpa" => $inputs['gpa'],
                "course" => $inputs['course']);
            $this->students_model->update($data, $inputs['id']);
            redirect("home");
        }
    }

Fungsi edit yang kita buat dapat menjadi 2 fungsi, kedua fungsi itu dipisahkan dengan script pemilihan dalam hal ini berarti “if”. Kedua fungsi itu meliputi penampilan halaman edit berdasarkan $id yang disertakan di URL, dan pemasukan data yang dikirimkan dengan menggunakan method POST kedalam database. Pembagian 2 fungsi ini pada dasarnya sama seperti fungsi add yang sudah kita buat kemarin.

Step 2 (Deleting a record)

Jika diatas kita sudah mengubah halaman home_view.php untuk menambahkan Actions pada setiap record yang bersangkutan, maka kali ini kita hanya butuh membuat fungsi delete untuk menangani link delete pada halaman home ketika diklik.

  • Updating controller

Buka lagi file home.php pada folder application/controllers, dan buatlah fungsi delete seperti contoh dibawah ini:

    public function delete($id) {
        if (isset($id)) {
            $this->students_model->delete($id);
        }
        redirect("home");
    }

Fungsi ini cukup mudah karena disana hanya terdapat pemeriksaan terhadap inputan $id yang disertakan di URL, jika $id ditidak kosong maka program akan mendelete record dari database berdasarkan $id yang dikirimkan. Setelah itu halaman langsung di redirect ke halaman home untuk menampilkan kembali database yang sudah diupdate.

The Results

Gambar 1 : Edit and Delete function

Gambar 2 : Edit a record

Gambar 3 : Result after editing

Gambar 4 : Result after deleting a record

Summary

Fungsi-fungsi  yang disediakan CodeIgniter dapat memudahkan kita dalam pembuatan website dalam kompleksitas yang cukup tinggi. Sampasi saat ini kita sudah menggunakan beberapa fungsi yang disediakan oleh CodeIgniter. Salah satunya adalah fungsi-fungsi yang terdapat dalam Url Helper class yang dapat membantu kita untuk memanipulasi URL. Terdapat pula Active Records yang menudahkan kita dalam pembuatan query SQL. Selain ketersediaan fungsi dari framework, management file pada CodeIgniter ini dapat memudahkan kita dalam pendokumentasian program seperti yang sudah saya jelaskan kemarin.

Anda bisa mendukung saya untuk tetap melakukan update tutorial dengan cara mem-follow blog saya, atau mem-follow twitter saya disini, bisa juga dengan meninggalkan komentar dan atau me-request tutorial yang anda inginkan. Best regards, eSDhee

Advertisements

19 thoughts on “CodeIgniter Talk : CRUD Part 2

      • A PHP Error was encountered

        Severity: Warning

        Message: Missing argument 1 for Home::edit()

        Filename: controllers/home.php

        Line Number: 33
        A PHP Error was encountered
        —————————————————————————————–

        Severity: Warning

        Message: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\tutorial-ci-basic\system\core\Exceptions.php:185)

        Filename: helpers/url_helper.php

        Line Number: 542

  1. gan ko editnya berhasil tp saat di edit sll tampil eror klw di homenya seh dah berubah,,
    erornya
    A PHP Error was encountered
    Severity: Warning
    Message: Missing argument 1 for Home::edit()
    Filename: controllers/home.php
    Line Number: 30
    sintaknya
    load->helper(“url”);
    $this->load->model(‘pegawai_model’);
    }

    public function index() {
    $data[‘pegawai’] = $this->pegawai_model->getAll()->result();
    $this->load->view(‘home_view’, $data);
    }
    public function add() {
    $inputs = $this->input->post(NULL, TRUE);
    if (!$inputs) {
    $this->load->view(‘form_view’);
    } else {
    $data = array(“nip” => $inputs[‘nip’],
    “name” => $inputs[‘nama’],
    “jabatan” => $inputs[‘jabatan’],
    “alamat” => $inputs[‘alamat’]);
    $this->pegawai_model->create($data);
    redirect(“home”);
    }
    }
    public function edit($id) {
    $inputs = $this->input->post(NULL, TRUE);
    if (!$inputs) {
    if (isset($id)) {
    $data[‘pegawai’] = $this->pegawai_model->get($id)->row();
    $this->load->view(‘form_view’, $data);
    } else {
    redirect(“home”);
    }
    } else {
    $data = array(“nip” => $inputs[‘nip’],
    “name” => $inputs[‘nama’],
    “jabatan” => $inputs[‘jabatan’],
    “alamat” => $inputs[‘alamat’]);
    $this->pegawai_model->update($data, $inputs[‘id’]);
    redirect(“home”);
    }
    }
    public function delete($id) {
    if (isset($id)) {
    $this->pegawai_model->delete($id);
    }
    redirect(“home”);
    }

    }
    ?>
    sory di edit sedikit

  2. bro mohon petunjuknya, pas edit data berhasil, knpa pas nge delete data yg muncul halaman “404 Page Not Found, The page you requested was not found”, dimana yahh letak kesalahannya mohon petunjukknya trims perhatiannya 😀

  3. Kalau mau nambahin alert confirm pada proses delete ditarok dimana yah?
    kok saya tambahain baris ini :

    id, “Edit”, array(“title” => “Edit ” . $student->name)) ?> | id, “Delete”, ‘onclick’=>”return confirm(‘Are you sure want to delete this person?’)”, array(“title” => “Delete ” . $student->name)) ?>

    ngga bisa ya, katanya parse error …

    Thanks before …

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s