mysql自动提示功能_搜索自动提示功能的实现

使用 jQuery(Ajax)/PHP/MySQL实现自动完成功能

JavaScript代码:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

$.post("rpc.php",{queryString:""+inputString+""},function(data){if(data.length>0) {

$(‘#suggestions’).show();$(‘#autoSuggestionsList’).html(data);}

});

}

}//lookupfunctionfill(thisValue) {

$(‘#inputString’).val(thisValue);$(‘#suggestions’).hide();}

JS的解释:

好,从上面的代码看到,我们需要连接到一个叫做rpc.php的文件,这个文件处理所有的操作。

lookup函数使用从文本输入框中得到的单词然后使用jQuery中Ajax的方法POST把它传给rpc.php。

如果输入字符 ‘inputString’是‘0’(Zero,译注:在这里是指在搜索框中没输入任何内容),建议框就被隐藏,这也很人性化,你想,如果在搜索框中没有输入任何东西,你也不期望会出现个建议提示框。

如果输入框中有内容,我们就得到了这个 ‘inputString’并传递给rpc.php页面,然后jQuery 的$.post()函数被使用,如下:

$.post(url,[data],[callback])

‘callback’部分可以关联一个函数,这个比较有意思,只有在数据(data)被加载成功的时候才会执行(译注:此处为意译,没看懂原文:

如果返回的数据(data)不为空(也就是说,有东西要显示),那就显示搜索提示框并且使用返回的数据(data)来代替其中的html代码。

就这么简单!

PHP后台程序(rpc.php):

如你所知(译注:不好意思,看王小波就学会了这么个口头禅),我的php后台程序都叫做rpc.php(RPC指远程过程调用),而没用它实际执行的功能来命名,但是也还不错了。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

//PHP5 Implementation - uses MySQLi.$db=newmysqli(‘localhost’,‘root’,”,‘autoComplete’);if(!$db) {//Show error if we cannot connect.echo‘ERROR:Could not connect to the database.’;

}else{//Is there a posted query string?if(isset($_POST[‘queryString’])) {$queryString=$_POST[‘queryString’];//Is the string length greater than 0?if(strlen($queryString)>0) {//Run the query: We use LIKE ‘$queryString%’

// The percentage sign is a wild-card, in my example of countries it works like this…

// $queryString = ‘Uni’;

// Returned data = ‘United States, United Kindom’;$query=$db->query("SELECT value FROM countries WHERE value LIKE ‘$queryString%’ LIMIT 10");if($query) {//While there are results loop through them - fetching an Object (i like PHP5 btw!).while($result=$query->fetch_object()) {//Format the results, im using

for the list, you can change it.

// The onClick function fills the textbox with the result.echo‘

’.$result->value.‘’;

}

}else{echo‘ERROR:There was a problem with the query.’;

}

}else{//Dont do anything.}//There is a queryString.}else{echo‘There should be no direct access to this script!’;

}

}?>

PHP代码解释:

鉴于代码中我已经加了很多注释,在这里我就不再说的很详细了。

一般情况下,需要接收这个 ‘QueryString’ 然后在其最后使用通配符产生一个查询语句。

这意味着在这种情况下,每次敲进去一个字符都需要产生一个查询语句,如果一直都这样做的话,恐怕MYSQL会受不了。但是为了尽量的简化这个过程,这种做法对一个规模较小的应用应该没什么问题。

这段php代码你需要在自己的系统中稍作修改,比如你需要更新‘$query’到你自己的数据库,需要看在哪里放你数据库表的列名等等。

CSS样式:

我使用的是CSS3,天哪,它真的很好用,虽然在Firefox 或者Safari浏览器上会有功能限制。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

position:relative;

left:30px;

margin:10px 0px 0px 0px;

width:200px;

background-color:#212427;-moz-border-radius:7px;-webkit-border-radius:7px;

border:2px solid#000;color:#fff;}.suggestionList {

margin:0px;

padding:0px;

}.suggestionList li {

margin:0px 0px 3px 0px;

padding:3px;

cursor:pointer;

}.suggestionList li:hover {

background-color:#659CD8;}

CSS代码都很标准,没什么需要特别指出的。

主文件HTML:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

Type your county (forthe demo):
upArrow
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值