我正在尝试将复杂复选框表单的值存储在 mysql 数据库中

Posted

技术标签:

【中文标题】我正在尝试将复杂复选框表单的值存储在 mysql 数据库中【英文标题】:I am trying to store the values of a complex checkbox form in mysql database 【发布时间】:2020-05-23 03:13:10 【问题描述】:

我有一个多部分的 html 表单,我想将从该表单获取的数据发送到数据库。我的问题是表单的第二步,其中有多个带有多个复选框的选项卡。由于多个选项卡和许多复选框,我完全困惑如何创建此表单的架构。如何以有序的方式成功插入每个类别的数量和项目名称,以便我轻松获取每个条目的所有记录?每个部分都有 ID(1 到 4),每个项目都有一个 itemid。

这是表格的链接(只是为了清楚我的意思。检查表格的第 2 步)。 http://www.diggysmoving.com/get-free-quotes.php

这是我的架构:

CREATE TABLE `moving_entries` (
  `moving_id` int(11) NOT NULL,
  `phone` varchar(15) NOT NULL,
  `full_name` varchar(100) NOT NULL,
  `email` varchar(100) NOT NULL,
  `moving_from` varchar(100) NOT NULL,
  `moving_to` varchar(100) NOT NULL,
  `type_from` varchar(100) NOT NULL,
  `type_to` varchar(100) NOT NULL,
  `living_room_items` text NOT NULL,
  `bedroom_items` text NOT NULL,
  `kichen_items` text NOT NULL,
  `other_items` text NOT NULL,
  `additional_items` text NOT NULL,
  `required _services` text NOT NULL,
  `move_date` varchar(100) NOT NULL,
  `referral_code` varchar(50) NOT NULL,
  `special_instruction` text NOT NULL,
  `created` date NOT NULL,
   PRIMARY KEY (`moving_id`);
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

以下是部分html代码

<tr id="id-inverter4">
  <td class="timesTData text-center" style="vertical-align: middle;" >
     <span class="opening" style="visibility: hidden;">(</span>
     <span class="digit" style="visibility: hidden">1</span>
     <span class="fa fa-times" style="visibility: hidden;"></span>
     <span class="closing" style="visibility: hidden">)</span>
   </td>
   <td class="nameTData"  style="vertical-align: middle">Inverter</td>
   <td class="minusTData text-center" style="vertical-align: middle;"  id="ms-inverter4" data-id="id-inverter4">
     <span class="fa fa-minus fa-lg" style="visibility: hidden;"></span>
   </td>
   <td class="plusTData text-center" style="vertical-align: middle;"  id="ps-inverter4" data-id="id-inverter4">
     <span class="fa fa-plus fa-lg" style="visibility: hidden;"></span>
   </td>
   <td class="checkTData" >
     <input type="checkbox" class="form-control checkBox inverter4" name="itemQuantities[]" title="Inverter" data-href="inverter4" data-tr="id-inverter4">
     <input type="checkbox" name="itemIds[]" class="inverter4" value="60" style="display: none;">
     <input type="checkbox" name="sectionIds[]" class="inverter4" value="4" style="display: none;">
   </td>

【问题讨论】:

由于第 2 步的选项如此之多,并且没有选择限制,我会将它们分隔在不同的表中,其中行的 id 将为moving_id,稍后我可以轻松匹配当前的移动和客厅选项 我尝试创建不同的表来保存部分 ID 和项目 ID。但我仍然卡住了。我无法将它放在脑海中如何继续。 【参考方案1】:

你可以做一个通用表来保存moving_id、name、email、from、to ...和几个单独的表来保存选项,这里是step2客厅的例子,你可以为卧室、厨房做同样的事情和其他

CREATE TABLE `living_room` (
`moving_id` int(11) NOT NULL,
`television` int(11) NOT NULL,
`tv_stand` int(11) NOT NULL,
`dvd` int(11) NOT NULL,
`decoder` int(11) NOT NULL,
`home_theatre` int(11) NOT NULL,
`subwoofers` int(11) NOT NULL,
`settee` int(11) NOT NULL,
`centre_table` int(11) NOT NULL,
`side_stool` int(11) NOT NULL,
`centr_rug` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

在这里我将所有选项设置为 (int) 因为是复选框,所以如果选中或不选中,您可以插入 1 或 0 此处的moving_id 将与您的总表中的moving_id 相同,而不是您可以匹配当前moving_id 的简单选择选项

【讨论】:

虽然这确实不起作用,但随着您对原始问题的评论,我能够想出一些东西。谢谢,为此我将您的答案标记为正确 @Atoms 很高兴为您提供帮助

以上是关于我正在尝试将复杂复选框表单的值存储在 mysql 数据库中的主要内容,如果未能解决你的问题,请参考以下文章

数据库设计帮助 - EAV + 表单生成器

带有复选框的表单输入字段,反之亦然 - 缺少第一个值

Excel VBA - 将多个用户表单复选框值写入单个单元格

Laravel 5 表单模型绑定复选框值

在颤振中存储来自表单的信息

从生成的复选框将多个条目插入数据库