所以我使用jQuery和PHP创建了一个自动完成框来从数据库中提取内容,并且它工作正常,除非我输入输入框时它会拉回所有结果,而不是类似于我正在打字。
因此,如果您输入测试,则会退回:
This
is
a
Test
而不是显示
Test
这是我的HTML
<input type="text" id="group_name" name="group_name">
这是我正在使用的jQuery
<script>
$(document).ready(function() {
$( "#group_name" ).autocomplete({
source: "/wuzhapnn/php/data_stream/group_names",
select: function(event, ui) {
$("#f").submit(); }
});
});
</script>
这是我的php页面
if ($_GET['run'] == 'group_names') {
// pulls live data from database
$db = db_open();
$query = "SELECT group_name FROM groups";
$result = db_query($db, $query);
if (db_num_rows($result) > 1) {
$result = db_fetch_all($result);
foreach ($result as $key=>$value) {
$group_names_array[] .= $value['group_name'];
}
} else {
}
echo json_encode(array_values(array_unique($group_names_array)));
}
新jQuery
<script>
var availableName;
$.getJson('/wuzhapnn/php/data_stream',function(response){
availableName = response;
});
$(document).ready(function() {
$( "#group_name" ).autocomplete({
source: availableName,
select: function(event, ui) {
$("#f").submit(); }
});
});
</script>
新的PHP页面
if ($_GET['run'] == 'group_names') {
// pulls live data from database
$db = db_open();
$query = "SELECT group_name FROM groups WHERE group_name LIKE '%".$_GET['term']."%'";
$result = db_query($db, $query);
if (db_num_rows($result) > 1) {
$result = db_fetch_all($result);
foreach ($result as $key=>$value) {
$group_names_array[] .= $value['group_name'];
}
} else {
}
echo json_encode(array_values(array_unique($group_names_array)));
}
答案 0 :(得分:2)
您需要添加LIKE
子句。
"SELECT group_name FROM groups WHERE group_name LIKE '%".$_GET['term']."%'";
因为"SELECT group_name FROM groups"
这将提供database
的所有结果,但您只需要那些匹配类型字的人,所以请使用LIKE MySQL
子句。
其他人评论回复。
如果你想在使用它之前创建json对象,你可以按照下面这样做,
var availableName;
$.getJson('/wuzhapnn/php/data_stream/group_names',function(response){
availableName = response;
});
之后只需使用以下代码即可自动完成。
$( "#group_name" ).autocomplete({
source: availableName ,
答案 1 :(得分:1)
您的PHP代码段实际上并未使用自动完成插件发送的值。 如果您使用的是JQuery&#39; plugin,则值send是一个名为 terms 的GET参数。
这需要包含在您的PHP中。
$term = $_GET['term'];
然后,您需要在查询中包含类似以下内容的内容,但首先请在将该值直接用于SQL语句之前将其转义。
SELECT group_name FROM groups WHERE group_name LIKE %<term>%
答案 2 :(得分:0)
让它正常工作
新jQuery
<script>
$(function() {
$( "#group_name" ).autocomplete({
source: "/wuzhapnn/php/data_stream",
minLength: 2,
});
});
</script>
新PHP (感谢Dipesh Parmar)
// pulls live data from database
$db = db_open();
$query = "SELECT group_name FROM groups WHERE group_name LIKE '%".$_GET['term']."%'";
$result = db_query($db, $query);
$result = db_fetch_all($result);
foreach ($result as $key=>$value) {
$group_names_array[] .= $value['group_name'];
}
echo json_encode(array_values(array_unique($group_names_array)));