Jquery Ui自动完成标记的重复结果

时间:2014-03-21 22:11:34

标签: php mysql jquery-ui jquery-ui-autocomplete json

您好我想使用自动完成功能,但结果是重复的。抱歉我的英语不好。首先我的mysql表名为“ firma

Example:
    id | etiket 
    1  | tag1,tag2,tag3,tag4,tag5,Merkez
    2  | tag1,tag2,tag6,Merkez
    3  | tag1,tag3,tag4,tag10,Merkez
    ...............................

请注意:Merkez的相同的标签与逗号分开。

search.php文件

 $term=$_GET['term'];

  $req = "SELECT etiket FROM firma WHERE etiket LIKE '%".$term."%'"; 

     $query = mysql_query($req);
     while($row = mysql_fetch_array($query))
     {

        $degisken_array = explode(',',$row['etiket']);
        foreach($degisken_array as $deger)
     {
         $deger = trim($deger);
          $results[] = array('label' => $deger);
     }
        }
     echo json_encode($results);

文件的Html部分..

<div class="ui-widget">
  <div class="cerceve">
 <input style="width:550px" id="birds" type="text" <?php if(isset($_GET['kelime'])) { 
  if($_GET["kelime"]!='') { echo "class='arasecili'"; } } ?> name="kelime"  placeholder="Örn: > Firma, kurum, işletme adı.. "  >

 </div>
  </div>

Javascript part ..

   <script>
    $(function() {
        var cache = {};
        $( "#birds" ).autocomplete({
            minLength: 2,
            source: function( request, response ) {
                var term = request.term;
                if ( term in cache ) {
                    response( cache[ term ] );
                    return;
                }

                $.getJSON( "search.php", request, function( data, status, xhr ) {
                    cache[ term ] = data;
                    response( data );
                });
            }
        });
    });
    </script>

当我在搜索框中输入“Merkez”时,输出就像你在图像中看到的那样,Merkez有3个结果,我怎样才能为每个标签只获得一次

您可以在此处查看结果和问题。

http://i.hizliresim.com/wOgRLA.png

2 个答案:

答案 0 :(得分:0)

您可以在$ results数组上使用array_unique()函数。这应该删除双打。 http://de3.php.net/manual/de/function.array-unique.php

答案 1 :(得分:0)

有点老问题,但我希望能帮助像我这样的人找不到答案。 我让它像这样工作: 要从数组中删除重复项并放入.autocomplete(),您将需要2个步骤

$arr = ['0','0','1','2',...
$arrUnique = array_values(array_unique($arr));

因为只有带有json_encode的array_unique才会输出

{"0":"0","1":"1","2":"2",...

但是array_values将输出

['0','1','2',...