我一直在寻找方法,但找到合适的斑点。所以,我有表格产品和我一起显示他的ID 。我把一个表格。和当我按下更新按钮,然后以相应ID 的形式更新了内容。
我的观点:
<?php echo form_open('stock/updating_stock');?>
<div class="panel-body scroll-menu" style="margin-top:0px;height:170px;padding-top:5px;">
<?php foreach($critical_plus_warning as $data){?>
<input type="hidden" name="id_product[]" value="<?php echo $data->id_product;?>">
<h5 class="hidden-xs"><b><?php echo $data->product_name;?></b> <input type="text" class="pull-right" style="width:10%;margin-left:10px;text-align:center;" name="update_stock[]" value="<?php echo $data->stock?>">
<?php
$stock = $data->stocks;
if($stock < 10){
echo "<label style='font-size:13px;' class='label label-danger pull-right'>$stock</label>";
}else{
echo "<label style='font-size:13px;' class='label label-warning pull-right'>$stock</label>";
}
?>
</h5>
<h5 class="hidden-lg"><b><?php $limited_word = word_limiter($data->product_name,3); echo $limited_word; ?></b> <input class="pull-right" type="text" style="width:10%;margin-left:10px;text-align:center;" name="update_stock[]" value="<?php echo $data->stocks?>">
<?php
$stock = $data->stocks;
if($stock < 10){
echo "<label style='font-size:13px;' class='label label-danger pull-right'>$stock</label>";
}else{
echo "<label style='font-size:13px;' class='label label-warning pull-right'>$stock</label>";
}
?>
</h5>
<?php }?>
</div>
<div class="col-xs-12" style="margin-top:-5px;background-color:white;padding:6px;background-color:white;box-shadow:0px 0px 8px 0px #bababa;"><button type="submit" name="submit" class="btn btn-success">Save data</button></div>
<?php echo form_close();?>
和我的控制员:
function updating_stock(){
$id = $this->input->post('id_product');
$stok = $this->input->post('update_stock');
$user = $this->data['id'];
for($i=0;$i<count($id);$i++){
$data = array(
array(
'id' => $id,
'stok' => $stok,
'diubah' => $user,
'tgl_diubah'=> date('Y:m:d H:i:s'),
),
);
}
//print_r($data);
$this->stok_adm->update_stok($data);
}
和我的模特:
function update_stok($data){
$this->db->update_batch($this->table, $data,'id_product');
return $this->db->affected_rows();
}
答案 0 :(得分:0)
你需要一个where子句:
$this->db->where('id', $id);
......我想。
答案 1 :(得分:0)
试试这个:
控制器
String timeuuid = com.datastax.driver.core.utils.UUIDs.timeBased().toString();
}
型号:
function updating_stock(){
$id = $this->input->post('id_product');
$stok = $this->input->post('update_stock');
$user = $this->data['id'];
for($i=0;$i<count($id);$i++){
$data = array(
array(
'id' => $id,
'stok' => $stok,
'diubah' => $user,
'tgl_diubah'=> date('Y:m:d H:i:s'),
),
);
}
//print_r($data);
$this->stok_adm->update_stok($data,$id);
}
答案 2 :(得分:0)
我认为在您的示例中 update_batch 将生成不正确的查询beacues,您需要更新db中的每条记录而不是一起更新它们 - update_batch 替换多行中的值条件因此有可能更新不正确的行(检查documentation中的示例)。因此,更好的想法是使用它的ID更新每个产品。它可能看起来像那样:
模型
function update_stok($data, $id_product){
$this->db->where('id_product', $id_product);
return $this->db->update($this->table, $data);
}
控制器
function updating_stock(){
$ids = $this->input->post('id_product');
$stok = $this->input->post('update_stock');
$user = $this->data['id'];
foreach($ids as $key => $id_product) {
$data = array(
'stok' => $stok[$key],
'diubah' => $user,
'tgl_diubah'=> date('Y:m:d H:i:s'),
);
$this->stok_adm->update_stok($data, $id_product);
}
}
答案 3 :(得分:0)
$data = array(
array(
'title' => 'My title' ,
'name' => 'My Name 2' ,
'date' => 'My date 2'
),
array(
'title' => 'Another title' ,
'name' => 'Another Name 2' ,
'date' => 'Another date 2'
)
);
$this->db->update_batch('mytable', $data, 'title');
http://www.codeigniter.com/user_guide/database/query_builder.html?highlight=update_batch