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

问题描述 投票:0回答:2

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

我有一个名为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来遍历每个字段。它是否正确?此外,查询是否也在循环中?

php html mysql forms
2个回答
2
投票
foreach($_POST as $key => $value) {
    if(is_numeric($key))
    {
        $query = "UPDATE retail_pricing SET pricing = $value  WHERE id = $key ";
        mysqli_query($connection, $query);
    }  
}

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.