在 php 循环中,如何使一个结果的单选按钮独立于下一个结果



我正在做一个测验,问题来自我的数据库。每个选项(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)&nbsp;'.($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)&nbsp;'.($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)&nbsp;'.($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)&nbsp;'.($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)&nbsp;'.($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)&nbsp;'.($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)&nbsp;'.   ($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)&nbsp;'.($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)&nbsp;'.($row['AnswerC']).'</label></td></tr>';
}
echo "</table>";

编辑:Chris85在我输入我的评论时发布了他的评论。他的代码更好,因为它直接在按钮本身中附加$qcounter,而不是创建一个中间变量。

最新更新