mysql html5 自动完成_jquery+php查询mysql实现自动完成功能

关于jquery+php查询mysql实现自动完成功能,写这个教程,因为曾经见到的大部分关于自动完成的应用程序都只是给你一个程序源码包,然后告诉你怎么使用,而不是告诉你它是如何工作的以及为什么这样做。而知道这些可以让你对这个插件可以进一步的按自己的需求定制(关于这一点我在我的blog里写过不少关于其他应用的文章)。

5f695ac478d500a3478c5c09eeaa0869.png

好,我们现在开始。

JavaScript代码:

function lookup(inputString) {

if(inputString.length == 0) {

// Hide the suggestion box.

(‘#suggestions’).hide();

} else {

.post("rpc.php", {queryString: ""+inputString+""}, function(data){

if(data.length >0) {

(‘#suggestions’).show();

(‘#autoSuggestionsList’).html(data);

}

});

}

} // lookup

function fill(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指远程过程调用),而没用它实际执行的功能来命名,但是也还不错了。

Copy to Clipboard

e2bccdbad7bc28f4ef2a8fa52a21e480.gif引用的内容:[www.veryhuo.com]// PHP5 Implementation - uses MySQLi. 

db = new mysqli(‘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!’;

}

}

?>

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

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

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

这段php代码你需要在自己的系统中稍作修改,比如你需要更新‘query’到你自己的数据库,需要看在哪里放你数据库表的列名等等。#p#副标题#e#CSS样式:

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

.suggestionsBox {

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:

 Type your county (for the demo):

 

这是主文件的部分html代码,你需要添加的就是一个输入框,并且把 ‘onkeyup’ 函数设置为lookup(this.value)。另外,我建议你不要修改它的ID,如果你不想修改上面的Javascript代码的话。#p#副标题#e#截图:

我想你应该会想要看看最后的效果是什么样子,OK。

6bbd6e34fe03f8854564efd2a0b6d467.png

还有,

e11487256ee08faeb2399d526ea03052.png

最后,下载源码(点击)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是校园表白墙的首页代码,使用了 HTMLjQueryMySQL 实现: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>校园表白墙</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <style> .container { margin: 0 auto; width: 80%; } .form-container { margin-top: 20px; border: 1px solid #ccc; padding: 10px; } .form-container label { display: inline-block; width: 80px; margin-bottom: 10px; } .form-container input[type="text"], .form-container textarea { width: 100%; padding: 5px; margin-bottom: 10px; border-radius: 3px; border: 1px solid #ccc; } .form-container input[type="submit"] { background-color: #318ce7; color: #fff; border: none; border-radius: 3px; padding: 10px 20px; cursor: pointer; } .form-container input[type="submit"]:hover { background-color: #297db6; } .message-container { margin-top: 20px; border: 1px solid #ccc; padding: 10px; } .message-container .message { margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid #ccc; } .message-container .message p { margin: 0; } .message-container .message .meta { font-size: 12px; color: #666; } </style> </head> <body> <div class="container"> <h1>校园表白墙</h1> <div class="form-container"> <h2>我要表白</h2> <form id="message-form" action="submit.php" method="post"> <label for="name">姓名:</label> <input type="text" name="name" id="name"> <label for="content">表白内容:</label> <textarea name="content" id="content" rows="5"></textarea> <input type="submit" value="提交"> </form> </div> <div class="message-container"> <h2>表白留言板</h2> <div id="message-list"></div> </div> </div> <script> // 获取留言列表 function getMessageList() { $.ajax({ url: 'message.php', type: 'get', dataType: 'json', success: function(data) { var messageListHtml = ''; for (var i = 0; i < data.length; i++) { var messageHtml = '<div class="message">'; messageHtml += '<p>' + data[i].content + '</p>'; messageHtml += '<div class="meta">' + data[i].name + ' ' + data[i].created_at + '</div>'; messageHtml += '</div>'; messageListHtml += messageHtml; } $('#message-list').html(messageListHtml); } }); } $(document).ready(function() { // 页面加载完成时获取留言列表 getMessageList(); // 提交留言 $('#message-form').submit(function(event) { event.preventDefault(); var name = $('#name').val(); var content = $('#content').val(); $.ajax({ url: 'submit.php', type: 'post', data: { name: name, content: content }, dataType: 'json', success: function(data) { if (data.status === 'success') { $('#message-form')[0].reset(); getMessageList(); } else { alert('提交失败'); } } }); }); }); </script> </body> </html> ``` 这段代码包括了一个表单用于提交留言和一个区域用于展示留言。在页面加载完成时,会通过 AJAX 请求从服务器上获取留言列表,然后在页面上展示出来。用户填写表单后,点击提交按钮,会通过 AJAX 请求将留言内容提交到服务器上。服务器收到请求后,会将留言内容存储到 MySQL 数据库中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值