输入隐藏无法正常工作
Posted
技术标签:
【中文标题】输入隐藏无法正常工作【英文标题】:Input hidden doesn't work properly 【发布时间】:2016-08-26 06:58:46 【问题描述】:我正在开发一个简单的 php 页面,这是我的一小部分代码无法正常工作。
我想使用 DB 并打印一些产品,并且对于每个产品,我想显示一个“购买”按钮。
如果我按下此按钮,则必须使用产品 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>
【问题讨论】:
你在什么阶段使用var_dump
?在这个while
循环中还是在按下按钮之后?
目前你有一个循环,其中 N
隐藏字段都具有相同的名称,即 id_products
这就是为什么你总是得到最后一个,因为这是加载到单个 dom 中的最后一个值元素
【参考方案1】:
您应该在 while 循环中打开和关闭表单。
编辑
更多解释为什么应该在 while 循环中打开和关闭: 如果 while 循环在表单标签内,则意味着隐藏字段在同一个表单中被多次输出。由于它们的名称都相同,因此您只在提交后检索一个值(最后一个隐藏输入的值)。 如果您在 while 循环中打开和关闭表单,则每个隐藏的输入和按钮都处于自己的表单中。这意味着,当提交该表单时,您只会检索该特定隐藏字段的值。 :-)
【讨论】:
这是个好主意,但多一点解释对 OP 会非常有用。他们为什么要这样做? 谢谢,更新了我的答案。希望这对OP更有用。 :-)以上是关于输入隐藏无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章