0

我一直在开一家商店,所有商品都在那里。我在一个while循环中输出它们。

正如你所看到的那样,有一个按钮,用户可以购买物品。但是,为什么单击该<input type=submit>按钮时什么也没有发生?

<?php
    $result = mysqli_query($mysqli,"SELECT * FROM `shop` WHERE type='hoved' order by item ASC") or die(mysqli_error());

    while($row = mysqli_fetch_array($result)){
        echo "<img src='img/".$row['type']."/".$row['item'].".png' width='130' height='70' style='margin-left: 15px;'/>";
        echo "<br />";
        echo "<a href='?shop'><input type='submit' style='width: 100px; height: 25px;' name='".$row['id']."' value='".$row['price']."'/></a>";
        echo "<br /><br /><br />";

        if(@$_GET['shop']){
            $id = $_GET['id'];
            mysqli_query($mysqli,"UPDATE `man` SET head = '".$row['item']."' WHERE `id` = '".$id."'") or die(mysqli_error());
        }   
    }
?>
4

2 回答 2

0
<?php

$mysqli = new mysqli("localhost", "username", "password", "database");
$sql = "SELECT * FROM `shop` WHERE type='hoved' ORDER BY item ASC";
$result = $mysqli->query($sql);

while($row = $result->fetch_array()){
     echo "<img src='img/".$row['type']."/".$row['item'].".png' width='130' height='70' style='margin-left: 15px;'/>";
     echo "<br />";
     echo "<form action='' method='GET'>
    <input type='hidden' value='" . $row['id']. "' name='shop'>
    <input type='submit' style='width: 100px; height: 25px;' value='".$row['price']."'/></form>";
    echo "<br /><br /><br />";
    if(isset($_GET['shop'])){
        $id = $_GET['shop'];
        $mysqli->query("UPDATE `man` SET head = '".$row['item']."' WHERE id='".$id."'") or die(mysqli_error());
    }else{
    }
}

?>
于 2015-07-04T00:12:16.647 回答
0

问题是 PHP 中的每个表单只能有 1 个提交按钮。单击提交时,action内部的属性会<form action="processForm.php"></form>调用新脚本或函数。

由于您正在为商店中的每个元素创建一个提交按钮,因此您还需要为每个按钮创建一个新的表单标签。

一个更好的选择是使用<input type="button" onclick="loadItemToCart($itemId)" />which 将调用一个函数来将一个元素插入一个代表您的用户购物车的数组中。当用户选择单击继续或签出时,您可以将整个项目数组发送到将处理订单的下一个脚本,而不是每个元素单独。

您可以使用以下标签执行此操作:

<input type="hidden" value="itemsArray" name="cart" />

这应该是解决您的问题的最简单方法。

于 2015-07-04T00:13:17.627 回答