在php循环中,如何使一个结果的单选按钮独立于下一个结果
我正在做一个测验,问题来自我的数据库。每个选项(A、B、C)都有自己的单选按钮,这是我显示测验的代码:在php循环中,如何使一个结果的单选按钮独立于下一个结果,php,Php,我正在做一个测验,问题来自我的数据库。每个选项(A、B、C)都有自己的单选按钮,这是我显示测验的代码: echo "<table>"; while ($row = mysqli_fetch_array($resultx)) { echo '<tr><td>Question '.$qcounter.'<br/></td></tr>'; $qcounter++; //output rows for rad
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>";
echo”“;
while($row=mysqli\u fetch\u数组($resultx)){
回显“问题”。$qcounter.
;
$qcounter++;
//单选按钮的输出行
回显“($row['Question'])”;
回音“A”。($row['AnswerA']);
回显'B'($row['AnswerB'])。';
回显'C'($row['AnswerC'])。';
}
回声“;
我的问题是,每个问题的单选按钮并不独立于另一个问题。例如:如果你为问题1选择第一选项C,然后为问题2选择选项B,这将从问题1中删除选项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="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>";
echo”“;
while($row=mysqli\u fetch\u数组($resultx)){
回显“问题”。$qcounter.
;
$qcounter++;
//单选按钮的输出行
回显“($row['Question'])”;
回音“A”。($row['AnswerA']);
回显'B'($row['AnswerB'])。';
回显'C'($row['AnswerC'])。';
}
回声“;
在整个循环中使用相同的名称
属性。在那里附加一些独特的东西(比如你的计数器)或者使用数组
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>";
echo”“;
while($row=mysqli\u fetch\u数组($resultx)){
回显“问题”。$qcounter.
;
$qcounter++;
//单选按钮的输出行
回显“($row['Question'])”;
回音“A”。($row['AnswerA']);
回显'B'($row['AnswerB'])。';
回显'C'($row['AnswerC'])。';
}
回声“;
这应该可以通过在单选按钮的名称中添加$qcounter
来解决。或者,您可以尝试从数据库中获取问题的id(pk),并将此id添加到name
属性中。这样,您就已经有了将答案/用法再次保存到数据库的id
编辑:chris85在我打字时回答了这个问题 这应该可以通过在单选按钮的名称中添加$qcounter
来解决。或者,您可以尝试从数据库中获取问题的id(pk),并将此id添加到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>";
echo”“;
while($row=mysqli\u fetch\u数组($resultx)){
回显“问题”。$qcounter.
;
$qcounter++;
//为单选按钮指定名称
$question_number=“q”。$qcounter;
//单选按钮的输出行
回显“($row['Question'])”;
回音“A”。($row['AnswerA']);
回显'B'($row['AnswerB'])。';
回显'C'($row['AnswerC'])。';
}
回声“;
编辑:chris85在我打字时发表了他的评论。他的代码更好,因为它直接在按钮本身中添加$qcounter,而不是创建一个中间变量。每个问题中的单选按钮都需要不同的名称。在上面的代码中,似乎每个问题单选按钮的名称都是“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>";
echo”“;
while($row=mysqli\u fetch\u数组($resultx)){
回显“问题”。$qcounter.
;
$qcounter++;
//为单选按钮指定名称
$question_number=“q”。$qcounter;
//单选按钮的输出行
回显“($row['Question'])”;
回音“A”。($row['AnswerA']);
回显'B'($row['AnswerB'])。';
回显'C'($row['AnswerC'])。';
}
回声“;
编辑:chris85在我打字时发表了他的评论。他的代码更好,因为它直接在按钮本身中添加$qcounter,而不是创建一个中间变量。“基本上,整个测试只能选择一个radiobutton”如果希望输入
进入相同的名称
使用name=“q1[]”
时,所有单选按钮应具有相同的名称。此外,在实际设置之前,您正在回显$qcounter
。在while循环之前do$qcounter=0代码>。如果您启用了错误报告(-1)
@xorif,您就会知道这一点。是的,我已经将它设置在我发布的代码之上,很抱歉没有包括在内it@chris85是的,很有效,谢谢!好的,我把它移到了一个答案。“基本上,你只能为整个测试选择一个单选按钮”意味着,如果你想输入
以相同的名称
使用name=“q1[]”
输入,那么所有单选按钮都应该具有相同的名称。另外,在设置之前,你正在回显$qcounter
。在while循环之前do$qcounter=0代码>。如果您启用了错误报告(-1)
@xorif,您就会知道这一点。是的,我已经将它设置在我发布的代码之上,很抱歉没有包括在内it@chris85是的,很有效,谢谢!好的,我把它移到了一个答案。