代码之家  ›  专栏  ›  技术社区  ›  Paddy Hallihan

php/sql/ajax-基于所选上一选项的下拉菜单中的更新选项

  •  0
  • Paddy Hallihan  · 技术社区  · 7 年前

    我正在创建一个电子商务网站。

    目前我有一个名为“属性标题”的表,如下所示:

    ID  NAME
    1   size
    2   colour
    

    然后我有一个名为“attribute_values”的表,如下所示:

    ID  ATTRIBUTE_ID    VALUE
    1   1               small
    2   1               medium
    3   1               large
    4   2               red
    5   2               green
    6   2               blue
    

    然后,我的产品表将包含一系列适用于相关产品的属性,因此尺寸和颜色将 ['1','2'] . 然后,我有一个定价表,它为产品的每个变体都提供了一个价格,并为属性提供了多维数组。所以一个小的红色产品 ['1'=>'1','2'=>'4'] 作为属性。

    我的产品页面上有一个大小下拉框和一个颜色下拉框,但并非所有的组合都可能存在,例如,我们只有一个中等大小的绿色产品。

    因此,如果有人选择绿色作为颜色,那么我想更新下拉列表,以便不显示较小的尺寸。

    目前,他们可以选择任何颜色或任何尺寸,然后我检查看看我的定价表中是否存在这种组合,如果没有,我只是有一个警告,但我不希望他们能够选择一个不存在的选项。

    对于我如何实现这一目标的任何想法或建议都将非常感谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   The Impaler    7 年前

    我以前在电子商务工作过。

    你的模型不完整。你现在缺少的是 SKU 实体(库存单位)。这个实体模拟了您之前概述的概念的存在。它还通常管理产品的每个组合的库存可用性(即其名称的来源)。

    电子商务网站通常显示“产品”,而不是SKU(直接)。例如,“V领旅行衫”。在后台,您实际上有多个单产品的SKU。你可能有:

    create table sku (
      product_id int foreign key product (id),
      color_id int foreign key color (id),
      size_id int foreign key size (id),
      units_left int
    );
    
    select * from sku;
    
    color  size  units_left
    -----  ----  ----------
    Blue   M     10
    Blue   L     6
    Red    L     7
    Red    XL    0 -- no stock of this one today!
    Green  S     2
    

    您还需要决定是否显示真正没有库存的SKU(上面的示例中为红色,XL)。

    当有更多库存可用时,只需将这些值添加到sku表中。如果出现新的组合,您可能需要添加额外的行(例如绿色,m)。