Post方法只发布从数据库获取的最后一个值



我在一个页面上显示来自数据库的项目列表(多个条目)。我试图张贴所有这些值从数据库获取到另一个php文件添加项目到购物车。

但是当我为列表中的任何项目按下"添加到购物车"按钮时,它只通过POST发送最后一个项目。我知道这是因为while循环,但我不知道正确的方法来实现它?


<form action="php/addToCart.php" method= "POST">
<?php
while($product=mysqli_fetch_assoc($featured)):
?>
<div class="col-md-5">
<h4><?= $product['title'] ?></h4>
<image src="php/marketplace_images/<?= $product['image'];?>" alt="<?= $product['title'];?>" height="300" width="300"/>
<p class="lprice"> Price $ <?= $product['price'];?></p>
<p class="desc"> Description: <?= $product['description'];?></p>
<p class="bname"> Brand Name: <?= $product['brandname'];?></p>
<input name="title" type="hidden" value="<?= $product['title'] ?>" />
<input name="price" type="hidden" value="<?= $product['price'] ?>" />
<input name="brandname" type="hidden" value="<?= $product['brandname'] ?>" />
<input name="image" type="hidden" value="<?= $product['image'] ?>" />
<input name="featured" type="hidden" value="<?= $product['featured'] ?>" />
<button type="submit" class="btn btn-success" data-toggle="modal" name="add">Add To Cart</button>      

</div>
<?php endwhile;
?>

您将得到一个单一的表单,其中有n个(多达项)具有相同名称的字段,这些字段不再分开。例如,你将有n个名为"title"的字段,n个名为"price"的字段;等。

你永远不知道哪个标题属于哪个价格。

另外,您所展示的代码只显示表单的呈现,而不是在提交时对它所做的操作(但这不会使它更好,因为您无法区分所有不同的输入)。如果代码需要一个标题,它可能取最后一个,或者随机取一个。

所以,如果你想发送只是一个项目:移动你的<form></form>while循环,这样你最终可以单独提交一些表格。一般来说,我建议不要发布所有的数据,只将自己限制为一个商品的id,但这超出了这个问题的范围(但想象一下,当我在将商品提交到购物车之前将价格操纵为0时会发生什么)

最新更新