我正在为我的网站制作购物车 当用户在购物车中添加内容时,应将item_id和数量插入到我的数据库的items列中 item列应该包含如下字符串:
1:5;6:2;13:1
item_id:数量; item_id:数量等
我已经获得了插入部分,但是当用户想要查看购物车时,需要将字符串拆分为数组并从另一个表中获取项目
数组示例:
1 => 5,
6 => 2,
13 = 1
我尝试使用spliti(“;”$ raw);
但没有得到我想要的东西。
当用户从购物车更新/删除产品时也是如此 当用户更新/删除产品时,它必须搜索项目中的字符串并找到产品的当前位置。
任何帮助将不胜感激:)
答案 0 :(得分:4)
由于您正在构建自己的购物车,因此请使用正确规范化的架构正确完成。这意味着您需要避免同时执行多个操作的“特殊”值。
所以这里显而易见的改进是:
table users:
id
...
table products:
id
...
table cart_items:
user_id
product_id
quantity
CRUD查询实现起来非常简单,也非常快。
答案 1 :(得分:0)
首先,我认为在您的订单/购物车表中将您的商品作为字符串不是一个好主意。你以这种方式遇到很多问题(你已经碰到了一对)。
最好有hasMany
关系。下面所示的设计之类的东西是理想的。
Order Table : id, date, total, more, fields
OrderItem Table : id, order_id, item_id, value, more, fields //item_id is a ref to your Items/Product table
这使您可以正确地将商品与订单相关联,并且可以毫无问题地进行插入和更新。
至于您当前的问题,您需要将其拆分两次
$items = 1:5;6:2;13:1;
$items_arr = explode(';', $itemrs);
$new_items = array();
foreach ($iterms_arr as $item) {
$pieces = explode(':', $item);
//might want to do some error checking on whether the indices exist
$new_items[$pieces[0]] = $pieces[1];
}