我正在尝试为学生创建一个评估表,所有问题都存储在数据库中。我正在从数据库中检索它们,并尝试再次在数据库上存储每个问题的答案。所有答案都应从单选按钮中选择,如下所示:
<?php
$sql = "SELECT Q_body, Q_ID FROM s_evaluation_questions WHERE Ev_ID='1'";
$result = $conn->query($sql);
?>
<?php
if ($result->num_rows > 0)
{
?>
<form action="AnswerS.php" method="POST">
<table align="right" id="keywords" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th colspan="4"> </th>
<th>Question</th>
</tr>
</thead>
<tbody>
<?php
while($row = $result->fetch_assoc())
{ $answer="s".$row["Q_ID"];
?>
<tr>
<td>
<input type="hidden" name="Q_ID" value="<?php echo $row["Q_ID"]; ?>" >
<input type="radio" name=<?php echo $answer?> value="Bad" >Bad
<input type="radio" name=<?php echo $answer?> value="Good"> Good
<input type="radio" name=<?php echo $answer?> value="VeryGood"> Very Good
<input type="radio" name=<?php echo $answer?> value="Excellent"> Excellent</td>
<td align="right"> <?php echo $row["Q_body"]?></td>
</tr>
<?php } ?>
</tbody>
</table></br></br></br></br></br></br></br>
<input type="submit" value="Send" />
</form>
<?php
?></div>
<?php
} else
{echo "not allowed";}
在 AnswerS.php 页面上,我想将答案存储在数据库上,如下所示:
$UID='1';
$answer=$_POST['answer'];
$Q_ID= $_POST['Q_ID'];
$sql = "INSERT INTO s_evaluation_answers(Q_ID, A_body, UID) VALUES($Q_ID, $answer, $UID) ";
$result = $conn->query($sql);
if ($result === TRUE) {
echo "done" ;
}
else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
但不幸的是它不起作用!,我试图跟踪 Q_ID 的值,它只给出最后一个问题的 ID,而不是所有问题。 如何存储每个问题的单选按钮中选定的值并将其存储为该问题的答案? (注:所有问题均来自db)
谢谢
最佳答案
如果您查看源 html,您会发现有许多名为 Q_ID
的字段:
<input type="hidden" name="Q_ID" value="one id" >
<input type="hidden" name="Q_ID" value="another id" >
<input type="hidden" name="Q_ID" value="some more id" >
因此浏览器会向您发送Q_ID
的最后一个值 - 在上面的情况下它是一些更多的id
。
为了避免这种情况 - 在 name
属性中使用 []
表示法:
<input type="hidden" name="Q_ID[]" value="one id" >
<input type="hidden" name="Q_ID[]" value="another id" >
<input type="hidden" name="Q_ID[]" value="some more id" >
之后,输出 $_POST['Q_ID']
将为您提供一个数组。您可以使用 foreach
对其进行迭代并收集您需要的其他信息。像(简化的):
foreach ($_POST['Q_ID'] as $q) {
// answer will be stored in a `s . $q` value of POST
$answer = $_POST['s' . $q];
$sql = "INSERT INTO s_evaluation_answers(Q_ID, A_body, UID) VALUES($q, $answer, $UID) ";
$result = $conn->query($sql);
}
关于php - 构建 php 评估表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41789720/