Post 方法仅发布从数据库中获取的最后一个值
Post Method only posting last value fetched from database
我在一页上显示数据库中的项目列表(多个条目)。我正在尝试 post 从数据库中获取的所有这些值到另一个 php 文件以将项目添加到购物车。
但是当我为列表中的任何项目按下 'add to cart' 按钮时,它只会通过 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 时会发生什么)
我在一页上显示数据库中的项目列表(多个条目)。我正在尝试 post 从数据库中获取的所有这些值到另一个 php 文件以将项目添加到购物车。
但是当我为列表中的任何项目按下 'add to cart' 按钮时,它只会通过 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 时会发生什么)