从管理面板创建属性

时间:2012-04-23 02:24:07

标签: php mysql panel admin

我被要求为站点管理员提供在数据库表中创建属性的可能性。网站上有卖家和买家,每个卖家在添加特定产品时,填写特定产品所需的字段,然后发布产品。我对如何运作感到困惑。如果每个产品都有特定的字段,那么这意味着如果该网站有2.000个产品,我会有2000个表吗?我从来没有做过这样的事情,所以我真的不知道如何处理这个问题。此外,在管理功能上创建属性。假设该产品是番茄。管理员为称为“条件”的西红柿添加字段,并且它具有诸如“冻结”和“新鲜”之类的选项。然后,当一些卖家尝试制作番茄产品时,他们需要选择番茄的状况是新鲜的还是冷冻的。我想到了一个可能的解决方案,例如创建一个将保存文本的表,然后是另一个将保存文本的表。

product_tomato(product_id,user_id,名称,描述,条件)

product_select(select_id,product_id,select_text)

product_option(option_id,select_id,option_text)

所以,这就是我想象这样做的表格。因此,当admin将一个字段添加到product表时,我将在product表中添加一列,然后在prodcut_select表中创建新行,然后在product_option表中列出可能的选项。但后来我对如何在产品页面上显示它感到困惑。当我不知道管理员创建的列的名称是什么时,我将如何在代码中处理它?<​​/ p>

2 个答案:

答案 0 :(得分:4)

问题的措辞非常令人困惑,但我相信我会理解你所说的话。

不,你不会为每一件产品制作一张桌子,这会很快变得荒谬。您可以使用三个表轻松处理多个产品。

Tables:

Product
Product_Attributes
Seller_Product

让我们假设一个有条件的番茄的例子。

管理员决定他的网站现在将提供西红柿作为产品。他创建了一个产品,并将其添加到产品表中。然后,他决定西红柿应该具有“条件”属性,该属性具有两个可能的值,即新鲜和冷冻。因此,他会在Product_Attributes表中添加两行,包含三个字段(Product,Condition,Value)。

因此,您的表现在看起来像这样。

Product Table:

*Name |*
Tomato

Product_Attribute Table:

*Product | Attribute | Value*
Tomato | Condition | Fresh
Tomato | Condition | Frozen

最后,当您的卖家将商品添加到网站商店或其他任何商品时,您可以让他们将数据输入到一个表单中,该表单从该产品的Product_Attribute表中获取条件和潜在值。在这种情况下,只有一个属性,所以他们只会填写条件。让我们假设有两个卖家吉姆和汤姆分别出售新鲜和冷冻西红柿。最后三个表格看起来像这样。

Product Table:

*Name |*
Tomato

Product_Attribute Table:

*Product | Attribute | Value*
Tomato | Condition | Fresh
Tomato | Condition | Frozen

Seller Product Table:

*Seller | Product| Attribute | Value*
Jim | Tomato | Condition | Fresh
Tom | Tomato | Condition | Frozen

这样,您可以使用三个表存储有关产品的各种自定义字段。您应该根据需要进行规范化或非规范化,您可能只需要一张卖家产品的表格,并将其条件存储在单独的表格中。无论哪种方式,上述方法都可以完成工作。

答案 1 :(得分:1)

我相信这是一个很好的计划:

product_data - 产品ID,类别ID,名称,价格,描述

product_meta - 产品ID,attribute_name,attribute_value

product_variants - 产品ID,变体ID,变体值

您还需要为变体名称和类别名称/描述分别使用表格。

示例:

ID  | Category_ID | Name   | Price
251 | 14          | Tomato | 5.00

ID  | Attribute | Value
251 | Condition | Fresh
251 | Color     | Red

ID  | Variant_ID | Name | Value
251 | 50         | Size | Small
251 | 50         | Size | Huge

所以基本上你会有大约5-10个表(谷歌3步数据库规范化)。所有表都通过ID链接在一起。

所有您需要做的事情 - 使用JOIN语句和WHERE product_id条件检索值。