我尝试做的是为每个答案运行一条select语句,在数据库中选择questionID = $i和userID = $userID的答案,所以到目前为止,我已经设置了这样的查询,但不确定我遗漏了什么,或者我是对的,没有遗漏任何东西吗?此外,无论我做什么,两个字段都有值,但我仍然收到需要填写两个表单域的错误消息。
<?php
$i = 1;
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
?>
<dl>
<dt style="width: 190px;"><label for="answer[<?php echo $row['id']; ?>]"><?php echo $row['question'] ?></label></dt>
<dd><input type="text" name="answer<?php echo $i ?>[<?php echo $row['id']; ?>]" size="54" /></dd>
</dl>
<?php
++$i;
}
?>
if (empty($_POST['answer1'][$i]) || trim($_POST['answer1'][$i])=="") {$errors = "yes";}
if (empty($_POST['answer2'][$i]) || trim($_POST['answer2'][$i])=="") {$errors = "yes";}
// Error checking, make sure all form fields have input
if ($errors == "yes") {
// Not all fields were entered error
$message = "You must enter values to all of the form fields!";
$output = array('errorsExist' => true, 'message' => $message);
} else {
$userID = mysqli_real_escape_string($dbc,$_POST['userID']);
$answer1 = mysqli_real_escape_string($dbc,$_POST['answer1'][$i]);
$answer2 = mysqli_real_escape_string($dbc,$_POST['answer2'][$i]);
$query = "SELECT * FROM manager_users_secretAnswers WHERE questionID = '".$questionID."' AND userID = '".$userID."'";
$result = mysqli_query($dbc,$query);
echo $query;发布于 2011-11-15 22:27:35
据我所知,您正在使用以下代码检查错误:
empty($_POST['answer1'][$i]);这里的问题是,脚本中的'$i‘将等于数据库中的行数+1,因为您在while循环中使用了它。因此,它很有可能始终为空,并且您将始终得到错误。
为了更简单,对每个字段使用foreach循环(当然,有很多方法可以做到这一点):
$error = false;
foreach ($_POST['answer1'] as $answer) {
if ($error === true) break; // we already have an error, why continue?
if (empty($answer)) $error = true;
}在此之前,更重要的是,您的表单名称的命名似乎令人困惑。
name=answerNUM[ROW_ID]您的结果将是:
answer1[ROW_ID]
answer2[ROW_ID]
answer3[ROW_ID]
answer4[ROW_ID]
//etc...出于调试目的,您需要转储POST变量,以便在提交表单时能够看到表单的结构:
die(print_r($_POST, true));您将获得每个值,并能够将您的代码与之进行比较。如果你想把结果上传上去,我可以对答案进行扩展。
https://stackoverflow.com/questions/8099518
复制相似问题