【发布时间】:2013-07-29 09:20:02
【问题描述】:
我正在创建一个购物车。仅使用会话变量。我想要一些简单的东西,没有数据库,它只用于初始系统(以后可能使用数据库和登录)
我点击一个产品并使用 URL 添加 SESSION 变量
示例产品:橙色
发送网址
site.com/?page=buy&add=Orange&type=fruit
那么……
session_start();
//Create 'cart' if it doesn't already exist
if (!isset($_SESSION['SHOPPING_CART'])){ $_SESSION['SHOPPING_CART'] = array(); }
if (isset($_GET['add'])){
//Adding an Item
//Store it in a Array
$ITEM = array(
//Item name
'name' => $_GET['add'],
'type' => $_GET['tipo'],
//Item Price
);
对于打印,我使用:
$itemType = "";
foreach ($_SESSION['SHOPPING_CART'] as $itemNumber => $item) {
if($itemType == $item['type']) {
// skip...don't print again
} else {
echo $item['type'];
}
echo $item['name'];
$itemType = $item['type'];
}
但我的问题是,当我打印时,我看到这样的内容:
Fruit:
Orange
Orange
Apple
Food
Meat
有人可以告诉我如何只出现一次“水果”。我如何比较已经是重复的? 只有 1 个橙色。
Fruit:
Orange
Apple
Food
Meat
【问题讨论】:
-
添加内容时,检查是否尚未添加。但在购物车中,您可能想要添加多个相同种类的商品,因此请考虑保存计数。
-
您显示的代码不应该发生这种情况;你可以
var_dump($_SESSION['SHOPPING_CART']);吗? -
您应该使用相关产品的 ID 键入购物车,例如
$_SESSION['cart'][$productID] = array('details of product here');。然后,将所有东西都放在一个地方就很简单了。