PHP + MySQL中的前端产品变体?

时间:2011-11-08 14:14:25

标签: php mysql variants

我正在做一个网上商店,每个产品都有几种变体。

所有变种实际上都是他们自己的产品。每种产品的SKU不同,但“一种产品”的所有变体的产品编号相同。

变体组合保存在名为variantvalues的单独表中。有产品SKU,fieldname和fieldvalue。

假设我有3个产品。 SKU:0505002699 / SB / M,0505002699 / SC / L和0505002699 / SC / M.

所有产品的产品编号相同; 0505002699。

产品包含以下字段:颜色,尺寸。

这些是每种产品的价值:

0505002699 / SB / M

颜色:黑色

尺寸:小

0505002699 / SC / L

颜色:蓝色

尺寸:中等

0505002699 / SC / M

颜色:红色

尺寸:小


任何人都知道如何循环前端?最终结果应该是:http://i.stack.imgur.com/rAxeG.png

问题(对我而言)是弄清楚如何列出可能的“配置”。

任何?

2 个答案:

答案 0 :(得分:0)

快速思考实施:

如果每种产品的“配置”都是可变的:

额外表格:

size
  - code
  - descr

fe:

S - Small
M - Medium

然后是产品和尺寸之间的表格:

product_size
   - product_id
   - size_code

FE:

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

对于颜色:

product_color
   - product_id
   - color

FE:

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

然后,您可以按product_id为每个产品选择所有选项。

FE:

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

编辑:哇,我误读了你的一部分问题,抱歉

答案 1 :(得分:0)

虽然Nathan的答案是可行的,但你可能会考虑一个更通用的版本(这里没有严格的语法检查,只是刺了一下):

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';

现在,这种方法的缺点是库存可能是一个问题,因此处理此问题的另一种方法是将它们作为项目表(产品表?)中彼此相关的单个项目。将它们合并到您的视图页面的代码中,但所有蓝色衬衫的库存可以与红色衬衫分开维护。