PHP表单处理只填写字段

时间:2012-06-19 13:44:28

标签: php

我有一个PHP类,它有8个属性 和一个HTML表单,有40个(8 * 5)文本框,每个对象8个,因此用户可以一次输入5个对象的数据。

对于每组框,我想创建一个类的对象并将其保存到我的数据库中。例如,如果用户填写了10个框(两套),则应创建并保存两个对象。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,这里是HTML表单示例:

<form action="" method="post">
  <fieldset>
    <legend>Group 1</legend>
    <div>
      <input type="text" name="groups[0][first_name]" />
    </div>
    <div>
      <input type="text" name="groups[0][last_name]" />
    </div>
  </fieldset>

  <fieldset>
    <legend>Group 2</legend>
    <div>
      <input type="text" name="groups[1][first_name]" />
    </div>
    <div>
      <input type="text" name="groups[1][last_name]" />
    </div>
  </fieldset>

  <fieldset>
    <legend>Group 3</legend>
    <div>
      <input type="text" name="groups[2][first_name]" />
    </div>
    <div>
      <input type="text" name="groups[2][last_name]" />
    </div>
  </fieldset>
</form>

注意字段名称,如何对字段进行格式化。提交这样的表单后,$ _POST超全局数组将包含以下结构的$ _POST ['groups']数组:

Array
(
    [0] => Array
        (
            [first_name] => 
            [last_name] => 
        )

    [1] => Array
        (
            [first_name] => 
            [last_name] => 
        )

    [2] => Array
        (
            [first_name] => 
            [last_name] => 
        )

)

您可以使用以下代码轻松处理此类数据:

foreach ($_POST['groups'] as $group) {
  $group = array_filter($group);

  if (!empty($group)) {
    // do something with group
  }
}

这个小例子循环遍历所有提交的组。 array_filter()函数将抛弃每个$ group数组中的所有空值,而!empty(...)将确保$ group不为空。