0

我尝试创建一个购物车。

我的问题:

在 prodctslist.php 中,我显示所有产品(使用 sql 查询,我使用 mysqli_fetch_array 进行显示),并且我在每个产品的循环中放置了一个 html 按钮“添加到购物车”。我还放了一个 html 输入(隐藏),以便在每个循环中放置 product_id。

我想在客户端选择的 ilias.php 产品中使用 _POST。但它向我发布了所有product_id。

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <title>LabTsoum</title>
</head>
<body>
    <div id="container">
        <div id="logo">LabTsoum</div>
        <div class="menu">Welcome, <a class = "register" href="home.php"><?php print("$user"); ?></a> || <a class = "register" href="home.php">home</a> | <a class = "register" href="home.php">my cart</a> | <a class = "register" href="sign_out.php">sign out</a></div>

        <?php
            $sql = "SELECT * FROM products";
            $result = mysqli_query($mysqli, $sql)
            or die("Error: ".mysqli_error($mysqli));
            $i=0;
            while($row = mysqli_fetch_array($result))
            {
                $product_id[$i] = $row['product_id'];
                ?><div class= "form"><?php
                echo $product_name = $row['product_name'];
                ?></br>price: <?php
                echo $product_price = $row['product_price'];
                ?> €&lt;/br>
                <form  action="ilias.php" enctype="multipart/form-data" method="POST">
                <input type="hidden" name="add2cart[]" value="<?php echo $product_id[$i]; ?>" />
                </br><input class="buttons" type="submit" value="add to cart" id="button"></div><?php
                $i=$i + 1;
            }
            mysqli_free_result($result);
        ?>

    </div>
</body>

和 ilias.php

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <title>LabTsoum</title>
</head>
<body>
    <div id="container">
        <div id="logo">LabTsoum</div>
        <div class="menu">Welcome, <a class = "register" href="home.php"><?php print("$user"); ?></a> || <a class = "register" href="home.php">home</a> | <a class = "register" href="home.php">my cart</a> | <a class = "register" href="sign_out.php">sign out</a></div>

        <?php

            foreach($_POST['add2cart'] as $i=>$s){
                echo $_POST['add2cart'][$i];
                }


        ?>

    </div>
</body>

4

2 回答 2

0

这里有两个问题:

没有结束</form>标签。如果您想使用提交按钮,则每次迭代都需要一个新表单。

// ...within loop
<form  action="ilias.php" enctype="multipart/form-data" method="POST">
  <input type="hidden" name="add2cart[]" value="<?php echo $product_id[$i]; ?>" />
  </br><input class="buttons" type="submit" value="add to cart" id="button"></div>
</form>

其次,虽然代码有效,但您可能不想将 id 作为数组提交:

<input type="hidden" name="add2cart[]" value="<?php echo $product_id[$i]; ?>" />

你可以考虑删除[]

于 2013-06-06T18:55:20.350 回答
0

很高兴您只在那里看到 ID。

在您的 ilias.php 中,使用以下代码。这将为您提供产品的所有数据。

foreach($_POST['add2cart'] as $i=>$s){
    if(is_numeric(mysql_real_escape_string($s)){
        $sql = "SELECT * FROM products WHERE product_id = " . $s . "";
        $rs = mysql_query($sql);
        $r = mysql_fetch_array($rs);
        var_dump($r); 
    }
}

或者,如果您不想拥有数组,请更改

<input type="hidden" name="add2cart[]" ... /> 

至:

<input type="hidden" name="add2cart" ... />

得到这样的产品:

$product_id = $_POST['add2cart'];
if(is_numeric(mysql_real_escape_string($product_id)){
    $sql = "SELECT * FROM products WHERE product_id = " . $product_id . "";
    $rs = mysql_query($sql);
    $r = mysql_fetch_array($rs);
    var_dump($r); 
}

并且不要忘记使用</form>标签

但是,如果不将产品 ID 存储在会话中,您将无法创建真正的购物车

于 2013-06-06T18:54:07.847 回答