PHP清理代码$\u发布

PHP清理代码$\u发布,php,post,cart,Php,Post,Cart,$\u POST['amount']无法获取商品的数量,$\u POST['itemId']显示数据库中的最后一个项目,但不是您单击的项目。因此,所有商品都会显示,但表单只接收最后一个商品,而不是单击的商品 <div class=cart> <b>Cart:</b><br> <?php if(isset($_POST['add'])) {?> <?=$_POST['amount']?

$\u POST['amount']无法获取商品的数量,$\u 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>

购物车:


价格:$



在代码中,您正在同一表单元素内部创建所有表单输入,并为每个元素重用相同的name属性。单击“提交”时,发送到服务器的是这些名称的最后一个实例。因此,如果您向
amount
添加一个数字,并在列表中不是最后一个项目的项目上单击submit按钮,您仍将收到
amount
itemId
的最后一个实例的值

要解决此问题,请将
移动到while循环内部(还包括循环末尾的
标记)

更改:

<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>


价格:$


致:



价格:$



在代码中,您正在同一表单元素内部创建所有表单输入,并为每个元素重用相同的name属性。单击“提交”时,发送到服务器的是这些名称的最后一个实例。因此,如果您向
amount
添加一个数字,并在列表中不是最后一个项目的项目上单击submit按钮,您仍将收到
amount
itemId
的最后一个实例的值

要解决此问题,请将
移动到while循环内部(还包括循环末尾的
标记)

更改:

<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>


价格:$


致:



价格:$



在while循环中移动
元素。现在,当您单击“提交”时,您有多个具有相同
名称
属性的项目。这是一个使用大写字母调用类的非常常见的标准:
Shop
在while循环中移动
元素。现在,当您单击submit时,您有多个具有相同
名称
属性的项。这是用大写字母调用类的一个非常常见的标准:
Shop
最好用文字解释更改了什么,这样,请大家(在本例中是OP)就不必知道了_我说OP是因为它看起来太本地化了。)最好用文字解释一下发生了什么变化,这样大家(在本例中是OP)就不必知道了_我说OP是因为它似乎太本地化了。)