
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



terima kashi bang
tapi kok update nya salah ya
salah dmna ya?
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
ada bbrpa hal yg gw mau tnya.
versi php brpa?
versi CI brpa?
salah versi bisa berakibat fatal.
Sama ini errornya sama saya, emg hrs PHP berapa gitu?
Klo CI nya sama 2.1.0
sya sudah lupa sih, tpi klo diliat dri project saya, PHP saya versi 5.2.0.
coba disamain. pasti bener
bisa ko untuk updatenya
Bang kok kagak bisa ya fungsi add ama editnya??
apa’a yg gak bisa ya?
koneksi ke databasenya g bs…
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
“Message: Missing argument 1 for Home::edit()”
perhatikan pesan diatas, dan cek kmbli apkh link edit sudah benar?
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
coba copy-kan url yg dituju kesini. mngkin ada kslahan dsna.
ini urlnya saat tampil halaman “404………………”, http://localhost/CI/index.php/home/delete1
mohon bantuannya bro trims….
kurang karakter “/” setelah kata “delete”
jadi url yg benar adlh
http://localhost/CI/index.php/home/delete/1
cba perhtkan lgi pnulisan phpnya.
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 …
klo alert harus pake jQuery atau javascript. susunan code progamnya bakal beda jauh sama ini. gak bisa asal tembak js disitu. pasti error lah..