我要將商品加入購物車
我想先丟到SESSION去記憶
只是我不懂原理是什麼?
有大神可以幫我解析嗎??
會有商品名稱 圖片 單價 數量 小計
甚至可以移除該商品
丟到SESSION去記憶要怎麼實現?
以往我 SESSION 都是單一值
例如 $_SESSION['abc'] = 'abc';
可以保存多個?且每個都有 key, value
我原本是想說丟到數據庫記憶
但這方法對嗎?
我要將商品加入購物車
我想先丟到SESSION去記憶
只是我不懂原理是什麼?
有大神可以幫我解析嗎??
會有商品名稱 圖片 單價 數量 小計
甚至可以移除該商品
丟到SESSION去記憶要怎麼實現?
以往我 SESSION 都是單一值
例如 $_SESSION['abc'] = 'abc';
可以保存多個?且每個都有 key, value
我原本是想說丟到數據庫記憶
但這方法對嗎?
$_SESSION全局变量中可以存储数组
session_start();
$_SESSION['goods'] = [
'name' => 'goodsname',
'pic' => 'url',
'price' => 10.10,
'num' => 100,
'summary' => 999.50
];
print_r($_SESSION['goods']);
这样存储的数据在用户关闭浏览器后就消失了,新开浏览器窗口将创建新的会话,之前的会话会在过期时自动销毁
简单点来说,操作SESSION
可以视为操作数组一样;
楼主说session保存购物车信息如何操作,demo如下:
// 假如SESSION里的购物车商品保存的是这种数据形式
$_SESSION['cart']['goods'] = [
'goods_id' => [
'goods_name' => 'goods_name',
'price' => 'price',
'spec' => 'spec',
'num' => 'num'
],
'1' => [
'goods_name' => '橙子',
'price' => '15.00',
'spec' => '脐橙;',
'num' => '10'
],
'2' => [
'goods_name' => '苹果',
'price' => '10.00',
'spec' => '红苹果;',
'num' => '5'
]
];
/**
* 存储商品信息到购物车
* 1、先取出SESSION购物车里的商品数据
* 2、生成新的商品数据
* 3、保存到SESSION
*/
$session_goods = $_SESSION['cart']['goods'];
$session_goods[11] = [
'goods_name' => 'T恤',
'price' => '69.00',
'spec' => '颜色:红色;品牌:以纯;',
'num' => '1'
];
$_SESSION['cart']['goods'] = $session_goods;
/**
* 购物车里商品ID为1的商品需要删除
* 并更新保存到SESSION
*/
unset($goods['1']);
$_SESSION['cart']['goods'] = $goods;
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
6 回答1.1k 阅读
你的做法和想法都是正确的,但具体实现要看业务场景。正常情况下
用户登录状态下加入购物车应当记录同步其他端(存入数据库)
如用户未登录则存在session中
如用户未登录添加的购物车,在用户登录后自动记录到数据库中
关于电商的设计可以看看我的文章
https://segmentfault.com/a/11...