无法进行更新查询

时间:2015-06-12 18:44:04

标签: codeigniter foreach

我在我看来有4个选择同名 - wrappingType []。它们有4种不同的尺寸。我试过但我无法更新周期来更新数据库中的数据。 我希望当用户从这4个选择中选择时 - 这些值将在4个不同的行中在数据库中更新 - 对于4种不同的大小(XL,L,M,S)。 我不知道如何为这4种尺寸制作它们 - 它们是输入的。 它正在以这种方式看待: http://prntscr.com/7g7o49

我希望当用户从4个下拉列表中的每个下拉列表中选择一个选项时,它们的值将被更新,其中这个值为。(XL,L,M,S)。怎么做这个循环 - foreach,for?以及如何获得鸡蛋大小的价值 - 我已经为这个目标制作了这些输入文本框,但是我可以做到这一点。 :) 以下是我的观点:

<?php 
foreach($items as $item){
   if($item['eggSize'] == 'XL'){
      $size_wrappingType = $item['wrappingType'];
      $size_quantity = $item['quantity'];
     
                        
 <?php
  }
}
 <select name = 'wrappingType[]' >
     <option value="<?= '0' ?>"
     <?php echo $size_wrappingType == '0' ? 'selected="selected"' : 
      '' ?>><?php echo '0'  ; ?></option>  
     <option value="<?= '4' ?>"
      <?php echo $size_wrappingType == '4' ? 'selected="selected"' : 
     '' ?>><?php echo '4'  ; ?></option>
<input type="text" name ="eggsize[]" value ="XL">
<?php
foreach($items as $item){
   if($item['eggSize'] == 'L'){
      $size_wrappingType = $item['wrappingType'];
      $size_quantity = $item['quantity'];
     
                        
 <?php
  }
}
 <select name = 'wrappingType[]' >
     <option value="<?= '0' ?>"
     <?php echo $size_wrappingType == '0' ? 'selected="selected"' : 
      '' ?>><?php echo '0'  ; ?></option>  
     <option value="<?= '4' ?>"
      <?php echo $size_wrappingType == '4' ? 'selected="selected"' : 
     '' ?>><?php echo '4'  ; ?></option>
</select>
<input type="text" name ="eggsize[]" value ="L">

//And these selects are 4 - for sizes - XL, L, M, S

我的模特是:

<?php 
 public function update_document($document,$order_id){
     if($this->input->post('eggsize')) {
        foreach($this->input->post('eggsize') as $size) {
     if($this->input->post('wrappingType')) {
          foreach($this->input->post('wrappingType') as $wrappingType) {
     $data = array(
     'wrappingType' =>$wrappingType,
     );

                $this->db->where('idOrder', $order_id);
                $this->db->where('eggSize', $size);
                $this->db->update('orderitems', $data); 
            }
        }
    }
    }

1 个答案:

答案 0 :(得分:1)

我认为您只需要一个for循环,循环遍历每个wrappingType输入,然后获取相应的eggsize输入并在更新查询中使用它。

public function update_document($document,$order_id) {
    $eggSizeInputs = array();
    if($this->input->post('eggsize')) {
        $eggSizeInputs = $this->input->post('eggsize');
    }

    $eggSizeIndex = 0;

    if($this->input->post('wrappingType')) {
        foreach($this->input->post('wrappingType') as $wrappingType) {
            $data = array(
                'wrappingType' =>$wrappingType
            );

            $eggSize = $eggSizeInputs[eggSizeIndex++];


            $this->db->where('idOrder', $order_id);
            $this->db->where('eggSize', $eggSize);
            $this->db->update('orderitems', $data);
        }
    }
}