需要表单上的动态字段

时间:2013-10-16 23:49:52

标签: php dynamic checkbox

快速提问。

我有一个包含动态复选框和配对文本框的表单。当我提交表单并print_r输出$ _POST信息时,这就是我得到的。

    Array
(
    [chkname_156] => chkname_156
    [txtID_156] => 
    [chkname_157] => chkname_157
    [txtID_157] => 
    [doChooseAppSvc] => doChooseAppSvc
)

如上所示,已选中复选框,但txtID为空。我想要实现的是这个。如果存在复选框,这意味着它们已被检查,但文本框为空,我需要提醒用户。由于每个都是动态的,下划线后的数字会发生变化,但名称的开头保持不变。

我认为,通过执行以下操作,我已经找到了解决方案的一半。我正在使用preg_grep创建一个已经选中的复选框数组。这是代码。

$pm = preg_grep("/^chkname.*/", $p);

现在,我被困住了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我建议您在表单中使用数组 它可以更容易地比较值。

例如:

<input type="checkbox" name="chkname[<?=$id?>]" value="" />
<input type="text" name="txtID[<?=$id?>]" value="" />

然后,对于每次迭代,您可以检查:

if (isset($posted['chkname'][$id]) && $posted['txtID'][$id]=='') {
   // alert the user
}

编辑:

以下是检查输入的循环示例:

// loop through all text inputs
foreach ($posted['txtID'] as $id => $txtID_value) {

  // for each text input, validate against checkbox with the same $id
  if (isset($posted['chkname'][$id]) && $txtID_value!='') {

    // output an error message
    echo "<p>You checked box #$id but didn't fill in text input #$id.</p>";

  }

}