在发布前浏览论坛。
我有一个独特的PHP设置,我想跟踪购物车中商品的数量和总价。唯一的问题是我无法让它发挥作用。
这是我第一次在PHP中从头开始制作一些。
以下是我的设置的工作原理。
首先,我使用全局变量来解析和调用数据库中的某些项目。
在某些表单提交时,某些项目会返回。
特别是对于这个问题,我通过引用处理请求的另一个文件的链接传递一个值,即项目ID。
此文件创建购物车拉取的会话数组,并将ITEM ID引用到MYSQL数据库。它被称为$ _SESSION ['cart']。
这是我为代码写的内容;
// PASS ITEM ID TO ADD CART PAGE. WHERE pID = Product ID.
<?php
// Pull information from DB to translate into HTML
$results->data_seek(0);
while($row = $results->fetch_assoc()){
$pId = $row['ProductID'];
}
?>
<a href="addc.php?id=<?php echo $pId ?>"> Add to cart </a>
// ADD ITEMS TO CART
// Session
session_start();
// If empty cart set empty
if(empty($_SESSION['cart'])) {
$_SESSION['cart'] = array ();
}
// Store ID
$thisID = $_GET['id'];
// Push ID into Array
array_push($_SESSION['cart'],$thisID); // ADDS TO ARRAY
header('Location:cart.php'); // REDIRECTS TO CART
// NOW ON CART PAGE
// Convert Cart Session to Strings & Store
if(empty($_SESSION['cart'])) {
$_SESSION['cart'] = array ();
$itemId = 0;
} else {
$itemId = implode(",",$_SESSION['cart']);
}
// Reference Above Strings to DB
$results = run_my_query("SELECT * FROM Products WHERE ProductID IN ($itemId)");
现在有这个问题
在此之后我尝试将数组作为一个关联数组并将两个数组合并在一起,但我认为有一种更简单的方法可以做到这一点,只是不知道如何。
提前致谢。
答案 0 :(得分:3)
您应该使用产品ID作为购物车阵列中的钥匙,例如
$_SESSION['cart'][$thisID] = $quantity;
通过这种方式查看购物车中的特定商品更容易,无需在数组上循环或使用in_array()
。
根据评论请求,以下是您处理基本购物车操作的方式:
添加到购物车,或在购物车中更新数量:
$_SESSION['cart'][$productID] = $_POST['item_quantity'];
从购物车中删除:
unset($_SESSION['cart'][$productID]);
在购物车中获取产品ID:
$product_IDs_array = array_keys($_SESSION['cart']);
查看商品是否在购物车中,以及有多少商品:
$amount = isset($_SESSION['cart'][$productID]) ? false : $_SESSION['cart'][$productID];