我尝试创建购物车。
我的问题:
在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>
答案 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]; ?>" />
您可以考虑删除[]