for ($i=0; $i<$total_questions_for_exam; $i++) {
$question_id= $question_and_answers[$i]['question_id'];
$numberofanswersperquestion = count_answers_belongToOne_questionNew($question_id);
//die(var_dump($question_id));
$student_answer_per_question = retrieve_student_result ($_SESSION['user_id'], $_GET['quiz_id'], $question_id);
$correct_answer = $numberofanswersperquestion[0]['answer_name'];
echo ' <form method="post" id="review_form" name="review_form" action="view_user_summary.php">
<table class="table table-bordered table-condensed table-datatable table-hover review_marks">
<tbody>
<tr>
<td style="text-align: left;" width="100%"><strong>Question '. ($i+1) .'</strong></td>
</tr>
<tr>
<td style="text-align: left;" width="100%">' . $question_and_answers[$i]['question_name'] .'</td>
</tr>';
if($student_answer_per_question == '')
echo '<tr>
<td style="text-align: left;" width="100%" class="warning"><em>Question Not attempted</em><br><strong>Correct Answer is </strong><br>' . $numberofanswersperquestion[0]['answer_name'] . '</td>
</tr>';
else if ($student_answer_per_question == $correct_answer)
echo '<tr>
<td style="text-align: left;" width="100%" class="success"><strong>Your answer is correct.</strong><br>' . $student_answer_per_question .'</td>
</tr>';
else
echo '<tr>
<td style="text-align: left;" width="100%" class="danger">
<table style="width: 100%">
<tbody>
<tr>
<th style="width: 50%"><strong>Your Answer</strong></th>
<th style="width: 50%"><strong>Correct Answer</strong></th>
</tr>
<tr>
<td style="width: 50%">' . $student_answer_per_question . '</td>
<td style="width: 50%">' . $correct_answer .'</td>
</tr>
</tbody>
</table>
</td>
</tr>';
echo
'<tr>
<td style="height: 5px;" width="100%"> </td>
</tr>
<tr>
<td style="height: 5px;" width="100%"> </td>
</tr>
</tbody>
</table>
<div class="[ form-group ] correct_answer">
<input type="checkbox" name="fancy-checkbox-primary" id="fancy-checkbox-primary" autocomplete="off" />
<div class="[ btn-group ]">
<label for="fancy-checkbox-primary" class="[ btn btn-primary ]">
<span class="[ glyphicon glyphicon-ok ]"></span>
<span> </span>
</label>
<label for="fancy-checkbox-primary" class="[ btn btn-default active ]">
Correct Answer
</label>
</div>
</div>';
}
echo '<button class="btn btn-large btn-block btn-primary submitbutton" type="submit" style="margin-top:100px;" name="submit_review">Submit Review</button></form>';
大家好,上面的代码基本上只是在我的数据库中提取所有问题和asnwers。我想要实现的是在这个for循环中有一个复选框,允许用户勾选方框表示答案是正确的,或者如果他们不做任何事情,则认为答案是错误的。
它显示为我想要它只是一个问题,当我点击第二个复选框,第一个仍然滴答作响,我没有控制第二个复选框。知道如何解决这个问题吗?
认为显示我的意思的视频是一个好主意,我提供了一个链接。
答案 0 :(得分:1)
你有一个循环:
<input type="checkbox" name="fancy-checkbox-primary" id="fancy-checkbox-primary" autocomplete="off" />
这意味着您的复选框都具有相同的id
。这是无效的标记,并且尝试使用id
的任何代码的行为都将是未定义的。 (它可能会找到第一个匹配元素,最后一个匹配元素,所有匹配元素,没有匹配元素等)
顾名思义,id
旨在识别元素。您需要更正标记,以便可以正确识别元素,以及调整使用这些元素识别它们的任何代码。
这可能涉及在循环中向id
附加值,使每个值都是唯一的。或者也许使用class
代替id
。从问题中的代码我不能真正地与后者对话,但前者应该足够简单:
<input type="checkbox" name="fancy-checkbox-primary" id="fancy-checkbox-primary-' . $i . '" autocomplete="off" />
(注意:我并不完全熟悉你用来设置这些复选框样式的机制,显然这里有一些插件。你可能还需要类似地修改name
和/或与此for
值相关联的id
属性。基本上代码中显示的任何内容,无论是问题还是其他内容,都依赖于id
。)
尽管仍然没有100%清楚这对问题中包含的代码而不是的含义是什么,所以你可能需要修补自己的需求。但从根本上说,这里的问题是重复的id
值。