PHP:Track Quantity& Array的总价格

时间:2014-10-29 19:10:13

标签: php mysql arrays

在发布前浏览论坛。

我有一个独特的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)");

现在有这个问题

  • 允许多个条目,但产品只显示一次(因此我想跟踪数量)
  • 无法确定基于拉动物品的产品总计

在此之后我尝试将数组作为一个关联数组并将两个数组合并在一起,但我认为有一种更简单的方法可以做到这一点,只是不知道如何。

提前致谢。

1 个答案:

答案 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];