【发布时间】:2013-08-14 02:34:14
【问题描述】:
上下文
- 我在motherpipe.co.uk 的搜索引擎中添加了自动完成功能。
- 我希望它只建议以用户输入的字母开头的术语。例如,如果用户键入“lon”,该函数应返回十个以“lon”开头的建议。
- 我在本地数据库中有大约 50,000 个术语
- 我已经设法让自动完成功能启动并运行,使用调用数据库 (sql) 的单独 php 脚本。
问题
我的问题是,无论用户输入什么,都会显示数据库中的前十个列表(基于 id)。只有在用户输入另一个字母后,建议才会正确显示。
问题
如何修改 jquery 或 php 代码以确保只返回以输入内容开头的术语(然后根据 id 只返回该子集中的前十个术语。)?
HTML
<script type="text/javascript" src="/scripts/autocomplete/autocomplete/jquery.js"></script>
<script type="text/javascript" src="/scripts/autocomplete/autocomplete/jquery.autocomplete.js"></script>
<script>
$(document).ready(function(){
$("#tag").autocomplete("/scripts/autocomplete/autocomplete/autocomplete.php", {
selectFirst: false,
minChars: 2
});
});
</script>
PHP
<?php
$q=$_GET['q'];
$mydata=mysql_real_escape_string($q);
$mysqli=mysqli_connect('localhost','username','password','languages') or die("Database Error");
$sql="SELECT searchterms FROM topterms WHERE searchterms LIKE '$mydata%' ORDER by id";
$result = mysqli_query($mysqli,$sql) or die(mysqli_error());
if($result)
{
while($row=mysqli_fetch_array($result))
{
echo $row['searchterms']."\n";
}
}
?>
【问题讨论】:
-
我希望每个人都问这种类型的问题,很好的风格,很好的背景:)
-
您可以更改 PHP 代码以查看结果并删除任何不以传入的字符串开头的答案并限制为 10 个答案。您还可以检测空字符串并返回空数组。
-
我不知道为什么搜索
Shield会找到Cheap flights -
minChars属性将搜索开始限制指定为 2 个字符。将其减少到 1 将允许您搜索第一个字符本身。
标签: php jquery sql autocomplete