【问题标题】:SQL How to insert multiple checkboxes in DatabseSQL如何在数据库中插入多个复选框
【发布时间】:2020-04-22 17:57:48
【问题描述】:

我想了几天如何最好地在我的数据库中插入多个复选框。

我想要做的是,如果用户选择一个选项,相关的复选框会显示在选择下方。

例如:

  • 用户选择选项 1 -> 出现复选框 A、B 和 C
  • 用户选择选项 2 -> 出现复选框 D、E 和 F

我的选项来自一个表,复选框来自另一个表。

这已经很好了。

但是如何在我的数据库中插入选择的复选框(例如 A 和 C),以便我能够分析来自此特定提交的数据(例如用户已提交表单 -> 提交 1,已选择选项 1 并且只有 75% 的复选框被选中;选中的复选框是 A 和 C;复选框 C 丢失)

我希望我能解释一下。我想“简单地”提交数据以进行分析。

【问题讨论】:

  • 听起来您有两个不同的问题:1)您如何根据用户操作显示/隐藏元素,以及 2)您如何在提交表单时实际处理结果。第一个是 JavaScript,而不是 php,答案;第二个要求您显示一些代码

标签: php html sql database


【解决方案1】:

像这样使用数组选择多个复选框

<input type="checkbox" name="Days[]" value="Daily">Daily<br>

Example

【讨论】:

    【解决方案2】:

    您可能应该使用两个表:

    一个包含有关哪些复选框与哪个选项一起使用的信息:

    Option | Checkbox
    1      | A
    1      | B
    1      | C
    2      | D
    2      | E
    2      | F
    

    然后是一秒钟的价值

    SubmidId | Option | Checkbox | Value
    1000     | 1      | A        | 1
    1000     | 1      | B        | 0
    1000     | 1      | C        | 1
    

    这将允许您使用第一个表来定义您的结构,并使用第二个表来存储您的记录。如果 PIVOT 命令可以让您更轻松地显示内容,请不要犹豫。

    奖励:向两个表添加一个版本可以让您更改结构并保持历史一致性。

    【讨论】:

    • 复选框和选项的数量可能会有所不同,因为它是从另一个表中获取其值,用户可以将更多值放入其中
    • 好的,我将编辑“未定义的复选框数量”的答案
    • 这仍然是一个平面文件表,只是现在您正在复制信息。如果第一个表的信息在第二个表中完全重复,那么第一个表的需要是什么?
    • 第一个表的要点是有选项/检查链接配置。这可能会随着时间而改变。在第二个表中,您有关联的选项/复选框链接的值和版本。
    【解决方案3】:

    对于您的特定场景有几种方法,其中之一是 Pierre 提到的。另一个是您为复选框元素分配的任何值,将所有选定的值保存在以逗号分隔值的列中。

    例如: 在选项 1 中,您有三个具有某些值的复选框,

    <input type="checkbox" name="test[]" value="1" />
    <input type="checkbox" name="test[]" value="2" />
    <input type="checkbox" name="test[]" value="3" />
    

    假设用户从选项 1 中选择了 2 个复选框,从选项 2 中选择了三个复选框。现在在请求中,您应该在 test[] 变量中有多个条目,例如:[1,3,4,5, 6]。将所有这些条目保存在一列中为 varchar:

    id | test
    1  | 1,3,4,5,6
    

    在检索时,您可以通过逗号explode()它们并对每个复选框条目执行您喜欢的任何操作。

    通过这种方式,您可以在一个类别下保存任意数量的复选框选项。我希望这会有所帮助,并回答您的问题。

    【讨论】:

    • 昨天想到了这个解决方案,但读到如果你想以数组形式插入信息,表明数据库没有以正确的方式使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 2022-07-28
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多