2

如果这个问题看起来可能重复,我很抱歉。请把我链接到原文。

我正在用 php 和 mysql 开发一个购物车。

在管理面板中,可以设置多种货币类型,并且可以添加新的货币类型。它将具有默认货币和覆盖率。我的问题是更改默认货币类型时。

这就是我的桌子的样子

**Currency**
------------------------------------------------------------------------------
ID    CurrencyType        ConversionRate           IsDefault
------------------------------------------------------------------------------
1       type1                 -                      y
2       type2                 2.0                    n
3       type3                 3.0                    n
------------------------------------------------------------------------------

**Product**
------------------------------------------------------------------------------
ID     Rate        
------------------------------------------------------------------------------
1      100
2      200      
------------------------------------------------------------------------------

这里产品 1 的价格为

(100) for currency type1
(100 * 2.0) for currency type2
(100 * 3.0) for currency type3

在管理面板中,将根据默认货币类型添加兑换率。

在这里,在更改默认类型的同时,我可以更新货币表中的兑换率。但我必须更新产品表中的费率。更改产品表中所有产品的费率,让我觉得我错了。

还有其他更好的方法吗?请指教。

4

2 回答 2

1

现在我理解了您的问题,我相对确定您必须更新这两个表。如果您只是想以不同的转换率向用户显示表格但保持基本成本相同,那么您始终可以将值存储在CurrencyType type1但在向用户显示时将其转换为phptype2type3php。但是,如果您希望在Product更新 default 时更新表中的实际值CurrencyType,而不仅仅是更新它们向用户显示的方式,那么您必须更新两个表。

幸运的是,SQL 使这变得非常容易,因为您实际上所做的只是将当前的 Rate 值乘以您要更改的 ConversionRate。因此,如果您在将其设为默认值之前有一个 php 变量存储ConversionRate新的变量:CurrencyType

UPDATE Product
SET Rate = Rate * oldConversionRate

Product应使用新费率更新 Product 表中的所有行。让我知道这是否措辞令人困惑,或者您需要更多说明。

于 2012-08-05T05:33:35.593 回答
0

我找到了一个不需要更新产品表的解决方案。我将有一个隐藏的货币类型,这将是计算的默认值。产品表中的汇率对于这种货币类型将始终是 *1

可以在管理面板中进行必要的计算,以便管理员仍然可以在他的默认货币类型中输入新产品的汇率。

于 2012-08-05T06:01:55.123 回答