2012-08-05 52 views
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 

在管理面板,转换率将增加相对于默认货币类型。

在更改默认类型时,我可以更新货币表中的转换率。 但我不得不更新产品表中的费率。更改产品表中所有产品的价格,让我觉得我错了。

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

+0

是否有您所需要的产品,而不是表的原因在php中做这些计算?这似乎是多余的。 – 2012-08-05 04:59:22

+0

管理员将以默认货币输入新产品的费率。 – ravi404 2012-08-05 05:02:45

+0

对不起亚历克斯无法得到你。你能解释一下吗? – ravi404 2012-08-05 05:16:50

回答

0

我发现了一个解决方案,我不需要更新产品表..我将有一个HIDDEN货币类型,这将是默认的计算..产品表中的费率将始终是* 1到这种货币类型

可以进行必要的计算,在管理面板,使管理员仍然可以进入他的默认货币类型的新产品的速度..

+0

太棒了,我认为这会最终变得更好。 – 2012-08-05 15:10:20

1

现在,我明白你的问题,我相对确定你将不得不更新两个表。如果您只是想以不同的转换率向用户展示表格,但保持底层成本相同,那么您可以始终将值存储在CurrencyTypetype1中,但在将其转换为type2type3时,将其显示给用户时。但是,如果您希望Product表中的实际值在更新默认值CurrencyType时进行更新,而不仅仅是将它们显示给用户的方式,那么您必须更新这两个表。

幸运的是,SQL使得这非常简单,因为您所做的所有工作都是将当前的Rate值乘以您要更改的ConversionRate。所以,如果你有一个PHP变量存储新CurrencyTypeConversionRate你让它违约前:

UPDATE Product 
SET Rate = Rate * oldConversionRate 

应该更新的产品表中的所有行与新Product率。让我知道,如果这是措辞混乱或你想要更多的澄清。

+0

更新整个产品表并不是很好的做法。 – ravi404 2012-08-05 05:36:24

+1

@ravz这将是一个更好的解决方案,将所有产品费率存储在数据库中的一个CurrencyType中,然后使用他们选择的ConversionType显示给客户端。这样,'Currency'表中的'ConversionRates'和'Product'表中的'Rates'都不应该改变。您的PHP代码将简单地将Product产品表中的“Rate”项与默认的“CurrencyType”的“ConversionRate”相乘。 – 2012-08-05 05:39:47

相关问题