2012-11-21 84 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