0

我正在尝试为我的网站制作一个搜索引擎,但是我很好奇如何让它自动更新,例如 google、facebook 等,而无需重新加载页面。

我目前正在将 MySQL 与 InnoDB 表和 PHP 一起使用。我知道如何进行 MySQL 搜索,但是是否有人对如何在不重新加载页面的情况下在搜索栏中生成结果提出建议。我自己做了一些研究,没有发现任何有用的东西。此外,使用 MyISAM 引擎的全文是否比通过索引行搜索更有用。

我仍在学习 Web 开发的来龙去脉,因此我更喜欢代码建议,而不是“链接到该程序并执行此操作”。一旦我知道我在做什么,那将在以后出现。

谢谢大家

4

1 回答 1

0

您可以使用 AJAX 来完成此操作。您可以编写一个小的 PHP 脚本,根据当前输入到搜索框中的字符对数据库进行简单调用,然后使用 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 发送的变量

这应该足以构建一个更新的搜索框。

于 2012-07-31T02:20:47.563 回答