在php中验证表单
【腾讯云】亏本大甩卖,服务器4核16G 1年370元(带宽12M,系统盘120GB SSD盘,月流量2000GB)!!!!!!
云产品 配置 价格
服务器 1核2G,带宽5M,系统盘50GB SSD盘,月流量500GB 38元/年
MySQL 1核1G 19元/年
服务器 16核32G,带宽18M,系统盘250GB SSD盘,月流量5000GB 1197元/年
点我进入腾讯云,查看更多详情

I'm trying to validate a form of a test. I get an error in answer.php Basically I want to validate that each question has been answered.

The form:

$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";
}
}

I get the error: Warning: Invalid argument supplied for foreach() in ......

#0

One thing is that you are assigning the answer rather than checking it, use ==

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

and instead of using

name='question[$q_nr]'

I would use for the radio fields

name='question_{$q_nr}'

and for the checkboxes

name='question_{$q_nr}[]'

On answer.php you should be able to do a print_r($_POST) to check what you are getting.

#1

This is probably because your $_POST['question'] is empty. This is what happens when you try to do this with an empty array.

Whereas your HTML says: name='question[$q_nr]'.

Print the values in the array to see what it contains, use print_r.

Edit: $_POST['question'] IS NOT an array! While $_POST IS an array...

Maybe you should try to do something like this: foreach ($_POST as $key => $value)

Or do it however you want the result to be displayed.

推荐文章

如何在C中正确释放char**表

如何在C中正确释放char**表

推荐文章

软件容错

软件容错

推荐文章

Perl的grep函数如何与regex一起工作?

Perl的grep函数如何与regex一起工作?

推荐文章

一页中多个窗体上的asp.net mvc客户端验证

一页中多个窗体上的asp.net mvc客户端验证

推荐文章

用于Eclipse的Android sound starter项目

用于Eclipse的Android sound starter项目

推荐文章

如何将具有m:n(多对多)关系的表单嵌入到另一个表单中?

如何将具有m:n(多对多)关系的表单嵌入到另一个表单中?

推荐文章

使用jquery过帐后如何刷新多个div

使用jquery过帐后如何刷新多个div

推荐文章

PHP解析带有和不带名称空间的XML文件

PHP解析带有和不带名称空间的XML文件

推荐文章

使用MVVM/WPF遵循域驱动设计

使用MVVM/WPF遵循域驱动设计

推荐文章

变量是否应该释放?iphone软件开发工具包

变量是否应该释放?iphone软件开发工具包

推荐文章

[BITS 16]和[ORG 0x0000]指令的顺序

[BITS 16]和[ORG 0x0000]指令的顺序

推荐文章

根据C中另一列的当前行筛选datagridview列#

根据C中另一列的当前行筛选datagridview列#

推荐文章

jQuery的一些问题

jQuery的一些问题

推荐文章

什么是(N-1)+(N-2)+(N-3)+。。。+1=N*(N–1)/2

什么是(N-1)+(N-2)+(N-3)+。。。+1=N*(N–1)/2

推荐文章

如何将svg画布保存到本地文件系统

如何将svg画布保存到本地文件系统

推荐文章

在Javascript+Jquery show/hide中动态创建带编号的div

在Javascript+Jquery show/hide中动态创建带编号的div