$ _ POST ['amount']没有获得商品数量,$ _POST ['itemId']显示数据库中的最后一项,但不显示您点击的项目。所以所有的商品都是展示的,但是形式只收到最后一个,而不是点击
的商品<div class=cart>
<b>Cart:</b><br>
<?php
if(isset($_POST['add']))
{?>
<?=$_POST['amount']?>
<?php }
?>
</div>
<hr>
<?php
class shop
{
public function baseConnect()
{
$connect = mysqli_connect("localhost", "root", "", "test");
$table = "SELECT * FROM `goods`";
$result = mysqli_query($connect, $table);
return $result;
}
}
$shop = new shop;
$items = $shop->baseConnect();
?>
<form method='post'>
<?php
while ($item = mysqli_fetch_assoc($items))
{?>
<input type=hidden value='<?=$item['good'];?>' name='itemId'>
<b><?=$item['good'];?></b><br>
Price: <?=$item['price'];?>$<br>
<input type=text name='amount'><br>
<input type=submit name='add' value='Add to cart'><br>
<?php }
?>
</form>
答案 0 :(得分:2)
在您的代码中,您将在同一表单元素中创建所有表单输入,并为每个元素重用相同的名称属性。单击“提交”时,发送到服务器的内容是这些名称的最后一个实例。因此,如果您向amount
添加一个数字并单击列表中不是最后一项的项目的提交按钮,您仍会收到最后一个amount
和{{1}实例的值}}
要解决此问题,请在while循环中移动itemId
(在循环结束时也包含<form method="post" action="">
标记)。
变化:
</form>
要:
<form method='post'>
<?php
while ($item = mysqli_fetch_assoc($items))
{?>
<input type=hidden value='<?=$item['good'];?>' name='itemId'>
<b><?=$item['good'];?></b><br>
Price: <?=$item['price'];?>$<br>
<input type=text name='amount'><br>
<input type=submit name='add' value='Add to cart'><br>
<?php }
?>
</form>