2013-04-11 125 views
1

我有一个购物车,它在Sessions中存储每件商品的itemIds和数量,直到我们结帐。订单插入,同一订单中的多个项目

客户支付后,我继续将信息插入到我的ORDERS表中的数据库中。

我的问题是:我应该如何处理一个客户有多个项目的订单?多个数量很简单,因为我的ORDERS表有一个'数量'字段。但是,多个项目呢?建议什么? 我应该为同一个订单插入不同的每个项目的行吗?

目前我有这样的:

$query = "INSERT INTO orders (itemId, quantity, clientPrice, firstName, lastName, email, phoneNumber, address, city, zip) 
VALUES (:itemId, :quantity, :clientPrice, :firstName, :lastName, :email, :phoneNumber, :address, :city, :zip)"; 
+0

多个数量和多个项目有什么区别?对不起,我真的不明白。 – 2013-04-11 14:59:49

+0

您应该有一个'orders'表和一个'order_items'表。将'item_id'存储在'order_items'表中是一个坏主意,因为当您为现有商品进行价格更改时,它会更改客户在订单中实际支付的价格。 – BenM 2013-04-11 15:00:01

+1

简短的回答是:你不会在一张桌子上全部做完。您使用多个表。 – Crontab 2013-04-11 15:00:07

回答

1

在我看来,你应该创建2个表至少这样的字段:

订单

id | user_id | date

ordered_items - 你必须有完整的物品表好吧,除了这张表格之外,还包含有关你的产品的所有信息。 Price这里是需要的只是因为您的项目的价格可以改变,你不能改变已经创建的订单上花费的金额。

item_id | order_id | quantity | price

所以,你可以使用,然后连接和计算你需要的一切 - 表连接将完成所有的工作。

+0

任何价格变化将在我的主要项目表中完成,这是独立于这些表格。事情是,我不会有用户,只有订单。所以每个订单都是独立的。你会在哪里推荐客户的信息?单独的桌子呢? – samyb8 2013-04-11 15:10:43

+0

如果您不存储用户帐户 - 那么您可以将客户信息存储在'orders'表中。这应该工作得很好。 – vikingmaster 2013-04-11 15:14:09