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
- Codeigniter Dasar – Membuat Insert Data
- Codeigniter dasar – Menampilkan dan Menghapus Data
- Codeigniter Dasar – Belajar AJAX dengan JQuery
- Codeigniter Dasar – Menghapus data dengan Jquery
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..
nice tutorial suhu *nyembah2*
“Sekali lagi Perhatian, ini hanya ditujukan kepada Newbie seperti saya, kalo yang sudah jago ya kayanya ga perlu lagi baca ” 😛
nice tutorial, thx atas share ilmunya
sama-sama 🙂
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.. 😀
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..
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 🙂
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]
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).
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 😀
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
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);
}
betul- betul betul.. thx koreksinya 🙂
sebenernya ada banyak perubahan, tetapi belum sempa saya lengkapi..
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….
mungkin di model belum ada function update nya. Coba di cek pale firebug, post ke alamat mana?
koreksi fungsi update di model.php
$this->db->insert(‘daily’,$data);
yang insert harusnya update… CMWII
$this->db->update(‘daily’,$data);
thx koreksinya.. 🙂
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
Pake CI versi berapa?
kalo versi 1.7.2
Jadi coba query nya di sesuaikan lagi Misalnya jadi $this->db->where();
klo pake CI 2.0
$this->db->get_where();
ka,kenapa yah,punya saya setelah di tambahkan edit malah yang delete nya g b’fungsi?
mungkin ada syntax yang salah ketik
Hatur nuhun kang …. terimakasih tutorialnya.
saya baru mulai belajar HMVC + jQuery ….. mohon bimbingannya….
kang kalau buat fungsi tambah data gimana yah
di artikel insert data kan ada 🙂 artikel sebelumnya
mas edit nya berhasil, tapi deletenya kok engga ya?
mohon pencerahan!!!
ada error? apa?
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;
});
})
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
ngeliat scriptnya, berarti akan ada konfirmasi dulu kan, sebelum datanya benar2 hilang,
ya 🙂
error sich tidak bang, hanya ketika dijalanin/atau di klik, delete, dia larinya ke #, bukan ke fungsi javascipt nya
lari kesini
echo “id\” href=\”#\” >Delete”
harusnya kan kesini
if(confirm(“Anda yakin akan menghapus?”)){
salahnya dimana ya?
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
jadi nanti ketika diklik delete, URI yang muncul di adrees bar seperti apa?
tidak berubah ke halaman lain, hanya ditambahkan #
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?
mas ada tutorial membuat web ecomerce dengan ci gak??
mohon infonya…..
maaf belum ada 🙂
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..:)
1 . Bisa membuat function callback sendiri, silahkan baca di sini http://codeigniter.com/user_guide/libraries/form_validation.html</a
2. Sama seperti jawaban no 1. Tergantung kreatifitas dan kebutuhan 🙂
3. Searchnya pake method GET, jangan POST. Kalopun mau post, parameternya di simpan (bisa pake form hidden)
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??
Anda pake CI versi berapa? coba di ganti jadi get_where()
http://codeigniter.com/user_guide/database/active_record.html#select
Pake versi 2.0.2..
kemaren ngecek di user_guide ganemu-nemu (alesan males nyari.. :p)
Sippp.. kita coba..
Makasiiii..:)
maknyuss.. broo 🙂 tutorial