2017-01-26 19 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

沒問題,只是標記爲接受,以幫助其他同樣的問題。 –