【发布时间】:2015-04-17 17:19:50
【问题描述】:
我正在为学生进行在线测试/测验,并使用 PHP 和 MySQL。目前我有一个表单,我可以在其中将问题和答案添加到数据库中。
但是,我无法通过选择多个复选框将正确答案提交到数据库中。我想将所有正确答案存储在名为 correct_answer(id, question_id, answer_id) 的表中,并从名为 answers(id,answer_id, answer) 的表中插入所有选定的 id。
如何仅插入选中的复选框值并以某种方式跳过未选中的复选框?
我的 HTML 部分:
<form id="add_question_form" method="post">
<label>Question: *</label>
<input id="question" type="text" name="question" class="form_default" placeholder="Type your question here" required>
<div class="inputs">
<label>Answer #1: *</label>
<input type="text" id="answer" name="dynamic[]" class="form_default" placeholder="answer" required/>
<input type="checkbox" name="selected_item[]" id="checkbox" value="<?php echo $answer_id;?>">
<label>correct</label>
<br>
<label>Answer #2: *</label>
<input type="text" id="answer" name="dynamic[]" class="form_default" placeholder="answer" required/>
<input type="checkbox" name="selected_item[]" id="checkbox" value="<?php echo $answer_id;?>" />
<label>correct</label>
<br>
</div>
<input id="submit" type="submit" name="add_question" value="Submit" class="button">
</form>
PHP 代码:
if (isset($_POST['add_question'])) { // Checks if the form has been submitted
if (isset($_POST['selected_item']) && !empty($_POST['selected_item'])) {
$counter++; // each time adds 1 after user posts the question
$optionArray = $_POST['dynamic']; // submits multiple answers to the database
for ($j = 0; $j < count($optionArray); $j++) {
$answer = mysql_real_escape_string($_POST['dynamic'][$j]); // returns multiple answers
$check_answer = "SELECT id, answer FROM answers WHERE answer = '$answer'";
$check_answer = mysql_query($check_answer); //checks if answer is exist in the database
while ($row = mysql_fetch_assoc($check_answer)) { // fetch a result rows as an associative array
$answer_id = $row['id']; // answer id from database
}
if (mysql_num_rows($check_answer) > 0) {
$q = "INSERT INTO correct_answer (question_id, answer_id) VALUES ('$counter','$answer_id')";
$q = mysql_query($q);
}
}
}
}
例如:
我正在添加问题和三个答案“a”、“b”和“c”。选择“a”和“c”作为正确答案。
所有答案都已成功添加到 MySQL“答案”表中:
1 - 一个
2-b
3-c
- 但是,它不是将 id ="1" 和 "3" 添加到 "correct_answer" 表中(因为 "a" 和 "c" 有这些 id 编号),而是添加前两个答案的 id "1" 和 "2 “..因此,它错误地匹配正确答案并将“a”和“b”设置为正确答案。
谁能帮帮我?我想插入多个正确答案,但前提是它们被选中..
提前致谢,任何帮助将不胜感激!
【问题讨论】:
标签: php mysql arrays checkbox submit