3

そこで、jQuery と PHP を使用してデータベースからコンテンツを取得するオート コンプリート ボックスを作成しました。正常に動作していますが、入力ボックスに入力すると、私のような結果ではなく、すべての結果が返されます。 m 入力します。

したがって、Testと入力すると、次のように引き戻されます。

This
is
a
Test

表示する代わりに

Test

ここに私のHTMLがあります

<input type="text" id="group_name" name="group_name">

これが私が使用しているjQueryです

<script>
     $(document).ready(function() {
        $( "#group_name" ).autocomplete({
              source: "/wuzhapnn/php/data_stream/group_names",
              select: function(event, ui) { 
              $("#f").submit(); }
        });
    });
</script>

ここに私のphpページがあります

if ($_GET['run'] == 'group_names') {
    // pulls live data from database
    $db = db_open();
    $query = "SELECT group_name FROM groups";
    $result = db_query($db, $query);
    if (db_num_rows($result) > 1) {
        $result = db_fetch_all($result);
        foreach ($result as $key=>$value) {
            $group_names_array[] .= $value['group_name'];
        }   
    } else {

    }

    echo json_encode(array_values(array_unique($group_names_array)));  
}
  • 最近の更新

新しい jQuery

<script>
    var availableName;

    $.getJson('/wuzhapnn/php/data_stream',function(response){
        availableName = response;
    });

     $(document).ready(function() {
        $( "#group_name" ).autocomplete({
            source: availableName,
              select: function(event, ui) { 
              $("#f").submit(); }
        });
    });
</script>

新しい PHP ページ

if ($_GET['run'] == 'group_names') {
    // pulls live data from database
    $db = db_open();
    $query = "SELECT group_name FROM groups WHERE group_name LIKE '%".$_GET['term']."%'";
    $result = db_query($db, $query);
    if (db_num_rows($result) > 1) {
        $result = db_fetch_all($result);
        foreach ($result as $key=>$value) {
            $group_names_array[] .= $value['group_name'];
        }   
    } else {

    }

    echo json_encode(array_values(array_unique($group_names_array)));  
}
4

3 に答える 3

2

LIKE句を追加する必要があります。

"SELECT group_name FROM groups WHERE group_name LIKE '%".$_GET['term']."%'";

これ"SELECT group_name FROM groups"によりすべての結果が得られるためdatabase、入力された単語と一致するものだけが必要なので、LIKE MySQL句を使用します。

他の人のコメント応答。

使用する前にjsonオブジェクトを作成したい場合は、以下のようにできます。

var availableName;

$.getJson('/wuzhapnn/php/data_stream/group_names',function(response){
   availableName = response;
});

この後、オートコンプリートに以下のコードを使用してください。

$( "#group_name" ).autocomplete({
     source: availableName ,
于 2013-03-26T06:03:20.770 に答える
1

PHP スニペットは、オートコンプリート プラグインによって送信された値を実際には使用しません。JQuery のプラグインを使用している場合、send の値はterms というGET パラメータです。

これを PHP に含める必要があります。

$term = $_GET['term'];

次に、次のようにクエリに含める必要がありますが、SQL ステートメントで直接使用する前に、まずこの値をエスケープしてください

SELECT group_name FROM groups WHERE group_name LIKE %<term>%
于 2013-03-26T06:12:36.837 に答える
0

正常に動作しました

新しい jQuery

<script>
    $(function() {       
        $( "#group_name" ).autocomplete({
          source: "/wuzhapnn/php/data_stream",
          minLength: 2,
        });
      });
</script>

新しい PHP (Dipesh Parmar に感謝)

// pulls live data from database
$db = db_open();
$query = "SELECT group_name FROM groups WHERE group_name LIKE '%".$_GET['term']."%'";
$result = db_query($db, $query);

    $result = db_fetch_all($result);
    foreach ($result as $key=>$value) {
        $group_names_array[] .= $value['group_name'];
    }   


echo json_encode(array_values(array_unique($group_names_array)));  
于 2013-03-26T06:48:52.917 に答える