使用PHP将多个HTML字段更新到MySQL数据库中

时间:2013-09-25 15:52:17

标签: php html mysql forms

这似乎是一项非常基本的任务;我不确定我是否患有脑痉挛,或者我是否遇到了更为罕见的事情。但它似乎并非如此。

我有一个名为products的表,其中包含以下列:ID, Model, Cost, Quantity

我的HTML表单按型号打印出所有价格和数量折扣;我像这样循环:

 <form method="post">

 <table>
       <tr>
            <th>Quantity</th>
            <th>Pricing</th>
       </tr>

      <?php while ($row = mysqli_fetch_array($result)) { ?>

       <tr>
           <td><?php echo $row['model']; ?></td>
           <td><input type="text" name="<?php echo $row['id']; ?>" value="<?php echo $row['cost']; ?>" /></td>

      </tr>

     <?php } ?>

 </table>


  <input type="submit" name="retail_price" value="Update Pricing"  />

 </form>

因此它打印出文本字段中的所有定价,并有一个按钮,以便可以“定量”更新定价。

我的问题是PHP我遇到的问题:

if (isset($_POST['retail_price'])) {  // THIS CODE IS NOT COMPLETE!

    $query = "
        UPDATE retail_pricing
        SET pricing = {$new price}
                    WHERE id = {$id} ";
    mysqli_query($connection, $query);

}

我遇到的问题,我想浏览每个字段并更新每个字段。快速搜索其他Stack问题,似乎我需要使用foreach来遍历每个字段。它是否正确?此外,查询是否也在循环中?

2 个答案:

答案 0 :(得分:2)

foreach($_POST as $key => $value) {
    if(is_numeric($key))
    {
        $query = "UPDATE retail_pricing SET pricing = $value  WHERE id = $key ";
        mysqli_query($connection, $query);
    }  
}

答案 1 :(得分:2)

在HTML中添加一个隐藏的输入,用于收集所有ID:

<tr>
    <td><?php echo $row['model']; ?></td>
    <td>
    <input type="text" name="<?php echo $row['id']; ?>" value="<?php echo $row['cost']; ?>" />
    <input type="hidden" name="ids[]" value="<?php echo $row['id']; ?>" />
    </td>
</tr>

然后当您提交表单时,您可以遍历所有这些ID并更新DB:

foreach( $_POST['ids'] as $id )
{
    $price = $_POST[$id];
     $query = "
        UPDATE retail_pricing
        SET pricing = {$price}
                    WHERE id = {$id} ";
    mysqli_query($connection, $query);
}