使用PHP检查表单是否已填写

时间:2013-02-20 09:46:14

标签: php javascript html

我有一个包含超过400个带有值的隐藏字段的表单,我从JavaScript文件获取这些值并将它们附加到HTML表格,然后我从HTML表格单元格中获取这些值并将它们附加到隐藏字段和将它们发送到PHP文件。

除了这些字段,我还有一些其他字段,如公司名称,电子邮件等......这些字段不是隐藏字段,我需要做的是:我想检查一个隐藏字段是否有值,如果任何隐藏字段具有值,则只有电子邮件功能应该有效,如果所有隐藏字段都为空,则电子邮件不起作用。请建议是否有任何简单的方法来做到这一点。我认为为400个字段写一个if条件并不是一个好主意。

例如,我使用$_POST获取这些已发布的值,并将它们分配给PHP变量, 我有400个变量,例如$one$two$three ..,$fourhundred

我需要写一个条件,一个变量是否有值。

if(strlen($one) > 0 || strlen($two) > 0 || and so on)

有没有更好的方法呢?

2 个答案:

答案 0 :(得分:0)

这些字段是否以任何逻辑方式命名?如果是这样,您可以使用循环轻松实现此目的。如果它们被命名为emailcompany等等。那么它将需要更多的工作。

我这样做的方法是使用你期望的所有POST数据名称的数组。

<强>例如

// Create an array of all of the expected variables
$expectedVars = array("email", "company", "anotherVariable");
$expectedVarNumbers = count($expectedVars);
$varsSoFar = 0;

foreach ($_POST as $key=>$var) {
    if (in_array($key, $expectedVars)) { // If this key is one of the expected vars
        $varsSoFar++;
    }
}

if ($varsSoFar == $expectedVarNumbers) {
    print("All fields have been correctly set!");
} else {
    print("At least one field is missing.");
}

答案 1 :(得分:0)

使用数字命名。而不是one_two_txt,只需使用1_2。通过这种方式,您可以遍历它。

$filled = 1;
for($c = 0; $c <= 6; $c++)
{
    if($filled == 0)
    {
        break;
    }
    for($r = 0; $r <= 20; $r++)
    {
        if(strlen($_POST["" . $c . "_" . $r . ""]) <= 0)
        {
            $filled = 0;
            break;
        }
    }
}

如果$ filled等于0,则会有一个空字段,因此您可以将用户发回表单或您想要做的任何事情。