在php中验证表单

时间:2011-10-06 09:05:20

标签: php

我正在尝试验证一种形式的测试。我在answer.php中收到错误。基本上我想确认每个问题都已得到解答。

表格:

$sql1="SELECT * FROM ex_question WHERE test_name = '$tid' ORDER BY q_nr";
$result1=mysql_query($sql1);
echo "<form method='post' name='form1' action='answer.php'>";
while($row1 = mysql_fetch_array($result1))
{
    $q_nr=$row1['q_nr'];
    $q_type=$row1['q_type'];
    $question=$row1['question'];
    $option1=$row1['option1'];
    $option2=$row1['option2'];
    $option3=$row1['option3'];
echo "<P><strong>$q_nr $question</strong><BR>";
echo "<BR>";
echo "</p>";
if ($q_type != 'mr') {
if($option1!="") {
echo "<input type='radio' name='question[$q_nr]' value='A'>$option1<BR>";
} else {
echo ''; }
if($option2!="") {
echo "<input type='radio' name='question[$q_nr]' value='B'>$option2<BR>";
} else {
echo ''; }
if($option3!="") {
echo "<input type='radio' name='question[$q_nr]' value='C'>$option3<BR>";
} else {
echo ''; }
} else { // else if not <> mr
if($option1!="") {
echo "<input type='checkbox' name='question[$q_nr][]' value='A'>$option1<BR>";
} else {
echo ''; } 
if($option2!="") {
echo "<input type='checkbox' name='question[$q_nr][]' value='B'>$option2<BR>";
} else {
echo ''; } 
if($option3!="") {
echo "<input type='checkbox' name='question[$q_nr][]' value='C'>$option3<BR>";
} else {
echo ''; } 
} //end else if q_type <> mr
    echo "<BR>";
    echo "</p>";
} //end while row1
echo "<input type='submit' value='Submit' name='Submit'>";
echo "</form>";

answer.php

foreach($_POST['question'] as $key => $ans) {
if ($ans[] = '') {
echo "answer is empty";
}
}

我收到错误:警告:为......中的foreach()提供的参数无效

2 个答案:

答案 0 :(得分:2)

有一点是你要分配答案而不是检查它,使用==

foreach($_POST as $key => $ans) {
  if ($ans == '') {
    echo "answer is empty";
  }
}

而不是使用

name='question[$q_nr]'

我会用于无线电领域

name='question_{$q_nr}'

和复选框

name='question_{$q_nr}[]'

在answer.php上你应该可以做一个print_r($ _ POST)来检查你得到了什么。

答案 1 :(得分:0)

这可能是因为您的$_POST['question']为空。当您尝试使用空数组执行此操作时会发生这种情况。

而您的HTML说:name='question[$q_nr]'

打印数组中的值以查看其中包含的内容,使用print_r

编辑:$_POST['question']不是数组!虽然$_POST是一个数组......

也许你应该尝试这样做: foreach ($_POST as $key => $value)

或者你想要显示结果。