这似乎是一项非常基本的任务;我不确定我是否患有脑痉挛,或者我是否遇到了更为罕见的事情。但它似乎并非如此。
我有一个名为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
来遍历每个字段。它是否正确?此外,查询是否也在循环中?
答案 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);
}