【问题标题】:sql search engine autoupdate phpsql搜索引擎自动更新php
【发布时间】:2012-07-31 00:39:33
【问题描述】:

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

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

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

谢谢大家

【问题讨论】:

    标签: php sql search auto-update


    【解决方案1】:

    您可以使用 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 发送的变量

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

    【讨论】:

    • 非常感谢您的帮助。我确实有一本书,其中包含一些 Ajax,但我还没有真正涵盖该部分。我确实同意“这不是该网站的用途”,因为我真的想好好学习这一点,而不仅仅是复制粘贴材料。
    猜你喜欢
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多