我想检查文本框输入对一组单词从数据库以一定的顺序,看看他们是否匹配。如果他们这样做了,用户的“任务”将会增加,这将被发送到关系数据库,为给定的任务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这样的数据库工具来正确查询查询,然后将查询合并到您的代码中。 –