gpt4 book ai didi

mysql - 从数据库生成 HTML 表单并将值存储到数据库中

转载 作者:搜寻专家 更新时间:2023-10-30 20:10:08 25 4
gpt4 key购买 nike

我有一个“t_form”表和一个“t_attribute”表。它看起来有点像下面。

表单表格

form_id | form_name    | description
-----------------------------------
1 | Laptop | Possible attributes are Model, Screen Size, OS, Cd Player
2 | Mobile | Possible attributes are Model, OS
3 | Tablet | Possible attributes are Model, Screen size, OS

属性表

attribute_id | attribute
------------------------
1 | Model
2 | Screen Size
3 | OS
4 | Cd Player
  1. 笔记本电脑类型的可能属性是型号、屏幕尺寸、操作系统、CD 播放器。
  2. 类型移动表单的可能属性是型号、操作系统。
  3. Tablet 表单类型的可能属性是型号、屏幕尺寸、操作系统。

Form_Attribute 表

form_id | attribute_id
----------------------
1 | 1
1 | 2
1 | 3
1 | 4
2 | 2
2 | 2
3 | 2
3 | 2
3 | 2

我将根据用户从数据库中选择的表单类型(笔记本电脑、手机或平板电脑)生成如下所示的 HTML 表单(带有表单字段)。

对于笔记本电脑:

enter image description here

对于移动设备:

enter image description here

对于平板电脑:

enter image description here

问题:这是我的问题。

  1. 将用户输入的数据存储到数据库中的更好方法是什么。
  2. 从数据库中检索数据的更好方法是什么,因为我想实现过滤选项,例如:我想获取笔记本电脑屏幕尺寸从 14 到 16 可用的结果.

过滤器:

enter image description here

请提供一个可行的解决方案和一些例子,以便我更好地理解并帮助我实现这一目标。

最佳答案

我想你可以找一张像这样的 table

Form_Attribute_Values 或 Items

item_id |    form_id | attribute_id | value
------------------------------------------------
1 | 1 | 1 | SuperLap
1 | 1 | 2 | 15
1 | 1 | 3 | MS-DOS 6
1 | 1 | 4 | Toshiba

通过这种方式,您将能够查询输入的单个项目,还可以按表单、属性或属性值进行过滤。

您的 Form_Attribute 表将非常方便地为特定表单生成表单(即当用户想要输入笔记本电脑或手机时)。

Items 表将是您在插入后存储项目或查询它们的地方。

您还可以在末尾添加一个时间戳列来存储项目的保存时间,如果您的数据将由多个用户填充,还可以添加一个 User_id 列。如果您可以存储商店中没有的商品,或者您可以在单独的表中保留可用性,那么也许还有一个额外的可用性列。

如果您可以从过滤表单中获取表单和属性 ID,则对屏幕尺寸为 14-16 的笔记本电脑的查询将如下所示:

    SELECT item_id, 
form_name,
attribute_name,
value
INNER JOIN form
ON item.form_id = form.form_id
INNER JOIN attribute
ON item.attribute_id = attribute.attribute_id
WHERE item_id IN (-- here I select for Laptop and Screen Size dimension
SELECT item_id
FROM item
WHERE form_id = 1
AND attribute_id = 2
AND item.value BETWEEN 14 and 16
)

否则你会需要一些更复杂的东西:

    SELECT item_id
FROM item
INNER JOIN form
ON item.form_id = form.form_id
INNER JOIN attribute
ON item.attribute_id = attribute.attribute_id
WHERE item_id IN (-- here I select for Laptop and Screen Size dimension
SELECT item_id
FROM item
WHERE form_id = (-- but first I need the form_id
-- for Laptop
SELECT form_id
FROM form
WHERE form_name = 'Laptop')
AND attribute_id = (-- then I need the attribute_id
-- for Screen Size
SELECT attribute_id
FROM attribute
WHERE attribute_name = 'Screen Size')
AND item.value BETWEEN 14 and 16
)

关于mysql - 从数据库生成 HTML 表单并将值存储到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19541119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com