2013-02-20 56 views
-5

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

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

比如我得到那些张贴值随$_POST并将它们分配给PHP变量, 我有400个变量,如$one$two$three ...,$fourhundred

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

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

有没有更好的办法做到这一点?

+0

欢迎来到SO。你能发布你试过的代码吗?如果你阅读了常见问题http://stackoverflow.com/faq,你应该问一个问题,告诉你首先尝试了什么。 – Scott 2013-02-20 09:49:24

回答

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,那么会有一个空字段,因此您可以将用户发回到表单或任何您想要执行的操作。

+0

谢谢詹姆斯,我认为它会对我有用,让我试试.. – Vamshi 2013-02-20 12:05:27

+0

@Vamshi只需调用你的字段,如下所示:column_row(numeric) 所以他们会去:1_1,1_2,1_3,一直到6_20。这将使开发输入字段背后的实际功能变得更困难,但您只需要检查字段的数字ID而不是名称。 – 2013-02-20 14:10:56

+0

我得到了解决方案感谢詹姆斯。 – Vamshi 2013-02-20 16:04:42

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."); 
} 
+0

我有6列和20行在我的表中,每个​​包含一个隐藏的字段..他们的名字就像one_one_txt,one_two_txt等..他们被命名为row_column_txt .. PHP变量也有相同的名称,如$ one_one_txt等。 。 – Vamshi 2013-02-20 10:17:55

+0

@Vamshi好吧,那么为什么你不尝试我的方法,看看它是否适合你? – 2013-02-20 11:41:15