2017-06-06 8 views
0

入力時に自分のデータベースからユーザー名を推薦するために、(jQuery UIの)オートコンプリートを使用する必要があります。タイプされた値に基づいてAJAXによるオートコンプリートオプションを取得する

通常の方法では、オートコンプリートのsourceを使用していますが、私のウェブサイトにはたくさんのユーザー名があり、ユーザー名を保持するために1つの巨大な文字列を持つことは望ましくありません。 私はより良い方法を考えていました:

ユーザーがユーザー名の最初の文字を入力すると、AJAX投稿要求がPHPファイルに呼び出され、その文字で始まるユーザー名が取得されます。 それから、jQueryにリストを返し、それを処理し、その結果をオートコンプリートのオプションにします。

すべてのオプションを含む大きな文字列を持つよりも、この方法が優れていますか?自分で自分の方法をコード化できませんでした(mysqlの結果をオートコンプリートオプションにする方法を理解できませんでした)。 これをコーディングする正しい方法は何ですか?ありがとう!

答えて

0

これは私が前にやったの例です:

JS

$("#username").autocomplete({ 
    source: "autocomplete.php", // Source for autocomplete must be an array, echoed out via json 
    minLength: 1 // Min length before autocomplete starts searching the array from source 
    }); 

PHP

// Pull in searchterm from username, $_GET['TERM'] is a built-in variable for autocomplete 
$term = strtolower($_GET['term']); 

$searchTerm = "$term%"; 
$query = "SELECT distinct username from access WHERE username LIKE ? ORDER BY username"; 
$stmt = $db->prepare($query); 
if($stmt){ 
    $stmt->bind_param("s",$searchTerm); 
    $stmt->execute(); 
    $stmt->bind_result($username); 
} 

// Create array for autocomplete to search 
$usernameList = array(); 
while ($stmt->fetch()){ 
     $usernameList[] = $username; // Assign names to the list 
} 
// Echo json data for autocomplete to retrieve 
echo json_encode($usernameList); 
$db->close(); 

HTML

<input type="text" name="username[]" id="username" /> 
関連する問題