Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在订购过程中增加折扣的最佳方式是什么?_Php_Architecture_Schema_Structure - Fatal编程技术网

Php 在订购过程中增加折扣的最佳方式是什么?

Php 在订购过程中增加折扣的最佳方式是什么?,php,architecture,schema,structure,Php,Architecture,Schema,Structure,假设一个网站销售产品,并希望使用优惠券代码进行折扣。构建此结构的最佳方式是什么?这是我的想法,你能确认这是一个正确的方法吗?还有其他建议吗?别人是怎么做的 以下是我的想法: 订单中将包含一个给定的产品作为订单项。将有一个输入优惠券代码的输入,如果输入了正确的代码,将向订单添加一个具有负值的新行项目。换句话说,现在的订单将包括两项: 产品-$10 折扣-$5 总计:5美元 这是处理折扣和优惠券的正确方法吗?有多种方法可以做到这一点。没有一个解决办法。然而,这里有一些陷阱 用户是否从购物车中删

假设一个网站销售产品,并希望使用优惠券代码进行折扣。构建此结构的最佳方式是什么?这是我的想法,你能确认这是一个正确的方法吗?还有其他建议吗?别人是怎么做的

以下是我的想法:

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

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

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

有多种方法可以做到这一点。没有一个解决办法。然而,这里有一些陷阱

  • 用户是否从购物车中删除折扣项目
  • 用户是否添加多个相同的优惠券代码
  • 用户是否有空购物车

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

您可能有带有id、代码、折扣的
优惠券
表,您可以在
code
字段中以逗号分隔优惠券代码(ABC、BBC、CCS)或每行一个

如果用户在输入字段中输入优惠券id,请在数据库中进行检查,读取
折扣
,然后执行$final_price=$price*$折扣(假设您将折扣存储为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'] }
   }
美元折扣=1;
而($var=mysql\u fetch\u assoc($result)){
$优惠券=分解(“,”,$var['code']);
$count=count($优惠券);
对于($i=0;$i)