我想檢查文本框輸入對一組單詞從數據庫以一定的順序,看看他們是否匹配。如果他們這樣做了,用戶的「任務」將會增加,這將被髮送到關係數據庫,爲給定的任務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);
似乎沒有返回適當的新單詞集合。
數據庫是這樣設置的,所以我期望新的任務編號的關係集會被顯示出來,但它是相同的一組值。
那麼,爲什麼沒有查詢被改變?
感謝
編輯:呼應了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的成功:
看一看整個查詢所生產 –
@AndyGee你是什麼意思? – Growler
如果問題是查詢,請查看查詢。使用像phpmyadmin這樣的數據庫工具來正確查詢查詢,然後將查詢合併到您的代碼中。 –