表单中的动态必填字段

时间:2014-12-26 17:54:58

标签: php if-statement for-loop webforms

我有一个包含太多字段的长格式。我想让它成为一个动态形式,这意味着每次所需的字段都是不同的。因此,我在所有表单字段旁边放置一个小的,并使用此代码动态选择所需的字段并进行检查,因此当用户提交表单时,动态错误文本仅出现在所选的必填字段旁边。但结果与预期不同。 PHP错误显示在所有字段旁边,而不仅仅是数组中所需的字段。请你帮忙。

$required = array('cm_name', 'cm_mobile', 'cm_mail', 'cm_dob', 'cm_income', 'cm_country');

if(isset($_POST['submit'])) {

foreach($required as $field) {
 if (empty($_POST[$field])) {
    $err_req = "* Required Data";
    $valid = true;
  } else {
    $err_req = "";
    $valid=false; }
}

}

2 个答案:

答案 0 :(得分:1)

我写了这个函数

function checkrequired($field,$req_fields)
{
    if(in_array($field,$req_fields)) {
        if(isset($_POST[$field]) && empty($_POST[$field])) {
            echo "* Missing Data";
        }
    }
}

将这一行放在每个字段旁边

<?php checkrequired("cm_phone",$req_fields); ?>

并定义了像这样的

所需的字段
$req_fields = array('cm_name', 'cm_mobile', 'cm_mail', 'cm_dob', 'cm_income', 'cm_country', 'security_code');

答案 1 :(得分:0)

你在这里做的是改变foreach循环中变量的值。退出循环时,要么为变量赋值($ err_req =&#34; *必需数据“),要么不要($ err_req =&#34;”)。这将导致您的所有字段都包含其旁边的&#34;必需数据“文本,或者它们都没有。这是因为循环中的每次迭代都会覆盖变量的值。

您要执行的操作是执行打印操作或不打印循环内每个表单输入字段旁边的错误消息,或者对要显示错误的每个位置使用唯一标识符。这可以通过多种方式实现,一种方法是为输入字段旁边的每个空错误消息分配一个id。为简单起见,id可以匹配$ required数组值。如果$字段中没有值,则应使用匹配的ID更改错误文本的值。