使用codeigniter将数组和更新记录存储在数据库中

时间:2015-09-25 03:28:59

标签: php arrays database codeigniter

我正在存储动态数组以及更新" max_quantity"数据库中的表。问题是,更新记录时,它将汇总所有数量值,并从"最大数量表"的第1个值中减去它。但是我希望数量的数组减去它自己的数量值,它存在于数据库中。

这是我在视图中的代码

<?php $i=1; foreach($result as $row){
        ?>

  <td class="pr-right" style='width:130px; text-align: center; '>

                <input type="text" min="1" step="1"  name="quantity[]" step="1" class="container" value="" onfocus="this.value = '';" onblur=";" style="width: 60px" id="quantityT<?php echo $i;?>" onkeyup="CalculatePrice (<?php echo $i;?>,<?php echo $row->max_quantity; ?>)">
                <br>(Quantity Available = <?php echo $row->max_quantity; ?>)
            </td>

             <?php
        $i++;
} ?>

这是我在控制器中的代码

public function get_insert_order(){
   $quantity=$this->input->post('quantity');

   for($i=0; $i<count($ingredient); $i++){
    $data = array(
    "user_quantity" =>$quantity[$i],
    );
      $response =  $this->bulk_recipe->insert_bulk_order($data);
            $max = $this->db->query("select bulk_delivery.max_quantity from bulk_delivery")->result_array();

            foreach ($max as $rows) {
                $calc = $rows['max_quantity'];
                $calc = $calc - $quantity[$i];
            }


            $this->db->query("UPDATE bulk_delivery SET max_quantity =$calc");
}

这是我在模型中的代码

function insert_bulk_order($form_data)
{
    $this->db->insert('bulk_delivery_order',$form_data);


    if ($this->db->affected_rows() == '1')
    {
        return TRUE;
    }

    return FALSE;
}

这是更新前的前端视图。

enter image description here

这是更新后的前端

enter image description here

请指导我如何将每个数量单独减去其max_quantity。

2 个答案:

答案 0 :(得分:0)

这就是你要找的......!

$this->db->set();

此功能可让您设置插入或更新的值。

可以使用它来代替将数据数组直接传递给插入或更新函数:

$this->db->set('field', 'field+1', FALSE);
$this->db->insert('mytable'); 
// gives INSERT INTO mytable (field) VALUES (field+1)

$this->db->set('field', 'field+1');
$this->db->insert('mytable'); 
// gives INSERT INTO mytable (field) VALUES ('field+1')

https://ellislab.com/codeigniter/user-guide/database/active_record.html

答案 1 :(得分:0)

您的代码有几个错误,您正在从db中选择所有行并每次都更新所有这些行。 您的代码应该是这样的...

$max = $this->db->query("select bulk_delivery.max_quantity from bulk_delivery where some_id = $i")->row_array();

$calc = $rows['max_quantity'];
$calc = $calc - $quantity[$i];

$this->db->query("UPDATE bulk_delivery SET max_quantity =$calc WHERE some_id = $i");