PhP SQL处理表单上的“添加更多”选项

时间:2017-01-05 21:58:19

标签: php sql form-processing

如果我有一个用户可以选择添加额外字段的表单,我对如何处理它感到困惑。例如

HTML

<input name="provider_name" type="text" />
<button class="add-more">Add Provider</button>

Javascript / jQ

var addtlCounter = 0;
$(".add-more").click(function(e){
  e.preventDefault();
  addtlCounter++;
  $(this).before('<input name="provider_name_' + addtlCounter + '" type="text" />');
})

显然,如果只有一个provider_name,我可以

INSERT INTO MyTable(value) VALUES ($_POST["provider_name"])

但是,根据用户点击添加提供商的次数,我将获得未知数量的provider_name_*

关于我何时处理此表单的任何建议,我可以告诉他们添加了多少其他提供商并相应地插入。

1 个答案:

答案 0 :(得分:1)

使用HTML数组。

<input name="provider_name[]" type="text" />
<button class="add-more">Add Provider</button>

然后,在你的PHP中。

foreach($_POST["provider_name"] as $provider)
{
    echo $provider;
}

修改

要拥有两个相关字段,您可以在数组中包含一个数组,但必须对这些名称建立索引。就这样:

  <input name="providers[1][name]" type="text" />
  <input name="providers[1][number]" type="text" />
  <input name="providers[2][name]" type="text" />
  <input name="providers[2][number]" type="text" />
  <input name="providers[3][name]" type="text" />
  <input name="providers[3][number]" type="text" />
  <input name="providers[4][name]" type="text" />
  <input name="providers[4][number]" type="text" />
  <input name="providers[5][name]" type="text" />
  <input name="providers[5][number]" type="text" />

这会产生这个数组:

array(1) {
  ["providers"]=>
  array(5) {
    [1]=>
    array(2) {
      ["name"]=>
      string(0) ""
      ["number"]=>
      string(0) ""
    }
    [2]=>
    array(2) {
      ["name"]=>
      string(0) ""
      ["number"]=>
      string(0) ""
    }
    [3]=>
    array(2) {
      ["name"]=>
      string(0) ""
      ["number"]=>
      string(0) ""
    }
    [4]=>
    array(2) {
      ["name"]=>
      string(0) ""
      ["number"]=>
      string(0) ""
    }
    [5]=>
    array(2) {
      ["name"]=>
      string(0) ""
      ["number"]=>
      string(0) ""
    }
  }
}