需要帮助以获得自动建议(以列表形式)显示来自数据库的获取/匹配数据

时间:2014-10-15 10:56:30

标签: javascript php mysql autosuggest

我在解决以下方面遇到问题: 我有一个带有一个搜索字段的表单(使用autosuggest)。 在此字段中,我希望能够键入名称或mobile.nr 。 基于我输入的内容,我得到了建议,因此键入字母或数字会返回:基于数据库中的匹配项的名称和移动设备。
如果找不到匹配项,那么"创建客户"按钮应出现。
如果找到匹配,则创建工作卡"按钮应出现。

在下面的代码中,我从客户表中获取了所有数据,但我无法弄清楚如何以列表形式显示每个结果一行,包括autosuggest ex中的人名和移动设备:

建议1:姓名和手机
建议2:姓名和手机
建议3:姓名和手机
等... ..

我的自动提示脚本:

<script type="text/javascript">
    $(document).ready(function() {  
        //autocomplete
            $(".input_name_or_mobil").autocomplete({
            source: "search.php",
            minLength: 1        
            });             
    });
</script>

脚本在 search.php 文件中搜索:

<?php
if ( !isset($_REQUEST['term']) )
exit;

$connect = mysql_connect('localhost', 'root', '') or die( mysql_error() );
mysql_select_db('workcard');

$results = mysql_query('SELECT name AS shout FROM customer WHERE name LIKE "'. mysql_real_escape_string($_REQUEST['term']) .'%" UNION SELECT mobil FROM customer WHERE mobil LIKE "'. mysql_real_escape_string($_REQUEST['term']) .'%" ORDER BY 1 LIMIT 10', $connect);

$data = array();
if ( $results && mysql_num_rows($results) )
{
while( $row = mysql_fetch_array($results, MYSQL_ASSOC) )
{
    $data[] = array(
        'label' => $row['shout'],
        'value' => $row['shout']
    );
}
}

echo json_encode($data);
flush();
?>

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题:

您正在使用UNION,因此记录将在彼此之后。

试试这个:

$results = mysql_query("SELECT name, mobile FROM customer WHERE name LIKE '" . mysql_real_escape_string($_REQUEST['term']) . "%' OR mobil LIKE '" . mysql_real_escape_string($_REQUEST['term']) . "%' ORDER BY 1 LIMIT 10", $connect);
$data = array();
if ($results && mysql_num_rows($results)) {
    while ($row = mysql_fetch_array($results, MYSQL_ASSOC)) {
        $data[] = array(
            'label' => $row['name'] . " " . $row['mobile'],
            'value' => $row['name'] . " " . $row['mobile']
        );
    }
}

在此代码中,您将从表中获取名称和移动字段,并且所有名称 OR mobil的记录与术语相似。

使用mysqli_函数,因为不推荐使用mysql_函数。

相关问题