php - 我正在尝试将复杂复选框表单的值存储在 mysql 数据库中
问题描述
我有一个多部分的 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;" width="15%">
<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" width="55%" style="vertical-align: middle">Inverter</td>
<td class="minusTData text-center" style="vertical-align: middle;" width="10%" 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;" width="10%" id="ps-inverter4" data-id="id-inverter4">
<span class="fa fa-plus fa-lg" style="visibility: hidden;"></span>
</td>
<td class="checkTData" width="10%">
<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>
解决方案
你可以做一张通用的桌子来保存moving_id、姓名、电子邮件、发件人、去……和几个分开的桌子来保存选项,这里是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 的简单选择选项