如何在自动完成中执行实时查询和显示数据

时间:2014-08-11 03:00:24

标签: jquery mysql autocomplete

我的index.html文件

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Demo</title>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/minified/jquery-ui.min.css" type="text/css" /> 
</head>
<body> 

<form action='' method='post'>
    <p><label>Country:</label><input type='text' name='country' value='' class='auto'></p>
</form>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js">     </script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>    
<script type="text/javascript">
$(function() {

//autocomplete
$(".auto").autocomplete({
    source: "search.php",
    minLength: 1
});             

});
</script>
</body>
</html>

我的search.php文件

<?php

$con=mysqli_connect("localhost","root","something","hindi_test");

// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_set_charset ( $con , 'utf8' );

$result = mysqli_query($con,"SELECT A FROM data ");

while($row = $result->fetch_object()){
        $user_arr[] = $row->A;


}
echo json_encode($user_arr);

mysqli_close($con);

?>

此代码工作正常。它显示了&#39; A&#39;的所有数据成员。柱。现在我想在用户输入数据的基础上显示自动完成功能,以便在输入更多字符时过滤数据。如何在我的search.php文件中执行此操作?

2 个答案:

答案 0 :(得分:1)

根据autocomplete jquery documentation

  

添加了一个查询字符串,其中包含一个术语字段,服务器端脚本应使用该字段来过滤结果。例如,如果source选项设置为“http://example.com”并且用户键入foo,则会向http://example.com?term=foo发出GET请求

您可以在服务器端读取查询字符串,并使用de term value

过滤查询

您的查询可能是这样的:

$result = mysqli_query($con,"SELECT A FROM data WHERE A LIKE %". $_GET["term"] ."%");

当然你必须清理$ _GET [“term”]以防止SQL注入攻击。

答案 1 :(得分:0)

if(isset($_GET['term']))
{
    $result = mysqli_query($con,"SELECT A FROM data WHERE A LIKE %". $_GET["term"] ."%");
}