我正在做一个测验,问题来自我的数据库。每个选项(A,B,C)都有自己的单选按钮,这是我显示测验的代码:
echo "<table>";
while ($row = mysqli_fetch_array($resultx)) {
echo '<tr><td>Question '.$qcounter.'<br/></td></tr>';
$qcounter++;
//output rows for radiobuttons
echo "<tr><td>".($row['Question'])."</td></tr>";
echo '<tr><td><input type="radio" name="q1" value="A" id="question-1-answers-A"/><label for="question-1-answers-C3">A) '.($row['AnswerA']).'</label></td></tr>';
echo '<tr><td><input type="radio" name="q1" value="B" id="question-1-answers-B"/><label for="question-1-answers-C3">B) '.($row['AnswerB']).'</label></td></tr>';
echo '<tr><td><input type="radio" name="q1" value="C" id="question-1-answers-C"/><label for="question-1-answers-C3">C) '.($row['AnswerC']).'</label></td></tr>';
}
echo "</table>";
我的问题是每个问题的单选按钮并不独立于另一个问题。例如:如果您为问题 1 选择第一个选项 C,然后为问题 2 选择选项 B,它将从问题 1 中删除选项 C,基本上您只能为整个测试选择一个单选按钮。我该如何解决这个问题?
谢谢
您在整个循环中使用相同的name
属性。在那里附加了一些独特的东西(比如你的计数器)或使用数组。
echo "<table>";
while ($row = mysqli_fetch_array($resultx)) {
echo '<tr><td>Question '.$qcounter.'<br/></td></tr>';
$qcounter++;
//output rows for radiobuttons
echo "<tr><td>".($row['Question'])."</td></tr>";
echo '<tr><td><input type="radio" name="q' . $qcounter . '" value="A" id="question-1-answers-A"/><label for="question-1-answers-C3">A) '.($row['AnswerA']).'</label></td></tr>';
echo '<tr><td><input type="radio" name="q' . $qcounter . '" value="B" id="question-1-answers-B"/><label for="question-1-answers-C3">B) '.($row['AnswerB']).'</label></td></tr>';
echo '<tr><td><input type="radio" name="q' . $qcounter . '" value="C" id="question-1-answers-C"/><label for="question-1-answers-C3">C) '.($row['AnswerC']).'</label></td></tr>';
}
echo "</table>";
应该可以通过在单选按钮的name
中添加$qcounter
来修复。或者,您可以尝试从数据库中获取问题的id(pk),并将其添加到name
属性中。这样,您就已经有了将答案/用法再次保存到数据库的 id。
编辑:Chris85在我输入我的时回答了这个问题。
每个问题中的单选按钮都需要不同的名称。在上面的代码中,似乎每个问题的单选按钮的名称都是"q1"。试试这个:
echo "<table>";
while ($row = mysqli_fetch_array($resultx)) {
echo '<tr><td>Question '.$qcounter.'<br/></td></tr>';
$qcounter++;
// Assigning names to radio buttons
$question_number = "q".$qcounter;
//output rows for radiobuttons
echo "<tr><td>".($row['Question'])."</td></tr>";
echo '<tr><td><input type="radio" name="'.$question_number.'" value="A" id="question-1- answers-A"/><label for="question-1-answers-C3">A) '. ($row['AnswerA']).'</label></td></tr>';
echo '<tr><td><input type="radio" name="'.$question_number.'" value="B" id="question-1-answers-B"/><label for="question-1-answers-C3">B) '.($row['AnswerB']).'</label></td></tr>';
echo '<tr><td><input type="radio" name="'.$question_number.'" value="C" id="question-1-answers-C"/><label for="question-1-answers-C3">C) '.($row['AnswerC']).'</label></td></tr>';
}
echo "</table>";
编辑:Chris85在我输入我的评论时发布了他的评论。他的代码更好,因为它直接在按钮本身中附加$qcounter,而不是创建一个中间变量。