INSERTVALUESに問題があります。問題は、質問番号を挿入しようとしたときです。2つの質問を挿入しようとしましょう。最初の質問の場合、質問番号(QuestionId)は1で、2番目の質問の場合は2である必要があります。
しかし、問題は、値を挿入すると、両方の質問に質問番号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>
以下は、値を挿入するphpコードです。numQuestionを正しく表示するにはどうすればよいですか。2つの試験がある可能性があるため、単純なカウントループを実行できません。最初の試験の質問を作成した後、2番目の試験では、質問番号を「1」から再開する必要があるため、正しく行う方がよいと思います。 'numQuestion'を表示します。
$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();