我尝试创建一个购物车。
我的问题:
在prodctslist.php中,我显示了所有产品(对于sql查询,我使用了mysqli_fetch_array进行显示),并且我在循环中放置了一个html按钮“Add to Cart”,用于每个产品。此外,我还在每个循环put那里放置了一个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>
null
和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>
null
你在那里只看到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);
}
不要忘记使用标记
但是,如果不将产品ID存储在会话中,您将无法创建真正的购物车
这里有两个问题:
没有结束的标记。如果要使用submit按钮,则需要为每次迭代提供一个新表单。
// ...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作为数组提交:
”/>
您可以考虑删除[]