插入值有问题。问题是当我尝试插入问号时。假设我尝试插入两个问题。对于第一个问题,问题号(QuestionId)应该是1,而对于第二个问题,应该是2。
但问题是,当我插入值时,这两个问题都会显示第3号问题。所以,对于每个问题,它所做的就是插入下一个问题号,在这个例子中,所有问题都是'3‘。
下面的例子说明了当我在$questionsql上回答两个问题时,它正在显示什么:
INSERT INTO Question (QuestionId, QuestionContent) VALUES ('3','what is my name'), ('3','what is my age') 以上内容是不正确的。以下是它应该附和的内容:
INSERT INTO Question (QuestionId, QuestionContent) VALUES ('1','what is my name'), ('2','what is my age') 所以我想知道的是如何显示每个问题的正确的问号,它应该按照问题1、2、3等的正确顺序添加正确的问号。
下面是javascript代码和表单代码,它将一个问题附加到表行中。用户将一个问题附加到表行中。当用户添加第一个问题时,它会附加问题1和问题,当用户附加第二个问题时,它会附加问题2和问题等等。
<script>
function insertQuestion(form) {
var $tbody = $('#qandatbl > tbody');
var $tr = $("<tr class='optionAndAnswer' align='center'></tr>");
var $qid = $("<td class='qid'>" + qnum + "</td>");
var $question = $("<td class='question'></td>");
$('.questionTextArea').each( function() {
var $this = $(this);
var $questionText = $("<textarea class='textAreaQuestion'></textarea>").attr('name',$this.attr('name')+"[]")
.attr('value',$this.val())
$question.append($questionText);
});
$tr.append($qid);
$tr.append($question);
$tbody.append($tr);
}
++qnum;
$(".questionNum").text(qnum);
$(".num_questions").val(qnum);
</script>
<form id="QandA" action="insertQuestion.php" method="post" >
<table id="question">
<tr>
<th colspan="2">
Question Number <span class="questionNum">1</span>
<input type="hidden" class="num_questions" value="" name="numQuestion">
</th>
</tr>
<tr>
<td rowspan="3">Question:</td>
<td rowspan="3">
<textarea class="questionTextArea" rows="5" cols="40" name="questionText"></textarea>
</td>
</tr>
</table>
</form>下面是它插入值的php代码。如何让它正确地显示numQuestion。我不能做一个简单的计数循环,因为我可能有两个考试,所以在为第一次考试创建问题之后,在第二次考试中,我需要问题号再次从'1‘开始,所以我认为正确地显示’数字问题‘更好。
$i = 0;
$c = count($_POST['gridValues']);
$insertquestion = array();
for($i = 0; $i < $c; $i++ ){
switch ($_POST['gridValues'][$i]){
case "3":
$selected_option = "A-C";
break;
case "4":
$selected_option = "A-D";
break;
default:
$selected_option = "";
break;
}
$optionquery = "SELECT OptionId FROM Option_Table WHERE (OptionType = '". mysql_real_escape_string($selected_option)."')";
$optionrs = mysql_query($optionquery);
$optionrecord = mysql_fetch_array($optionrs);
$optionid = $optionrecord['OptionId'];
$insertquestion[] = "'".
mysql_real_escape_string( $_POST['numQuestion'] ) ."','".
mysql_real_escape_string( $_POST['questionText'][$i] ) ."','".
mysql_real_escape_string( $optionid ) ."'";
}
$questionsql = "INSERT INTO Question (SessionId, QuestionId, QuestionContent, QuestionMarks, OptionId)
VALUES (" . implode('), (', $insertquestion) . ")";
echo($questionsql);
mysql_close();发布于 2012-04-05 13:32:22
你不必生成这些问号。尝试在数据库中使用自动增量序列。你把这里的一些事情弄糊涂了。您需要数据库中的唯一标识符,这与前面表的编号不同。此外,如果您有不同的考试与不同的问题,您应该有两个表,一个举行您的考试,和一个持有您的问题的自动增量id和一个外键,以引用它属于的考试。在这种情况下,您不必提交问题Id,而只需查询问题名(以及考试引用),数据库将生成您的Id。表中的问题计数值需要独立于数据库Id。
发布于 2012-04-05 13:36:19
如果它是主键,则按如下方式离开该字段
INSERT INTO Question (QuestionContent) VALUES ('what is my name'), ('what is my age')它将自动将id分配给问题。当您获得要显示的数据时,您可以简单地使用一个变量来生成问号。您必须避免使用id作为问号。
https://stackoverflow.com/questions/10029375
复制相似问题