以PHP/CodeIgniter形式处理附加信息表单字段并存储在MySQL中


Processing additional information form fields in PHP/CodeIgniter form and storing in MySQL

我正在为一家房屋建筑公司制作表格 - 用户可以指定他们想要在家中的选项。我将表单中的一般信息(formID,姓名,地址,电话等)存储在一个名为"designForm"的表中。

我有另一个名为"designOptions"的表,其中包含可用于房屋的所有选项(选项ID,选项位置,选项名称,选项描述)。

还有一个名为"FormOptions"的表,它将保存表单上选择的每个选项(formID,optionID)的记录。

在窗体上,每个选项都由一个复选框表示,其值设置为选项 ID。某些选项复选框在选中时会显示其他输入或选择字段。附加信息并不总是相同的。有时是天花板高度,有时可能是淋浴大小或其他东西。下面是一些示例。

<span class="additional-info-wrap">
  <label class="checkbox-inline">
    <input type="checkbox" name="options[]" value="38">Whirlpool Tub
  </label>
  <div class="additional-info hide">
    <select class="form-control" name="masterBathWhirlpoolSize">
      <option value="None Specified">None Specified</option>
      <option value="3'x5'">3'x5'</option>
      <option value="3'x6'">3'x6'</option>
      <option value="4'x6'">4'x6'</option>
      <option value="5'x5' Corner Unit">5'x5' Corner Unit</option>
    </select>
  </div>
</span>
<span class="additional-info-wrap">
  <label class="checkbox-inline">
    <input type="checkbox" name="options[]" value="39">Shower / Tub
  </label>
  <div class="additional-info hide">
    <select class="form-control" name="masterBathTubSize">
      <option value="None Specified">None Specified</option>
      <option value="3'x5'">3'x5'</option>
      <option value="3'x6'">3'x6'</option>
    </select>
  </div>
</span>
<span class="additional-info-wrap">
  <label class="checkbox-inline">
    <input type="checkbox" name="options[]" value="46">Dining Room
  </label>
  <div class="additional-info hide">
    <input type="number" name="roomsDiningHeight" placeholder="Ceiling Height" class="form-control" disabled="">
  </div>
</span>
<span class="additional-info-wrap">
  <label class="checkbox-inline">
    <input type="checkbox" name="options[]" value="47">Family Room / Great Room
  </label>
  <div class="additional-info hide">
    <input type="number" name="roomsFamilyHeight" placeholder="Ceiling Height" class="form-control" disabled="">
  </div>
</span>

使用 CodeIgniter,我将基本表单数据插入到"designForm"字段中,获取 formID,然后使用以下内容处理选项数组:

            $options = $this->input->post('options');
            foreach ($options as $option ){
                $option_data = array(
                  'optionID' =>($option),
                  'formID' =>($form_id)
                );
            }

我的问题是:处理用户选中复选框时暴露的其他信息的最佳方法是什么?我要求在HTML(多维数组?)中命名字段的最佳方法,在PHP/CodeIgniter中处理字段,然后将它们存储在MySQL数据库中。

我希望能够在"FormOptions"表中存储附加信息字段的名称和值,但我不确定这是否有意义,或者我将如何去做。这些字段中的信息确实适用于特定选项,因此我认为将它们存储在"designForm"表中是没有意义的。

我以这种方式解决了附近的一个问题,就像您的问题一样:

我的表格是N个字段...而且我永远不知道我需要发送什么...

我将选项和复选框设置为多维数组。

后来我使用以下方法从表单中获取数据:

$formData = $this->input->post();

结果将是 和 包含表单中所有 POSTED 数据的数组。然后,您可以在控制器或对象中管理您需要发送的方式、发送到数据库或电子邮件。