2012-04-12 98 views
2

我正尝试为我的学校项目创建一个电子商务网站,但我对何时更新数据库中的数量感到困惑。当我要将产品添加到购物车或完成订单时?如果我减少当我在购物车中添加产品并且客户没有完成订单时的数量,那么我必须再次增加数量。所以唯一的方法是在客户完成订单时更新数量,并且如果两位客户进入最终然后放入一个if语句来检查数量以完成订单,如果其中一个客户拿走了最后一个产品,那么另一个客户会收到一条消息,如“我们非常抱歉,最后一个产品销售了2分钟之前”。 这是正确的思维方式吗?任何其他想法?(对不起,我的英语)电子商务网站,PHP,MySQL,数据库。任何想法?

回答

0

这就是所谓的竞赛条件。

在这种情况下,您需要更新第一位客户的股票以完成他们在交易中的交易,并通知其他客户股票已经消失,或者使用您的第一个想法并减少股票,但如果客户取消重复。要么与计划一起工作。

+0

谢谢,像我这样的东西,但我不确定我是否在正确的方向,谢谢我会在库存消失时通知其他客户。 – 2012-04-12 23:28:40

1

你有两种基本的选择,这两者都是有效的:

1)如果你是卖东西在高需求(你有一个有限的数量,预计大量用户购买它,就像一票音乐会或航班机票),当用户选择产品时,您可以“预订”产品(这是ticketmaster处理它的方式)。这总是通过与预订相关的定时器完成的,以便如果用户没有完成他的购买,该项目再次可用,并且一些其他用户可以购买它。

2)如果你有大量的股票,认为很多用户会对某个特定项目感兴趣,您可以将用户在会话中选择的项目存储起来,一旦一切顺利,就减少db中项目的数量。在这里,您还应该考虑何时对信用卡收费......如果您收费然后减少,您可能必须将其无效(为您付费)。因此,如果您没有耗尽用户订购的东西,那么在这种情况下理想的情况是减少库存和向数据库收取费用。如果你这样做,你应该向用户解释情况,让他找到“类似物品”或做任何你认为最好的......但是,我不会建议仍然使用剩余物品处理发票,它可能不会(即买一台电脑和一个背包,电脑是不可用的...你是否还应该运送背包?)

无论如何,希望它有帮助。

0

那么,这个问题的答案是非常密切的关系到这家特定的商店的政策。这里有几个可能性:

  • 防止缺货完全(你的建议;有些的“贪睡,你输”的态度)
  • 斯普利特顺序分为两个部分 - 可以立即实现的一个,而一个不能(你甚至可以预认证的延期交货的一部分,postauth当船舶)
  • 提醒客户,并让他们选择做什么

有几个,但是这是您需要评估的“政策决定”。

如果他们是独特的或停产的项目,那么你需要做相应的调整(显然客户不能等到他们回到库存)。

我也做到了这一点,客户可以要求在物品返回库存时得到通知。

我会建议您尽可能地增加您的转换次数,并限制客户的挫折感。

0

当我试图建立我的第一家电子商店时,我遇到过类似的问题。我做的一件事就是在db中提供一个临时存储,例如current_stock,并用它作为伪存储。当一个顾客将该物品放入购物车时,该数量将从伪存储中扣除,实际库存在订购时扣除。伪股票成为浏览该网站的用户的可见股票。

希望它有帮助!