JSfiddle:http: //jsfiddle.net/ybZvv/57/
我在这里有一个小提琴,用户可以在其中附加行并为每一行选择答案。要使用小提琴,请按照以下步骤操作:
- 当您打开小提琴时,单击“添加问题”按钮两次。这将在下面附加两行。
- 在第一行选择按钮 A 和 B 中,这些按钮将变为绿色,在下方您将看到这些选定按钮的文本输入值。
- 在第二行选择按钮 A、C 和 E,这些按钮将变为绿色,在下方您将看到这些选定按钮的文本输入值。
现在我想做的是,对于每一行中的每个答案,它们都将包含它自己的“AnswerId”,并且答案将被插入到“Answer”表的“Answer”列中。
以下是 jsfiddle 答案后的表格应该是什么样子:
答案表
AnswerId (auto) Answer
5 AB
6 ACE
我在上表中遇到的唯一问题是它没有在“答案”列中插入答案。
然后我想将“答案”表中的“AnswerId”存储在“问题”表中。所以我附加了 2 行,“QuestionId”是 1 和 2,下面是“问题”表的样子:
问题表
QuestionId AnswerId
1 5
2 6
上表工作正常。
以下是我收到的错误:
- 注意:未定义的偏移量:0 在 /web/stud/QandATable3.php 的第 172 行
我的问题是,通过查看下面的代码,如何修复上述错误,以便能够在“答案”列下插入答案?
下面是 php/mysqli 代码(我已经注释了发生错误的行):
$i = 0;
$c = count($_POST['gridValues']); //Counts each appended row which works
for($i = 0; $i < $c; $i++ ){
$selected_answer = $_POST['value'];
$answersql = "INSERT INTO Answer (Answer)
VALUES (?)";
if (!$insertanswer = $mysqli->prepare($answersql)) {
// Handle errors with prepare operation here
}
$insertanswer->bind_param("s", $selected_answer);
$insertanswer->execute();
if ($insertanswer->errno) {
// Handle query error here
}
$insertanswer->close();
$lastID = $mysqli->insert_id;
$questionsql = "INSERT INTO Question (QuestionId, AnswerId)
VALUES (?, ?)";
if (!$insert = $mysqli->prepare($questionsql)) {
// Handle errors with prepare operation here
}
$insert->bind_param("ii", $_POST['numQuestion'][$i], $lastID);
$insert->execute();
if ($insert->errno) {
// Handle query error here
}
$insert->close();
}
?>
下面是成功为每一行附加一个问题编号的代码:
var qnum = 1;
var $qid = $("<td class='qid'></td>").text(qnum);
$('.num_questions').each( function() {
var $this = $(this);
var $questionNumber = $("<input type='hidden' class='num_questionsRow'>").attr('name',$this.attr('name')+"[]")
.attr('value',$this.val());
$qid.append($questionNumber);
++qnum;
$(".questionNum").text(qnum);
$(".num_questions").val(qnum);
$tr.append($qid);