我在解决以下方面遇到问题:
我有一个带有一个搜索字段的表单(使用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();
?>
答案 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_函数。