2016-12-12 5 views
3

私はユーザーが名前を入力すると、結果がドロップダウンに表示される自動完全検索フィールドがあります。PHP MySQLオートコンプリート

これはすべて正常に動作し、必要なデータが表示されます。

しかし、結果が表示されたら、ユーザーは正しい名前をクリックしてプロフィールに表示されます。

以下

参照スクリプト:?正しいユーザーを選択すると

<input type='text' id=employees class='form-control' size="80" placeholder="Search Employees by first or last name"> 

search.php

$searchTerm = $_GET['term']; 

    $sql = mysql_query ("SELECT name_first, employee_id, unique_id, name_last FROM hr_employees WHERE name_first LIKE '{$searchTerm}%' OR name_first LIKE '{$searchTerm}%' OR employee_id LIKE '{$searchTerm}%'"); 
    $array = array(); 
    while ($row = mysql_fetch_array($sql)) { 
     $array[] = array (

      'value' => $row['name_first'].' '.$row['name_last'].' ('.$row['employee_id'].')', 

     ); 
    } 
    //RETURN JSON ARRAY 
    echo json_encode ($array); 

、私は、ユーザーがpage.phpするように指示DEたいID = $ EMPLOYEE_ID

これは可能ですか?

はJavaScript

<script src="//code.jquery.com/jquery-1.10.2.js"></script> 
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 

はJavaScript

<script> 
$(function() { 
$("#employees").autocomplete({ 
source: 'search.php' 
}); 
}); 
</script> 
+0

使用$行[ 'ID']の代わりに '値' の配列のインデックスとして。次に、クライアント側の情報を分離します。詳しい手順については、JavaScriptコードを掲載してください。 – colburton

+2

廃止予定の 'mysql_ *'関数を使用しないでください。これらはPHP 5.5以降で廃止され、PHP 7以降完全に削除されました。代わりにPDOまたはMySQLiを使用してください。また、SQLインジェクション攻撃にも幅広く関わっており、準備済みステートメント(PDOとMySQLiで使用できる)を使用する必要があります。 –

+0

@colburton - ありがとう、答えでこれをどうやってやるのか教えてくれますか? – Shane

答えて

3

要求されたよう:

PHP:

$pdo  = new \PDO('mysql:host=localhost;dbname=test', $user, $pass); 
$searchTerm = $_GET['term']; 

$stmt = $pdo->prepare("SELECT name_first, employee_id, unique_id, name_last FROM hr_employees WHERE name_first LIKE :search OR name_first LIKE :search OR employee_id LIKE :search"); 
$stmt->execute([':search' => $searchTerm.'%']); 

$array = []; 
while (false !== ($row = $stmt->fetch())) { 
    $array[] = [ 
     'value' => $row['name_first'].' '.$row['name_last'].' ('.$row['employee_id'].')', 
     'id' => $row['id'], 
    ]; 
} 

echo json_encode($array); 

のJavaScript:代わりの位置変化にconsole.logと

<script> 
    $("#employees").autocomplete({ 
     source: 'search.php', 
     select: function(event, ui) { 
      window.location.href = 'page.php?id='+ui.item.id; 
     } 
    }); 
</script> 

フィドル:https://jsfiddle.net/dLe4a83x/

+0

ありがとう、私は質問にJavaScriptを追加しました – Shane

+0

そのjQueryですか? – colburton

+0

申し訳ありません、そのJQueryです。更新された質問 – Shane

関連する問題