Codeigniter Dasar – Membuat Edit Data

Sekali lagi Perhatian, ini hanya ditujukan kepada Newbie seperti saya, kalo yang sudah jago ya kayanya ga perlu lagi baca :D. Juga wajib mengikuti tuorial sebelumnya yaitu

Edit data, setelah beberapa waktu lalu selesai dengan memasukkan data dan menampilkan serta menghapus data, kemudian ada seseorang yg menanyakan tentang cara mengedit data.

Secara algoritma MVC nya, Edit data dilakukan dengan Memanggil fungsi edit pada controller, fungsi ini akan memanggil data yang akan di edit (menggunakan parameter id) melalui Model, kemudian data tersebut ditampilkan kedalam view. Setelah data tersebut di edit, kemudian memanggil fungsi submit pada controller untuk menentukan proses update data yg dilakukan pada model. Kemudian di redirect ke halaman index untuk melihat hasil data yg telah di edit tadi. Secara gambarannya seperti berikut :

So, daripada bingung, langsung saja di praktekkan 🙂

Pada file view.show.php ubah menjadi seperti di bawah ini

<script type="text/javascript">
$(document).ready(function() {
 $(".delbutton").click(function(){
 var element = $(this);
 var del_id = element.attr("id");
 var info = 'id=' + del_id;
 if(confirm("Anda yakin akan menghapus?")){
 $.ajax({
 type: "POST",
 url : "<?php echo site_url('daily/delete')?>",
 data: info,
 success: function(){
 }
 });

 $(this).parents(".record").animate({ opacity: "hide" }, "slow");
 }

 return false;
 });

})
</script>
<b>Daily Notes</b>
<table style="width:600px; border:1px solid;">
 <tr>
 <th style="border:1px solid;">No</th>
 <th style="border:1px solid;">Date</th>
 <th style="border:1px solid;">Name</th>
 <th style="border:1px solid;">Amount</th>
 <th style="border:1px solid;">Edit</th>
 <th style="border:1px solid;">Delete</th>
 </tr>
 <?
 $i=0;
 foreach ($query as $row){
 $i++;
 echo "<tr class=\"record\">";
 echo    "<td style=\"border:1px solid;\">$i</td>";
 echo    "<td style=\"border:1px solid;\">$row->date</td>";
 echo    "<td style=\"border:1px solid;\">$row->name</td>";
 echo    "<td style=\"border:1px solid;\">$row->amount</td>";
 echo    "<td style=\"border:1px solid;\">".anchor("daily/edit/$row->id",'Edit')."</td>";
 echo    "<td style=\"border:1px solid;\"><a class=\"delbutton\" id=\"$row->id\" href=\"#\" >Delete</a></td>";
 echo  "</tr>";
 }
 ?>
</table>

Buat controller fungsi edit pada controller daily

function edit($id){
 $query          = $this->MDaily->get($id);
 $data['fid']    = $query['id'];
 $data['fdate']  = $query['date'];
 $data['fname']  = $query['name'];
 $data['famount']= $query['amount'];
 $this->load->view('daily/edit',$data);
 }

Kemudian pada Model buat fungsi get untuk mengambil data/ record yang akan di edit

function get($id){
 $query = $this->db->getwhere('daily',array('id'=>$id));
 return $query->row_array();
 }

Lanjutnya buat file edit.php pada direktory views/daily/edit.php

<!DOCTYPE HTML>
<html lang="en-US">
 <head>
 <title>Daily Notes</title>
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
 <meta charset="UTF-8">
 </head>
 <body>
 <h2 >Daily Notes</h2>
 <div id="form_input">
 <table>
 <?php echo form_open('daily/submit'); ?>
 <?php echo form_hidden('id',$fid); ?>
 <tr>
 <td> <?php echo form_label('Date : '); ?></td>
 <td> <?php echo form_input('date',$fdate,'id="date"'); ?></td>
 </tr>
 <tr>
 <td> <?php echo form_label('Name : ');?> </td>
 <td> <?php echo form_input('name',$fname,'id="name"'); ?></td>
 </tr>
 <tr>
 <td> <?php echo form_label('Amount : ');?> </td>
 <td> <?php echo form_input('amount',$famount,'id="amount"'); ?></td>
 </tr>
 <tr>
 <td> <?php    echo form_submit('submit','Submit','id="submit"'); echo form_close(); ?> </td>
 </tr>
 </table>
 </div>
 </body>
</html>

Ubah pada fungsi submit pada controller daily sehingga menjai seperti berikut :

function submit(){
 if ($this->input->post('ajax')){
 $this->MDaily->save();
 $data['query'] = $this->MDaily->getAll();
 $this->load->view('daily/show',$data);
 }else{
 if ($this->input->post('submit')){
 if ($this->input->post('id')){
 $this->MDaily->update();
 redirect('daily/index');
 }else{
 $this->MDaily->save();
 redirect('daily/index');
 }
 }
 }
 }

Maksud dari kode di atas adalah, jika kita submit memiliki $id maka akan memanggil function update pada model, apabila $id masih kosong, maka akan menambahkan data,

Untuk model ditambahkan function update sebagai berikut :

function update()
{
$id	 = $this->input->post('id');
$date = $this->input->post('date');
$name = $this->input->post('name');
$amount=$this->input->post('amount');
$data = array(
'date'=>$date,
'name'=>$name,
'amount'=>$amount
);
$this->db->where('id', $id);
$this->db->update('daily',$data);
}

OK sekarang kita coba edit datanya..

Bagi yang belum paham bisa kirim komentar ya 🙂 piss saya juga masih belajar..