如何为每个数据库行添加$_POST
数组(每个项目)?我有一个包含各种字段的字段,但用户中只有一个可以更改,在这种情况下是数量。
此字段中的行与PHP文件中使用的行(已订购)完全相同。
我已使用$_POST
数组,如下所示:<input type="text" name = "quantity[]">
现在,我希望在PHP端显示与用户显示相同的信息(相同的行)。
我有
if (is_array($_POST['quantity']) || is_object($_POST['quantity'])) {
foreach($_POST['quantity']as $key=>$value) {
$sqlquery = "SELECT * FROM info WHERE user_id = " . $user_id . " ORDER BY name ASC";
foreach($dbq->query($sqlquery) as $row) {
$message .= $row['name'] . $row['description'] . $row['amount'] . $value;
echo $message;
}
}
}
现在整个过程按预期工作,期望它循环两次。因此,每行显示两次,并且其中一半的行数量不正确。如果我有两行,它将回显四行,其中只有两行具有正确的数量,另外两行将交换数量值。
如该图所示,您可以看到最后一个值(2,2,15,15),这些值不代表正确的行。正确的顺序应该是(2,15,2,15),因为行循环两次 - 当然不是这样。
答案 0 :(得分:2)
更改您的表单,以便quantity
字段如下所示:
<input type="text" name="quantity[<?php echo $row['info_id']; ?>]">
将info_id
替换为引用表单中显示的项目的数据库列的实际名称。然后,当您处理表单时,您可以使用
if (is_array($_POST['quantity'])) {
foreach($_POST['quantity']as $key=>$value) {
$sqlquery = "SELECT * FROM info WHERE user_id = " . $user_id . " AND id = " . $key . " ORDER BY name ASC";
$row = $dbq->query($sqlquery);
$message .= $row['name'] . $row['description'] . $row['amount'] . $value;
echo $message;
}
}
我不确定您是否确实需要user_id
查询中的SELECT
测试,id
条件可能就足够了。但这取决于数据库的细节。