防止jQuery UI自动完成显示类似的结果

时间:2012-11-21 12:57:00

标签: php jquery mysql user-interface

我正在使用jQuery UI Autocomplete来显示我的数据库上的结果。我的网站是用于房地产列表,我在我的搜索表单上的“城市”字段下使用它,所以如果我在同一个城市下列出500个房产,我的字段将显示该城市的名称500次。

有没有办法阻止这个,所以相同的结果只能显示一次?

这是我的PHP文件:

<?php
$mysqli = new mysqli('localhost', 'aliicomb_joombd', 'xxxxxxxx', 'aliicomb_joombd');
$text = $mysqli->real_escape_string($_GET['term']);

$query = "SELECT field_63 FROM jbd_joomd_type15 WHERE field_63 LIKE '%$text%' ORDER BY field_63 ASC";
$result = $mysqli->query($query);
$json = '[';
$first = true;
while($row = $result->fetch_assoc())
{
    if (!$first) { $json .=  ','; } else { $first = false; }
    $json .= '{"value":"'.$row['field_63'].'"}';
}
$json .= ']';
echo $json;
?>

我的Javascript:

<script type="text/javascript">
$(document).ready(function()
{
    $('#field_63').autocomplete(
    {
        source: "city.php",
        minLength: 3
    });

});

</script>

2 个答案:

答案 0 :(得分:3)

您可以在查询中使用DISTINCT关键字从DB中获取不同的值:

$query = "SELECT DISTINCT field_63 FROM jbd_joomd_type15 WHERE field_63 LIKE '%$text%' ORDER BY field_63 ASC";

答案 1 :(得分:0)

正如IvanHušnjak建议你可以试试

$query = "SELECT DISTINCT field_63 FROM jbd_joomd_type15 WHERE field_63 LIKE '%$text%' ORDER BY field_63 ASC";

$query = "SELECT TOP 1 field_63 FROM jbd_joomd_type15 WHERE field_63 LIKE '%$text%' ORDER BY field_63 ASC";

只返回数据库中的1个结果

请注意,如果有多行,其中field_63就像$ text

,那么DISTINCT仍然可以返回多个结果