php - 如何在搜索引擎中使用关键词

标签 php html loops mysqli search-engine

你好,我坐在这里思考以下问题:

我有一个自动搜索引擎,它通过一个表格运行,例如:

zipcode    city       sum

12345      town       5

我确实通过使用 javascript 实现了搜索,该 javascript 在将输入的每个字母上运行一个循环。到那时我只能查找一个关键字,例如可以是城市名称或邮政编码。

现在我想将这两者结合起来,这样我就不会再将用户限制为这两者之一,甚至在输入城市和邮政编码时也会找到它。

因此我想使用以下方式分隔每个关键字:

preg_split('/[\s]+/', $keywords);

这就是目前的问题。使用这种方法,每个关键字都将插入一个数组中。它是如何工作的:

在 html 中我有一个输入字段。下面我有一个无序列表 div。在那个 div javascript 中自动添加我的 search.php 文件中的结果。看起来像:

include('../scripts/db_connect.php');

if (isset($_POST['search_term']) == true && empty($_POST['search_term']) == false) {

$search_term = $db->real_escape_string(htmlentities(trim($_POST['search_term'])));

$search_term_query = "SELECT * FROM `a` WHERE `b` LIKE '$search_term%'";

if ($result_query = $db->query($search_term_query)) {

    while ($row = $result_query->fetch_assoc()) {

    echo '<li>', 
          $row["a"], 
          ' ', 
          $row["b"],  
          ' ',
          '( ',
          $row["c"],
          ' )', 
          ' </li>';
    }

}

}

我的 javascript 只处理一个关键字:

$(document).ready(function() {
    $('.searchfield').keyup(function() {
        var search_term = $(this).attr('value');
        $.post('ajax/search.php', {search_term:search_term}, function(data) {
            $('.result').html(data);

            $('.result li').click(function() {
                var result_value = $(this).text();
                $('.searchfield').attr('value', result_value);
                $('.result').html('');
            });
        });
    });
});

所以目前我不知道如何解决这个问题。如果有人可以帮助我,我将不胜感激。谢谢。

最佳答案

只需保持值不变,然后通过邮寄调用将整个字符串发送到您的 php 文件。 在您的 search.php 中,您可以尝试这样的操作:

function split_search_term($val) {
    $val = explode(" ", $val);
    $search_term_query = "SELECT * FROM `a` WHERE ";
    foreach($val as $val_row) {
        $search_term_query .= "(`zipcode` LIKE '" . $search_term . "%' OR `city`  LIKE '" . $search_term . "%') OR ";
    }
    if(count($val) > 0) {
        // The IF statement is used to make sure that the foreach loop has been fired at least once,
        // or else it would just chop off the 'WHERE ' part and you'll get something like:
        // "SELECT * FROM `a` WH" and this will give you an error
        $search_term_query = substr($search_term_query, 0, -4); // To cut off the last remaining ' OR ' in the query
    } else {
        $search_term_query .= "0"; // To finish the query so it doesn't return anything we don't want
    }

    return $search_term_query;
}

从这里您可以继续获取结果。我希望它有效。

关于php - 如何在搜索引擎中使用关键词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12477069/

相关文章:

PHP、MySQL、HTML

javascript - 3 x 3 HTML 结构

javascript - 使循环不挂起浏览器

javascript - 以非阻塞顺序循环异步回调

php - Mysql Truncate Table,自动增量不起作用

php - 删除插入mysql时的空格

php - Paypal - Zend_Http_Client_Adapter_Curl - 如何打开 CURLOPT_VERBOSE

javascript - Paypal Express Checkout 窗口不断加载

javascript - 重新渲染组件 React

PHP 面包屑循环