如何在一段时间内使用一个值(使用_Post)(mysqli_fetch_array)

时间:2013-06-06 18:49:39

标签: php cart

我尝试创建购物车。

我的问题:

在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'];
                ?> €</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>

2 个答案:

答案 0 :(得分: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,您将无法创建真正的购物车

答案 1 :(得分: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]; ?>" />

您可以考虑删除[]