2017-01-26 1 views
0

私の問題は、データベース内のエントリを、開始から開始までを使用して検索することです。私は他のStackOverflowの答えを見ましたが、Jqueryのオートコンプリートを使って配列をソースパラメータとして扱っています。Jqueryオートコンプリートを使用すると、外部ソースで用語の先頭にあるエントリを検索します。

のは、私にid =学校で教科書を持っていると仮定しましょう:

私のサンプル・データベース・テーブルで
<input type="text" id="school"> 

私は、次の学校を持っている:

  • ドナルド・トランプ小学校
  • バラク・オバマ中東学校
  • フランクリンデラノルーズベルト高等学校
  • セオドアルーズベルト技術アカデミー
  • ジョン・アダムズ中学校
  • アンドリュー・ジャクソン中学校
  • アンドリュー・ジョンソンデイケア
  • ビル・クリントン刑務所教育プログラム
  • エイブラハム・リンカーンアカデミーの美術

私はちょうど入力した場合'A'は返されるものは基本的にはAの文字列です。私が返さ欲しい

は以下のとおりです。

  • アンドリュー・ジャクソン中学校
  • アンドリュー・ジョンソンボディケアファインアーツ、私には

$('#school').each(function (i, el) { 
    var that = $(el); 
    that.autocomplete({ 
     source: "src/php/extraction.php" 
     , minLength: 2 
     , select: function (event, ui) { 
     info = ui.item.label;      
     $.ajax({ 
       url: 'foobar.php' 
       , type: 'POST', 
       data: { 
        term : info } 
       , success: function (data) { 
        // do stuff } 
       }); 
      } // end of select function 
     }); 
    }); 

  • エイブラハム・リンカーンアカデミーオートコンプリートが送信するfoobar.php 、私は次のコードを持っている:

    if (isset($_GET['term'])) { 
    $return_arr = array(); 
    try { 
        $stmt = $conn->prepare('SELECT School_Name FROM SOME_TABLE WHERE School_Name LIKE :term'); 
        $stmt->execute(array('term' => '%'.$_GET['term'].'%')); 
        while ($row = $stmt->fetch()) { 
         $return_arr[] = ucwords(strtolower($row['School_Name'])); 
        } 
    } catch (PDOException $e) { 
        echo 'ERROR: '.$e->getMessage(); 
    } 
    
    /* Toss back results as json encoded array. */ 
    echo json_encode($return_arr); 
    } 
    
  • 答えて

    1

    はちょうどSQLクエリを実行します。

    $stmt->execute(array('term' => $_GET['term'].'%')); 
    

    あなたは結果のみが 'A' で始まる場合、あなたはLIKE %A%を使用することはできません。 %はその "方向"のすべてと一致します。

    A%を使用すると、「A」で始まるものすべてが一致します。 %Aを使用すると、 "A"で終わるものすべてが一致します。

    +0

    ワウ。ハハ、ありがとうございます – Joseph

    +0

    問題はありません、同じ問題で他の人を助けるために受け入れられたと印を付けるだけです。 –

    関連する問題