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

あなたの質問を理解したので、両方のテーブルを更新する必要があると比較的確信しています。テーブルを異なる変換率でユーザーに表示したいが、基礎となるコストを同じに保ちたい場合は、値をいつでも保存できますが、ユーザーに表示するときにphpにCurrencyType type1変換することがtype2できます。ただし、デフォルトを更新するときにテーブルtype3の実際の値を更新する場合は、ユーザーに表示される方法だけでなく、両方のテーブルを更新する必要があります。ProductCurrencyType

幸い、SQLを使用すると、現在のレート値に変更先のConversionRateを掛けるだけで、これが非常に簡単になります。したがって、デフォルトにする前ConversionRateに、新しいのを格納するphp変数がある場合:CurrencyType

UPDATE Product
SET Rate = Rate * oldConversionRate

ProductProductテーブルのすべての行を新しいレートで更新する必要があります。それが紛らわしい言い回しだったのか、それとももっと明確にしたいのか教えてください。

于 2012-08-05T05:33:35.593 に答える
0

製品テーブルを更新する必要のない解決策を見つけました。計算のデフォルトとなるHIDDEN通貨タイプを使用します。製品テーブルのレートは、この通貨タイプに対して常に*1になります。

管理者がデフォルトの通貨タイプで新製品のレートを入力できるように、管理パネルで必要な計算を行うことができます。

于 2012-08-05T06:01:55.123 に答える