Php 折扣计算

Php 折扣计算,php,discount,Php,Discount,我目前正在为我公司的网站设计一个数据库。我想创建一个表,它将保存有关我们折扣的信息(逻辑),这样我就可以用折扣ID调用一个函数,我的php代码将计算新的价格。我的问题是,每个折扣都有不同的逻辑。例:10%折扣,10美元折扣,一送一,三买五折 如何将其存储在数据库中,以便代码能够自行计算折扣?数据库不存储仅逻辑数据。将此字段分为三个字段: 折扣金额(整数) 折扣类型(枚举;可能的值:“百分比”、“金额”) 买一送N(int;每买一件免费的数字) 因此,对于一个折扣,您可以存储以下内容: | d

我目前正在为我公司的网站设计一个数据库。我想创建一个表,它将保存有关我们折扣的信息(逻辑),这样我就可以用折扣ID调用一个函数,我的php代码将计算新的价格。我的问题是,每个折扣都有不同的逻辑。例:10%折扣,10美元折扣,一送一,三买五折


如何将其存储在数据库中,以便代码能够自行计算折扣?

数据库不存储仅逻辑数据。将此字段分为三个字段:

  • 折扣金额(整数)
  • 折扣类型(枚举;可能的值:“百分比”、“金额”)
  • 买一送N(int;每买一件免费的数字)
因此,对于一个折扣,您可以存储以下内容:

| discount amount | discount type | buy one get one free | ---------------------------------------------------------- | 10 | 'percent' | | |折扣金额|折扣类型|买一送一| ---------------------------------------------------------- |10 |“百分比”| 另一方面,如果BOGOF适用:

| discount amount | discount type | buy one get N free | ---------------------------------------------------------- | | | 1 | |折扣金额|折扣类型|买一送N| ---------------------------------------------------------- | | | 1 |
然后将由您的PHP接收这些值并相应地采取行动。

您必须创建带有以下字段的折扣表,例如:

  • 折扣\u id-折扣的id
  • 折扣百分比%(如果为0,则为其他类型的折扣)
  • 金额-折扣金额,单位为美元(如果为0,则为其他折扣) (类型)
  • 物品-购买物品时的免费物品数量(一送一) (在你的例子中)
  • 购买的物品-条件,在什么情况下您会给予折扣(如果0- (无条件)

  • 也可以为字段指定其他名称。根据价值,您可能知道什么类型的折扣以及给予折扣的条件。

    这是我通常从多层方法开始的地方,因为它不仅用于计算,而且可能用于在实际网站上显示。我从两张桌子开始

    Promotion Table
    | id | discount_type | qty_products | discount_amount | free_products |
    -----------------------------------------------------------------------
    |  1 | BOGO          |       2      |        0        |       1       |
    
    
    Sales Promo
    | id | promo_id | product_id | activation_date | expiration_date |
    ------------------------------------------------------------------
    |  1 |     1    |     222    |   '2012-04-23'  |   '2012-05-12'  |
    

    然后代码将查看它是否在日期范围内,并应用折扣或B1G1/B1G2。表不是精确的,而是一个开始。

    折扣类型(百分比折扣、金额折扣、买一送一等)、折扣值(…)
    ,然后添加一些代码…尚未编写代码-首先设计数据库。但我正试着提前考虑。也许你可以为
    买X送Y免费/get Z%优惠推广更多。这并不是一个详尽的答案——我只是想让他说对话,也就是说,把逻辑排除在数据库之外。似乎我应该有一个表,其中有大量列指定所有逻辑。折扣类型、折扣装载、过期日期、促销代码……很多列不一定是坏事。这是数据库正常化的标志。(这也意味着在必要时分为不同的表)。不要认为数据库是存储逻辑的——它们不是。它们存储数据。您的环境(例如PHP)符合逻辑。我希望能够不断添加新的折扣和优惠券,而无需每次更改或重写代码。我只需要在数据库中输入一些数据,它就可以运行了。那么逻辑在哪里呢?谢谢你的耐心。谢谢。但是B1G1/B1G2是什么意思?@Diane B1G1-买一个/买一个B1G2-买一个/买两个