我在解决以下问题时遇到问题:
我有一个带有一个搜索字段的表单(带有自动建议)。
在此字段中,我希望能够输入名称或 mobile.nr。
根据我输入的内容,我会得到建议,因此输入字母或数字会返回:基于数据库中的匹配项的姓名和手机。
如果未找到匹配项,则会出现“创建客户”按钮。
如果找到匹配,则会出现“创建工作卡”按钮。
在下面的代码中,我从客户表中获取所有数据,但我无法弄清楚如何使其以列表形式显示,每个结果一行,包括自动建议中的人员姓名和手机:
建议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();
?>
最佳答案
如果我理解你的问题:
您正在使用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_ 函数已弃用。
关于javascript - 需要帮助获得自动建议以显示(以列表形式)从数据库中获取/匹配的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26380812/