2012-04-05 26 views
0

我的INSERT VALUES有問題。問題是當我嘗試插入問題編號時。可以說我嘗試插入2個問題。那麼對於第一個問題,問題編號(QuestionId)應該是1,對於第二個問題應該是2.使用INSERT VALUES時插入錯誤的數字

但問題是兩個問題在插入值時顯示問題編號3。所以它爲每個問題做的是插入下一個問題編號,在這個例子中,所有問題都是'3'。

下面是當我回聲$ questionsql 2個問題,它是什麼,此刻顯示的例子:以上

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代碼在那裏插入值。

$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); 

回答

0

我相信你需要設置表單的值即。 value="1"

<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="1" 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> 
0

for()循環中的代碼有語法錯誤;此代碼不解析。假設你修復並正確循環,你的問題可能是你插入$ _POST ['questionNum']。從我所看到的,這個變量的值將是總共個問題,而不是個別問題的個數。

相反,您可能只使用$ i的值,例如,

for($i = 0; $i++; $i < count($_POST['questionText'])){ 

    $insertquestion[] = "'". $i ."','". 
       mysql_real_escape_string($_POST['questionText'][$i]) ."'"; 

} 
+0

我只想知道,因爲我可以創建多個考試,在第一次考試中,如果我創建了5個問題,那麼它將顯示問題編號1至5,但如果我然後創建第二個考試,這也是5個問題,以您的示例它是否會提出1-5或6-10的問題數字。這就是爲什麼我認爲它更好,只是爲了能夠顯示來自應用程序的numQuestion,以便它顯示正確的問題編號。 – user1309180 2012-04-05 03:00:34

0

您可以訪問POST變量數組($_POST['questionText'][$i]),因爲你使用的一個小竅門在這裏:

$("<textarea class='textAreaQuestion'></textarea>").attr('name',$this.attr('name')+"[]") 
        .attr('value',$this.val()) 

(你錯過了;在行順便說一句的結尾) 這條線,你正在生成一個HTML如:

<textarea name="dunnowhat[]"></textarea> 
<textarea name="dunnowhat[]"></textarea> 
<textarea name="dunnowhat[]"></textarea> 
<textarea name="dunnowhat[]"></textarea> 

看到那些[]的?這是什麼使這項工作。但對於問題編號,您並未使用相同的技巧。現在更大的問題,即使你使用,也可能不一樣。想象一下,如果你跳過一個值,會發生什麼。它可能不會在POST變量數組中顯示爲空,因此它可能會通過索引混淆問題和問題編號的配對(數組項將被移位)。

因此,我不推薦使用這個技巧,而是使用名稱間距。有一個索引計數,並追加那個,而不是[]。所以它會成爲這樣的:

<input type="text" name="question-index.1">3</input> 
<textarea name="dunnowhat.1"></textarea> 
<input type="text" name="question-index.2">5</input> 
<textarea name="dunnowhat.2"></textarea> 
<input type="text" name="question-index.3">4</input> 
<textarea name="dunnowhat.3"></textarea> 
<input type="text" name="question-index.4">1</input> 
<textarea name="dunnowhat.4"></textarea> 

或者更簡單,這些ID的直接附加到名稱(用jQuery)

<textarea name="dunnowhat.3"></textarea> 
<textarea name="dunnowhat.5"></textarea> 
<textarea name="dunnowhat.4"></textarea> 
<textarea name="dunnowhat.1"></textarea> 

做一個foreach在$ _POST數組檢查如果鍵啓動與dunnowhat,你會得到所有的問題。

但即使所有這些。爲什麼不只是使用MySQL的AUTO_INCREMENT?如果您不需要用戶指定可解決整個問題的問題編號。至於一個完整的代碼......我不會寫一個,這裏有太多需要改變的地方。

+0

這看起來很複雜,應該是什麼。我只想知道如何正確顯示INSERT VALUES中的numQuestion,這就是我所要求的。 P.S我不能使用自動增量,因爲我可能會創建2個會話,並且如果我創建了第2個會話,我希望問題編號從1開始。 – user1309180 2012-04-05 03:03:27

相關問題