Codeigniter:如何更新mulitiple记录所在的id

时间:2017-03-29 23:19:52

标签: php mysql codeigniter

我一直在寻找方法,但找到合适的斑点。所以,我有表格产品我一起显示他的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();
}

4 个答案:

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