-5

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

除了这些字段之外,我还有一些其他字段,如公司名称、电子邮件等。它们不是隐藏字段,我需要在这里做的是:我想检查一个隐藏字段是否有值,如果有隐藏字段有一个值,那么只有电子邮件功能应该工作,如果所有隐藏字段都是空的,那么电子邮件不应该工作。请建议是否有任何简单的方法可以做到这一点。我认为为 400 个字段编写 if 条件不是一个好主意。

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

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

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

有没有更好的方法呢?

4

2 回答 2

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.");
}
于 2013-02-20T10:10:03.437 回答
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;
        }
    }
}

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

于 2013-02-20T11:27:09.050 回答