更改购物车中的默认货币
如果此问题看起来像是可能的重复,那么我很抱歉。请把我链接到原文。更改购物车中的默认货币
我正在开发一款使用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
在管理面板,转换率将增加相对于默认货币类型。
在更改默认类型时,我可以更新货币表中的转换率。 但我不得不更新产品表中的费率。更改产品表中所有产品的价格,让我觉得我错了。
还有其他更好的方法吗?请指教。
我发现了一个解决方案,我不需要更新产品表..我将有一个HIDDEN货币类型,这将是默认的计算..产品表中的费率将始终是* 1到这种货币类型
可以进行必要的计算,在管理面板,使管理员仍然可以进入他的默认货币类型的新产品的速度..
太棒了,我认为这会最终变得更好。 – 2012-08-05 15:10:20
现在,我明白你的问题,我相对确定你将不得不更新两个表。如果您只是想以不同的转换率向用户展示表格,但保持底层成本相同,那么您可以始终将值存储在CurrencyType
type1
中,但在将其转换为type2
或type3
时,将其显示给用户时。但是,如果您希望Product
表中的实际值在更新默认值CurrencyType
时进行更新,而不仅仅是将它们显示给用户的方式,那么您必须更新这两个表。
幸运的是,SQL使得这非常简单,因为您所做的所有工作都是将当前的Rate值乘以您要更改的ConversionRate。所以,如果你有一个PHP变量存储新CurrencyType
的ConversionRate
你让它违约前:
UPDATE Product
SET Rate = Rate * oldConversionRate
应该更新的产品表中的所有行与新Product
率。让我知道,如果这是措辞混乱或你想要更多的澄清。
更新整个产品表并不是很好的做法。 – ravi404 2012-08-05 05:36:24
@ravz这将是一个更好的解决方案,将所有产品费率存储在数据库中的一个CurrencyType中,然后使用他们选择的ConversionType显示给客户端。这样,'Currency'表中的'ConversionRates'和'Product'表中的'Rates'都不应该改变。您的PHP代码将简单地将Product产品表中的“Rate”项与默认的“CurrencyType”的“ConversionRate”相乘。 – 2012-08-05 05:39:47
是否有您所需要的产品,而不是表的原因在php中做这些计算?这似乎是多余的。 – 2012-08-05 04:59:22
管理员将以默认货币输入新产品的费率。 – ravi404 2012-08-05 05:02:45
对不起亚历克斯无法得到你。你能解释一下吗? – ravi404 2012-08-05 05:16:50