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

[php]

<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>

[/php]

Buat controller fungsi edit pada controller daily

[php]

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);
}

[/php]

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

[php]

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

[/php]

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

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

[/php]

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

[php]

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’);
}
}
}
}

[/php]

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 :

[php]
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);
}
[/php]

OK sekarang kita coba edit datanya..

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

44 thoughts on “Codeigniter Dasar – Membuat Edit Data

    1. dudu

      “Sekali lagi Perhatian, ini hanya ditujukan kepada Newbie seperti saya, kalo yang sudah jago ya kayanya ga perlu lagi baca ” 😛

      Reply
  1. Fandi Akhmad

    mas, saya mau tanya
    apakah fungsi konstruktor (yang namanya sama dengan class) berjalan di PHP 5?

    Sebaiknya pakai __construct() atau yang namanya sma??

    Thanks 🙂

    Nice info, gan.. 😀

    Reply
    1. dudu Post author

      Fungsi konstruktor yang ada pada PHP4 (nama konstruktor = nama fungsi) secara langsung dapat digunakan pada PHP5

      Karena sebaiknya pake PHP yang baru (yaitu PHP 5) ya lebih baik pake yang __construct() aja, kan lebih mudah mengingat __construct daripada mengingat setiap nama fungsinya (mungkin 🙂 )

      sama-sama..

      Reply
  2. Fandi Akhmad

    Mas, saya membuat update data.Ada satu combobox dan valunya mengambil dari table lain.Pada saat ingin diupdate value combobox defaultnya adalah current value dari data tsb.

    Mohon bantuannya,

    Terima Kasih 🙂

    Reply
    1. dudu Post author

      combo box itu maksudnya drop down ya??

      kalo dropdown di CI value nya di letakkan di segment ke 3
      [php]echo form_dropdown(‘name’, $options_list, $selected_value);[/php]

      Reply
  3. Fandi Akhmad

    Untuk kali ini saya masih pakai html biasa..egak pakai CI dropdown.

    table golongan
    id nama
    1 golonganA
    2 golonganB

    Masalahnya…misal ada itemA yang punya golonganB. ItemA itu saya edit,..dan dropdown menampilkan golonganB(selected).

    Reply
    1. dudu Post author

      saya juga belum tau cara yang tepat kalo pake html biasa. Tapi dulu saya cuma asal-asalan aja pake if. jadi pas perulangan ngambil option nya, di cek kalo sama dengan value nya, dikasih “selected”. ga efektif memang 😀

      Reply
  4. ayhu

    kak saya masih blum paham,maklum newbie,
    gini kak saya kan buat form untuk mengedit dan saya sudah buat script php nya,tapi blum bisa tampil,tampilannya itu cuma kolom kosong tanpa isi,jadi kira2 script untuk menampilkan nya itu apa kak,n lbih jelas nya saya kirim dech script yg saya buat
    di bwh ini script yg saya buat untuk mengedit data:
    file edit.php :

    Data Yang Akan Di Edit

    <?
    $conn=mysql_connect("localhost","root","admin");
    mysql_select_db("supportform");
    $sql = "select * from user where nomor_sf='$nomor_sf' ";
    $hasil= mysql_query($sql,$conn);
    $row=mysql_fetch_row($hasil);
    do
    {
    list($nomor_sf,$tanggal,$nama,$jumlah,$keluhan)=$row;
    echo "Nomor_sf “;
    echo “Tanggal “;
    echo “Nama “;
    echo “Departement “;
    echo “”;

    }
    while ($row=mysql_fetch_row($hasil));
    echo ”;
    echo ”.$row[‘nomor_sf1’].”;
    echo ”.$row[‘tanggal1’].”;
    echo ”.$row[‘nama1’].”;
    echo ”.$row[‘departement1’].”;
    echo ”.$row[‘keluhan1’].”;
    ?>

    dan ini file proses_edit_user.php :

    tolong ya kak,pencerahan nya,
    thx

    Reply
  5. Ali Mashuri

    kayaknya ada yang kurang (sok tau gw)
    function update yang di model mdaily.php nya belum ada.
    saya buatnya kira2 seperti ini

    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->insert(‘daily’,$data);
    }

    Reply
  6. dede iin

    mas mo tanya…
    pungsi edit dah jalan..
    tapi ko pas d submit..
    hasilnya ko malah nambah data nya..

    bukan nimpah file yg d editnya…

    mohon bantuannya….

    Reply
  7. andri

    koreksi fungsi update di model.php

    $this->db->insert(‘daily’,$data);
    yang insert harusnya update… CMWII

    $this->db->update(‘daily’,$data);

    Reply
  8. asep

    Fatal error: Call to undefined method CI_DB_mysql_driver::getwhere() in C:\xampp\htdocs\CodeIgniter\application\models\Mcoba.php on line 23
    ini salah apanya yua

    Reply
    1. dudu Post author

      Pake CI versi berapa?

      kalo versi 1.7.2

      Note: get_where() was formerly known as getwhere(), which has been deprecated

      Jadi coba query nya di sesuaikan lagi Misalnya jadi $this->db->where();

      Reply
      1. Raja ML

        bukan bang, tapi fungsi delete nya nggak jalan, trus maksud script javascript di file view/show.php, itu kan buat delete?

        $(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 : “”,
        data: info,
        success: function(){
        }
        });

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

        return false;
        });

        })

        Reply
        1. dudu Post author

          iya, fungsi tersebut untuk menghapus data dengan ajax. Jadi ketika di klik, baris yang di klik akan hilang dan data akan terhapus dari tabel. Kalo mosal tidak jalan,bisa di trace errornya pake firebug

          Reply
    1. dudu Post author

      memang seperti itu harusnya, karena pake jquery 🙂 jadi ada return false di fungsinya. Harusnya ketika di klik akan keluar fungsi confirm tersebut. Apakah jquerynya sudah di load? apakah Anda terhubung dengan internet? soalnya saya mengakses jquery langsung dari internet, tidak saya simpan dalam aplikasi saya

      Reply
  9. ginus

    keren, nambah lagi om tutor CI-nya … ane juga lagi bladjar CI, seru karena ada dokumentasi yang bagus banget dan lengkap banget …

    ane masih gbingung tentang library cart di CI, kalo mo bladjar langsung bisa g om?

    Reply
  10. wira

    Mas, saya mau tanya beberapa hal yang saya bingung, karena saya sudah kebiasaan memakai php tanpa ada framework:
    1. Bagaimana cara melakukan pengecekan apabila data tersebut sudah ada di database? Apakah dengan mengisi array data di fungsi index dengan sebuah variabel flag sehingga dari sana bisa diketahui data tersebut kembar atau tidak (misal, kalau flag berisi 0, berarti data tidak kembar, tapi apabila flag berisi 1 berarti data kembar), atau apakah ada cara lain dari code igniter ini sendiri?
    2. Untuk form validation, apakah ada cara lain untuk mengatasi selain memakai cara di atas?
    3. Apabila saya tambahkan fitur search di tutorial mas dudu, dan saya ingin apabila setelah user melakukan search, ketika refresh, hasil search itu tetap ada, bagaimana caranya?

    Trima kasih mas dudu..maaf kalo pertanyaannya panjang..penasaran soalnya..
    hehehe..
    sekali lagi trima kasih banyak mas..:)

    Reply
  11. Fizah

    Numpang belajar mas..
    Da kendala ni, 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();
    }

    getwhere(), error,, tidak terdapat fungsikatanya,.
    punya solusi mas??

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.