0

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>
4

2 に答える 2

3

クエリで DISTINCT キーワードを使用して、DB から個別の値を取得できます。

$query = "SELECT DISTINCT field_63 FROM jbd_joomd_type15 WHERE field_63 LIKE '%$text%' ORDER BY field_63 ASC";
于 2012-11-21T13:03:44.750 に答える
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";

DBから1つの結果のみを返す

field_63が$textのような行が複数ある場合でも、DISTINCTは複数の結果を返す可能性があることに注意してください。

于 2012-11-21T13:02:17.700 に答える