我正在尝试为我的网站制作一个搜索引擎,但我很好奇如何在不重新加载页面的情况下自动更新,如谷歌、脸书等。
我目前正在使用MySQL与InnoDB表和PHP。我知道如何进行MySQL搜索,但有人建议如何在搜索栏中生成结果,而不重新加载页面吗。我自己做了一些研究,没有发现什么有用的东西。此外,使用MyISAM引擎的全文是否比按索引行搜索更有用。
我仍在学习网络开发的来龙去脉,所以我更喜欢代码建议,而不是"链接到这个程序并执行此操作"。这将在我知道自己在做什么后出现。
感谢所有
您可以使用AJAX来实现这一点。您可以编写一个小型PHP脚本,根据当前输入到搜索框中的字符对数据库进行简单调用,然后使用AJAX调用它来填充搜索框。我不会为你写下全部内容,因为这不是网站的目的,但你可以从这里开始。网上也有很多类似的教程。
AJAX:
function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("Your browser does not support AJAX, please upgrade.");
}
}
//Create XMLHTTPRequest Object
var searchEntry = getXmlHttpRequestObject();
//Send AJAX request, do something when it sends a response
function searchSuggest() {
if (searchReq.readyState == 4 || searchReq.readyState == 0) {
var str = document.getElementById('insertsearchboxidhere').value;
searchEntry.open("GET", 'yourphpscript.php?search=' + str, true);
searchEntry.onreadystatechange = doSearchStuff();
searchEntry.send(null);
}
}
//Function that does the work with the response
function doSearchStuff() {
if (searchReq.readyState == 4) {
var str = searchEntry.responseText;
//Set innerHTML of your stuff to str, whatever else you want
}
}
PHP:很明显,您需要的不仅仅是下面的代码,但主要的工作将通过从数据库中返回以当前输入到搜索框中的字母开头的条目来完成。你可以算出其余的。
$query = "Select distinct(x) from (y) where x like '(z)%'";
x=字段,y=表格,z=通过AJAX 发送的变量
这应该足以构建一个更新的搜索框。