我想从表monitordata更新我的数组数据,但数据不会更新我不知道问题出在哪里。这段代码也没有错误:(
这是我的控制器
public function ubah($id) {
$data_lama = $this->monitor_m->get($id);
$this->data->tglmonitor = $data_lama->tglmonitor;
$this->data->detail = $this->monitor_m->get_record(array('monitor_data.idMonitor'=>$id),true);
$this->template->set_judul('SMIB | Monitoring')
->render('monitor_edit',$this->data);
}
public function ubahku($id) {
$id = $this->input->post('idMonitor_data');
if($this->input->post('idinven')!=NULL){
$idMonitor = $this->input->post('idMonitor');
$kondisi = $this->input->post('kondisi');
$nobrg = $this->input->post('nobrg');
$keterangan = $this->input->post('keterangan');
$kdinven = $this->input->post('kdinven');
$idinven = $_POST['idinven'];
for($i = 0; $i < count($idinven); $i++){
$data_detail = array(
'idMonitor' => $this->input->post('idMonitor'),
'idinven'=> $idinven[$i],
'kdinven'=> $kdinven[$i],
'nobrg'=> $nobrg[$i],
'kondisi'=> $kondisi[$i],
'keterangan' => $keterangan[$i]);
//print_r($data_detail);
$where = array('idMonitor_data' => $id);
$this->monitordata_m->update_by($where,$data_detail);
}
} redirect('monitorcoba');
}
这是我的模型monitordata_m
class Monitordata_m extends MY_Model {
public function __construct(){
parent::__construct();
parent::set_table('monitor_data','idMonitor_data');
}
这是我放入核心文件夹的MY_Model模型。
public function update_by($where = array(), $data = array()) {
$this->db->where($where);
if ($this->db->update($this->table,$data)){
return true;
}
return false;
}
这是我的观点
<?php echo form_open(site_url("monitorcoba/ubahku"),'data-ajax="false"'); ?>
<input data-theme="e" style="float: right;" data-mini="true" data-inline="false" data-icon="check" data-iconpos="right" value="Simpan" type="submit" />
<div data-role="collapsible-set" data-mini="true">
<?php foreach ($detail as $items): ?>
<div data-role="collapsible">
<?php echo form_hidden('idMonitor_data', $items['idMonitor_data'] ); ?>
<?php echo form_hidden('idMonitor', $items['idMonitor'] ); ?>
<h4><?php echo '[ '.$items['kdinven'].' ] '.$items['namabrg'] ?> </h4>
<?php echo form_hidden('kdinven', $items['kdinven'] ); ?>
<?php echo form_hidden('idinven', $items['idinven'] ); ?>
<div data-role="controlgroup">
<?php echo form_label ('Kondisi : ');
echo " <select name='kondisi' data-mini='true'>
<option value=".$items['kondisi'].">".$items['kondisi']."</option>
<option value=''>--Pilih--</option>
<option value='Baik'>Baik</option>
<option value='Rusak'>Rusak</option>
<option value='Hilang'>Hilang</option>";
echo "</select>";
echo form_input('keterangan',@$keterangan,'placeholder="Masukan Keterangan Tambahan"','class="input-text"');
?>
<?php echo form_close(); ?>
即使我使用update_by它也不起作用。这已经是2周了,我不知道:(我已经尝试了我在谷歌找到的所有答案但仍然......所以请帮助我。
答案 0 :(得分:1)
您已定义了名为update_by
的方法,但您正在调用$this->monitordata_m->update($id,$data_detail);
。绝对不应该工作。请从您的控制器和电话中拨打$this->monitordata_m->update_by($id,$data_detail);
检查会发生什么。
答案 1 :(得分:1)
首先,请将$this->monitordata_m->update($id,$data_detail);
更正为$this->monitordata_m->update_by($id,$data_detail);
,因为您的update_by
模型中的函数名称为monitordata_m
。
其次,在您的monitordata_m
模型update_by
函数中有2个参数,例如$where = array()
$data = array()
,$where
是array
,但是您在调用仅控制器$id
。您的$id
不是数组。 $where
就像那个$where = array('id' => $id) //id is where field name from db table
因此,ubahku($id)
函数中控制器中的$where
方法调用update_by
:
$where = array('id' => $id); // 'id' means "where field name"
$this->monitordata_m->update_by($where,$data_detail);
答案 2 :(得分:0)
所以,非常感谢所有回答我问题的人。所以问题是当我更新数据时,系统只检测"kondisi[]"
和"keterangan[]"
作为数组,因为我对它们都使用"[]"
,所以我只需添加{{1在html表单/视图中的每个"[]"
的末尾。因此系统会将每个输入检测为数组。我希望你明白我在说什么,抱歉我的英语不好。谢谢你这个案子被关闭了:))