2014-01-17 133 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..."); 
    } 
}