【问题标题】:Check if a form is filled or not using PHP使用 PHP 检查表单是否已填写
【发布时间】:2013-02-20 09:46:13
【问题描述】:

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

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

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

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

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

有没有更好的办法?

【问题讨论】:

  • 欢迎来到 SO。您可以发布您尝试过的代码吗?如果您阅读了常见问题解答stackoverflow.com/faq,您应该提出一个问题,表明您首先尝试了某事。

标签: php javascript html


【解决方案1】:

使用数字命名。而不是 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,则有一个空字段,因此您可以将用户发布回表单或您想做的任何事情。

【讨论】:

  • @Vamshi 像这样调用你的字段:column_row(数字)所以他们会去:1_1、1_2、1_3,一直到 6_20。这将使开发输入字段背后的实际功能变得更加困难,但您只需要继续检查字段的数字 ID 而不是名称。
【解决方案2】:

这些字段是否以任何合乎逻辑的方式命名?如果是这样,您可以使用循环轻松实现此目的。如果它们被命名为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.");
}

【讨论】:

  • 我的表中有 6 列和 20 行,每个 包含一个隐藏字段。它们的名称类似于 one_one_txt、one_two_txt 等。它们的名称类似于 row_column_txt。PHP 变量也有同名,如 $one_one_txt 等等..
  • @Vamshi 好的,那你为什么不试试我上面的方法,看看它是否适合你?
猜你喜欢
相关资源
最近更新 更多
热门标签