2014-01-17 131 views
3

我想檢查文本框輸入對一組單詞從數據庫以一定的順序,看看他們是否匹配。如果他們這樣做了,用戶的「任務」將會增加,這將被髮送到關係數據庫,爲給定的任務ID返回一組新的單詞。 JavaScript questNum和PHP questNum變量似乎正在適當增加,但查詢沒有得到正確的結果集。更新查詢字符串中的PHP變量從JS變量

Utilities.js文件:

頁面加載時,我加載字的第一個任務:

$(document).ready(function() { 
    $.each(wordsArray, function(key, value) { 
     $(".wordBank_Words").append("<div class='bank-word' word='" + key + "' ><b>" + key + "</b>: " + value + "</div>"); 
    }); 

    /*If user clicks word in word bank, word is added to text box*/ 
    $(".bank-word").click(function (event) { 
     $('#textBox').val($('#textBox').val() + " " + $(this).attr('word'));   
     //hide word from word bank 
     $(this).hide(); 
    }); 


    /*If User removes word from text box, add it back to word bank*/ 
    $('#textBox').on('change', function(){ 
     var words = $(this).val().split(' '); 
     $('.bank-word').each(function(){ 
      if(words.indexOf($(this).attr('word')) !== -1){ 
       $(this).hide(); 
      } 
      else { 
       $(this).show(); 
      } 
     }); 
    }); 
}); 

/*Check player sentence input to see if grammar is correct*/ 
function submitMe() { 
    var input = document.getElementById('textBox').value; 

    if ($.trim(input) == getSentence(questNum)) { 
     $("#responseVerify").html("Great job"); 
     $("#textBox").val("").trigger("change"); 
     questNum++; 
     $.get("php/Quests.php", { "_questNum" : questNum}, 
      function(returned_data) { 
       $("#output").html(returned_data); 
      } 
     ); 
    } 
    else { 
     $("#responseVerify").html("Keep going..."); 
    } 
} 

Quests.php文件:

<?php 
    //if user's input is correct, increment task number 
    include 'DbConnect.php'; 
    $questNumber = (isset($_GET['_questNum']) ? ($_GET['_questNum']) : 1); 

    echo "testing..." . $questNumber; 

    $sql = $mysqli->query(
    "SELECT t.*, v.* 
    FROM task t 
    INNER JOIN vocabtask vt ON (t.id = vt.taskid) 
    INNER JOIN vocab v ON (v.id = vt.vocabid) 
    WHERE vt.taskid = " . $questNumber); 
    $wordsArray = array();    
    while ($row = $sql->fetch_assoc()) { 
     $wordsArray[$row['chinese']] = $row['english']; 
    } 
    mysqli_close($mysqli); 

    echo "<script type='text/javascript'> var wordsArray = " . json_encode($wordsArray) . "; </script>"; 
?> 

用戶輸入之前正確的句子放入文本框echo "testing..." . $questNumber;給出輸出:

testing...1 

當用戶輸入正確的字符串到文本框,JS變量questNum++;遞增,然後echo "testing..." . $questNumber;給出輸出:`

testing...2 

所以我知道遞增JS questNum被髮送到PHP文件...

然而,查詢WHERE vt.taskid = " . $questNumber);似乎沒有返回適當的新單詞集合。

數據庫是這樣設置的,所以我期望新的任務編號的關係集會被顯示出來,但它是相同的一組值。

enter image description here

那麼,爲什麼沒有查詢被改變?

感謝


編輯:呼應了SQL提供了:

1)之前,我遞增questNum:

SELECT t.*, v.* FROM task t INNER JOIN vocabtask vt ON (t.id = vt.taskid) INNER JOIN vocab v ON (v.id = vt.vocabid) WHERE vt.taskid = 1

2)後,我遞增questNum :

SELECT t.*, v.* FROM task t INNER JOIN vocabtask vt ON (t.id = vt.taskid) INNER JOIN vocab v ON (v.id = vt.vocabid) WHERE vt.taskid = 2

我複製這兩個進入phpMyAdmin的成功:

enter image description here

enter image description here

+0

看一看整個查詢所生產 –

+0

@AndyGee你是什麼意思? – Growler

+0

如果問題是查詢,請查看查詢。使用像phpmyadmin這樣的數據庫工具來正確查詢查詢,然後將查詢合併到您的代碼中。 –

回答

1
<?php 
    //if user's input is correct, increment task number 
    include 'DbConnect.php'; 
    $questNumber = (isset($_GET['_questNum']) ? ($_GET['_questNum']) : 1); 

    echo "testing..." . $questNumber; 
    $sql_str = " 
    "SELECT t.*, v.* 
    FROM task t 
    INNER JOIN vocabtask vt ON (t.id = vt.taskid) 
    INNER JOIN vocab v ON (v.id = vt.vocabid) 
    WHERE vt.taskid = " . $questNumber"; 
    $sql = $mysqli->query($sql_str); 
    $wordsArray = array(); 
    while ($row = $sql->fetch_assoc()) { 
     $wordsArray[$row['chinese']] = $row['english']; 
    } 
    mysqli_close($mysqli); 
    echo json_encode($wordsArray); 
?> 

function submitMe() { 
    var input = $("#textBox").val(); 

    if ($.trim(input) == getSentence(questNum)) { 
     $("#responseVerify").html("Great job"); 
     $("#textBox").val("").trigger("change"); 
     questNum++; 
     $.ajax({ 
      url: "php/Quests.php", 
      dataType: "json", 
      method: "GET", 
      data: {"_questNum":questNum}, 
      success: function(result){ 
       $.each(result, function(key, value) { 
        $(".wordBank_Words").append("<div class='bank-word' data-word='" + key + "' ><b>" + key + "</b>: " + value + "</div>"); 
       });    
      } 
     }); 
    }else { 
     $("#responseVerify").html("Keep going..."); 
    } 
}