【问题标题】:What is the best way to add discounts to ordering process?在订购过程中添加折扣的最佳方式是什么?
【发布时间】:2012-04-30 17:32:02
【问题描述】:

假设一个网站销售产品并希望使用优惠券代码提供折扣。构建这个的最佳方法是什么?这就是我的想法,你能确认这是一个正确的方法吗?请问还有什么建议吗?别人是怎么做到的?

这是我的想法:

订单中将包含给定的产品作为订单项目。将有一个输入优惠券代码输入,如果输入正确的代码,一个负值的新行项目将添加到订单中。换句话说,现在订单将包含两个项目:

  • 产品 - 10 美元
  • 折扣-$5 总计:5 美元

这是处理折扣和优惠券的正确方法吗?

【问题讨论】:

    标签: php architecture schema structure


    【解决方案1】:

    有多种方法可以做到这一点。没有一种解决方案。但是,这里有一些陷阱

    • 用户从购物车中删除了折扣商品?
    • 用户添加了多个相同的优惠券代码?
    • 用户的购物车是空的?

    最后,在订单完成时应用折扣的解决方案将最不容易出现上述情况。不要试图跟踪订单并在数据库或会话中添加标志。这将是徒劳的。您真的想专注于测试是否满足优惠券的条件。设想applyCoupons()eligibleForDiscount($coupon) 等函数。

    【讨论】:

      【解决方案2】:

      您应该在数据库中有两个关系表。 优惠券有不同的折扣价值?

      您可能有带有 ID、代码、折扣的 coupons 表,并且您可以像这样(ABC、BBC、CCS)或每行一个以逗号分隔的优惠券代码存储在 code 字段中。

      如果用户在输入字段中输入优惠券 ID,请在数据库中检查,阅读 discount 并执行 $final_price = $price * $discount(假设您将折扣存储为 0.2(20%)等等上。

      如果您想要逗号分隔的优惠券代码,请执行以下操作:

      $discount = 1;
      while ( $var = mysql_fetch_assoc($result)) {
         $coupon = explode(',', $var['code']);
         $count = count($coupon);
         for ($i = 0; $i <= $count; $i++) {
           if($_POST['input_coupon'] == $coupon[$i]) { $discount = $var['discount'] }
         }
      

      然后你 $final_price = $price * $discount ; 你可以把它放在一个 AJAX POST 请求中,瞧;

      或者每个优惠券代码使用一行,更简单。

      或者做一个 JOIN 查询(​​通过 id 链接的表)来简化这个过程。

      【讨论】:

        猜你喜欢
        • 2013-01-19
        • 2012-06-24
        • 1970-01-01
        • 1970-01-01
        • 2014-05-28
        • 1970-01-01
        • 1970-01-01
        • 2014-03-04
        • 1970-01-01
        相关资源
        最近更新 更多