INSERT VALUES に問題があります。問題は、質問番号を挿入しようとするときです。2 つの質問を挿入しようとするとします。最初の質問の場合、質問番号 (QuestionId) は 1 で、2 番目の質問の場合は 2 にする必要があります。
しかし、問題は、INSERT VALUES のときに両方の質問に質問番号 3 が表示されることです。したがって、すべての質問に対して行っていることは、この例ではすべての質問に対して「3」である次の質問番号を挿入することです。
以下は、2 つの質問に対して $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 番目の質問を追加すると、質問番号 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>
以下は、INSERT VALUES の php コードです。
$i = 0;
$insertquestion = array();
for($i = 0; $i++ ){
$insertquestion[] = "'". mysql_real_escape_string( $_POST['numQuestion'] ) ."','".
mysql_real_escape_string( $_POST['questionText'][$i] ) ."'";
}
$questionsql = "INSERT INTO Question (QuestionId, QuestionContent)
VALUES (" . implode('), (', $insertquestion) . ")";
echo($questionsql);