0

だから私は私のデータベースからオートコンプリート検索フォームに入力しようとしています。これが配列を作成する私のphpコードです

    $leaders= mysql_query("SELECT model_name,model_id FROM models
             ORDER by model_name DESC");

while($leader=mysql_fetch_array($leaders)){
  $model= $leader['model_name'];
$modelid= $leader['model_id'];
    $name[] = array('label'=> $model, 'value'=> $modelid);

    $count = $count + 1;


}
$fp = fopen('results.php', 'w');
fwrite($fp, json_encode($name));
fclose($fp);

私の問題はjqueryオートコンプリート内のどこかにあります。検索フォームは、ユーザーが入力したときにフィルタリングせずに、json内のすべての製品の膨大なリストを返すだけです。私の理想的な目標は、URLの末尾に値を割り当てることです。元。「http://www.example.com/」+値

$(function() {
  $("#search").autocomplete({
    source: function(request, response) {
      $.ajax({
        url: "results.php",
        dataType: "json",
        data: { q: request.term },
        success: function(data) {
          response($.map(data, function(value,key) {
            return { label:value.label , value: value.value }
          }));
        }
      });
    },
    minLength: 2
  });
});

助けてくれてありがとう

4

2 に答える 2

0

私はあなたの質問がすり減ったと思います。クエリで同様の条件を使用する必要があります

 mysql_query("SELECT model_name,model_id FROM models where model_name like '$_post[q]%'  ORDER by model_name DESC")

特定の選択した結果をフェッチする

于 2012-07-20T17:21:07.277 に答える
0

arxanasが述べているように、結果をエンコードしてクライアント側に送り返す前に、結果をフィルタリングする必要があるように見えます。

この一例は、jqueryオートコンプリートがサーバーに送信する用語を最初にキャッチすることです。

$term = $_GET['term'];

次に、これを使用して名前の配列と比較します。用語をそのようなパターンに変換した場合、

$term = "/$term/i" 

次に、一致した結果を格納する配列を作成し、preg_matchを使用してnames配列をループしました。パターンが一致するたびに、値を戻り配列にプッシュするだけです。

$returnArray = array();

foreach( $name as $index => $value ) {
    if ( preg_match( $term, $value['label'] ) {
        array_push($returnArray, $value);
    };
};

return json_encode($returnArray);

私が言うように、これはうまくいくと思いますが、preg_matchはかなり遅く、私はそれを自分でテストしていません。幸運を祈ります!

于 2012-08-02T15:37:24.920 に答える