2012-11-21 46 views
0

我正在使用jQuery UI自动完成来显示可用于我的数据库的结果。我的网站是用于房地产列表,我在搜索表单中名为“城市”的字段中使用它,所以如果我在同一城市中列出了500个属性,我的字段将显示该城市的名称500次。防止jQuery UI自动完成显示类似结果

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

这是我的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> 
+0

提示。请参阅[** json_encode **](http://php.net/manual/en/function.json-encode.php)(与您的问题没有直接关系) – itachi

回答

0

伊凡Huš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"; 

从DB仅返回1结果

意识到DISTINCT仍然可以返回一个以上的结果,如果有多个行,其中field_63就像$文本

+0

非常感谢您的帮助! – mah2602

3

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

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

非常感谢!它解决了这个问题。很简单。 – mah2602