2012-08-05 53 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

相關問題