我有一个包含超过400个带有值的隐藏字段的表单,我从JavaScript文件获取这些值并将它们附加到HTML表格,然后我从HTML表格单元格中获取这些值并将它们附加到隐藏字段和将它们发送到PHP文件。
除了这些字段,我还有一些其他字段,如公司名称,电子邮件等......这些字段不是隐藏字段,我需要做的是:我想检查一个隐藏字段是否有值,如果任何隐藏字段具有值,则只有电子邮件功能应该有效,如果所有隐藏字段都为空,则电子邮件不起作用。请建议是否有任何简单的方法来做到这一点。我认为为400个字段写一个if条件并不是一个好主意。
例如,我使用$_POST
获取这些已发布的值,并将它们分配给PHP变量,
我有400个变量,例如$one
,$two
,$three
..,$fourhundred
。
我需要写一个条件,一个变量是否有值。
if(strlen($one) > 0 || strlen($two) > 0 || and so on)
有没有更好的方法呢?
答案 0 :(得分:0)
这些字段是否以任何逻辑方式命名?如果是这样,您可以使用循环轻松实现此目的。如果它们被命名为email
,company
等等。那么它将需要更多的工作。
我这样做的方法是使用你期望的所有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,则会有一个空字段,因此您可以将用户发回表单或您想要做的任何事情。