0

私はウェブショップをやっています、そしてすべての製品はいくつかの変種を持つことができます。

すべての亜種は実際には独自の製品です。SKUは製品ごとに異なりますが、製品番号は「1つの製品」のすべてのバリエーションで同じです。

バリアントの組み合わせは、variantvaluesと呼ばれる別のテーブルに保持されます。製品のSKU、フィールド名、フィールド値があります。

私が3つの製品を持っているとしましょう。SKU:050500269 / SB / M、050500269 / SC / L、および050500269 / SC/M。

すべての製品の製品番号は同じです。0505002699。

製品には次のフィールドがあります:色、サイズ。

各製品の値は次のとおりです。

0505002699 / SB / M

カラー:ブラック

サイズ:小

0505002699 / SC / L

青色

サイズ:ミディアム

0505002699 / SC / M

赤色

サイズ:小


そのフロントエンドをループする方法についての手がかりを持っている人はいますか?最終結果は次のようになります:http://i.stack.imgur.com/rAxeG.png

(私にとっての)問題は、可能な「構成」をリストする方法を理解することです。

誰?

4

2 に答える 2

0

ネイサンの答えは実行可能ですが、より一般的なバージョンを検討することもできます(ここでは厳密に構文チェックするのではなく、突き刺すだけです):

create table configurations (
 id int auto_increment primary key,
 product_id int not null,
 name varchar(50) not null,
 value varchar(255) not null default "",
 FOREIGN KEY (product_id) REFERENCES product(id)
)

次に、気まぐれで新しいタイプの構成 (configurations.name) を作成し、それらをコードで処理できます。

select value from configurations where product_id=$product_id and name='color';
select value from configurations where product_id=$product_id and name='size';

さて、このアプローチの欠点は、在庫が問題になる可能性があることです。これに対処する別の方法は、アイテム テーブル (製品テーブル?) 内の相​​互に関連する個々のアイテムとしてそれらを保持することです。ビュー ページのコードでそれらを組み合わせますが、すべての青いシャツの在庫は赤いシャツとは別に維持できます。

于 2011-11-08T18:27:41.670 に答える
0

実装について簡単に考えてみます。

製品ごとに「構成」が異なる場合:

追加のテーブル:

size
  - code
  - descr

フェ:

S - Small
M - Medium

そして、製品とサイズの間の表:

product_size
   - product_id
   - size_code

フェ:

1 - S
1 - M
2 - S
...

色の場合:

product_color
   - product_id
   - color

フェ:

1 - #FFFFFF
1 - #000000
2 - #000000
...

次に、各製品のすべてのオプションを product_id で選択できます。

フェ:

SELECT color FROM colors WHERE product_id = $product_id;
SELECT size_code FROM product_size WHERE product_id = $product_id;

編集:うわー、あなたの質問の一部を読み違えました、ごめんなさい

于 2011-11-08T14:24:49.843 に答える