Postingan lainnya
data tak mau terupdate ke database
begini gan, saya mau memanggil function update() di fungsi function updatesantri_aksi(), bagian controller, id yag dipakai di DB primary. nah masalahnya ada bug disaat memanggil fungsi update, jika tak kasih array ataupun parameter didalam update('id') fungsinya jalan, namun data ga mau keupdate di database, apa mungkin ada kesalahan di syntaxnya pada fungsi updatesantri_aksi()?
soalnya tiap edit data program harusnya memberitahu kalau data terupdate dan ke-redirect di halaman santri.php namun data tidak terupdate sekaligus tidak keredirect ke halaman santri..
$this->_rules();
if ($this->form_validation->run() == FALSE) {
$this->update('id');
} else { ...
santricontrollerfunctionupdate.png
santrimodel.png
viewsantri.png
4 Jawaban:
<div>Hallo, izin bantu jawab, di method update pada Controller kamu, itu mengharuskan adanya sebuah parameter, sedangkan ketika kamu panggil fungsi update() di method updatesantri_aksi(), kamu memanggilnya tanpa memparsing/memberikan parameter, oleh karenanya terjadi error.<br><br>Ini method update yang kamu definisikan :</div><pre>public function update($id){ //KODE //KODE //KODE }</pre><div><br>Kemudian, di method ini lah yang kamu memanggil method update diatas :</div><pre>$this->_rules(); if ($this->form_validation->run() == FALSE) { $this->update(); <-- salahnya disini, karena tidak ada paramater yang dimasukkan
} else { ...</pre><div><br>Solusinya gimana? Yaa , kamu harus memastikan bahwa ketika kamu memanggil method update() di method/fungsi lain, harus ada parameter yang di berikan, atau kamu bisa memberikan parameter opsional, dengan memberikan nilai default pada parameternya. Contohnya gini mislakan :<br><br></div><pre>public function getUser($id = null) { //KODE //KODE //KODE }
Maka dapat dipanggil dengan : $namaClass->getUser(); <--- Tanpa parameter $namaClass->getUser(10); <--- Dengan parameter, dimana 10 adalah nilai dari parameternya</pre><div>Nah, pada method getUser() diatas, kita bisa memparsing parameter, juga membolehkan untuk tidak menyertakan parameter.<br><br>Semoga membantu.</div>
Tanggapan
parameternya harusnya bukan ditulis secara langsung, seperti update('id'), harusnya nilai parameternya itu dinamis, makanya disimpan dalam sebuah variable, ini mau proses tambah data atau update data ?
<div>terimakasih kak atas jawabnnya, sebelumnya saya sudah mencoba seperti caranya anda, dengan menambahkan parameter id dalam update('id'), hasilnya work kak, namun data tidak terupdate, dan malah ditendang ke halaman administrator/santri/updatesantri_aksi jadi codenya work namun tidak sesuai yang diharapkan, hmm menurut anda apa ada yang salah ya kak di function tambah_santri_aksi() ?</div>
<pre>function update_data($data, $table){ $this->db->where('id', $data['id]); $this->db->update($table, $data); }</pre>
Tanggapan
makasih gan, feedback nya malah jadi gini You must use the "set" method to update an entry.
saya agak, bingung nih, sy boleh nannya gak, apakah ketika form validation error akan terjadi update?. coba dibaca lagi documentasi penggunaan form validation. jika form validation false, maka akan di redirect ke halaman error.
<div>mending controller fungsi update seperti ini</div><pre>public function update_data ($id){ //id di terima dari url atau input form $this->rules(); if($this->form_validation_run() == false){ //kembalikan kehalaman tampilan update jika terjadi error $data = array( 'isi' =>'data halaman update' ); $this->load->view($data) }else{ $data_update = array( 'id' => $id,//id disini diterima dari parameter fungsi update_data 'nama' => $this->input->post('nama'), 'username' => $this->input->post('username') ); $update = $this->model_update->update_data($data_update); if($update) { echo "success";}else{echo "error";} } }</pre><div><br>ini untuk model<br><br></div><pre>function update_data($data){ $this->db->where('id', $data['id']); return $this->db->update('tb_user', $data); }</pre>