我正在开发一个简单的PHP页面,这是我的代码的一小部分无法正常工作。
我想使用数据库并打印一些产品,对于每个产品,我想显示一个“购买”按钮。
如果我按下此按钮,则必须使用产品ID设置隐藏输入(稍后必须将其发送到另一页)。
但是,如果我使用var_dump
来控制(如果我的数据是正确的),我可以看到ID是错误的(我看到它总是在最后显示)
<form id="products_list" method="post" action="step2.php">
<table>
<tr>
<td align="center">Immagine</td>
<td align="center">Nome prodotto</td>
<td align="center">Descrizione prodotto</td>
<td align="center">Prezzo unitario</td>
<td align="center">Taglie disponibili</td>
<td align="center">Colori disponibili</td>
<td align="center">Nickname disponibili</td>
</tr>
<?php
$product = mysqli_query($mysqli, "SELECT * FROM products");
while ($row = mysqli_fetch_array($product)) {
$id = $row[id_products];
print("
<tr>
<td align=\"center\">".$row[img_products]."</td>
<td align=\"center\">".$row[name_products]."</td>
<td align=\"center\">".$row[description_products]."</td>
<td align=\"center\">".$row[price_products]."</td>
<td align=\"center\">".$row[size_products]."</td>
<td align=\"center\">".$row[color_products]."</td>
<td align=\"center\">".$row[nick_products]."</td>
<input type=\"hidden\" name=\"id_products\" value=\"".$id."\"/>
<td><input type=\"submit\" name=\"buy\" value=\"Acquista\"/></td>
</tr>");
}
?>
</table>
</form>
答案 0 :(得分:1)
您应该在while循环中打开和关闭表单。
修改强>
更多解释为什么你应该在while循环中打开和关闭: 如果while循环位于表单标记内,则表示隐藏字段在同一表单中多次输出。由于它们都被命名为相同,因此您只需在提交后检索一个值(最后一个隐藏输入的值)。 如果在while循环中打开和关闭表单,则每个隐藏的输入和按钮都是各自的形式。这意味着,当提交该表单时,您只需检索该特定隐藏字段的值。 : - )