2016-12-12 43 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文件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

使用$行[ '身份证']作为数组的索引,而不是 '价值'。然后你将客户端的信息分开。发布您的JavaScript代码以获取进一步说明。 – colburton

+2

请勿使用已弃用的'mysql_ *'函数。从PHP 5.5开始,它们已被弃用,并且自PHP 7以来已完全删除。请改用PDO或MySQLi。您也可以使用SQL注入攻击,并使用Prepared Statements(可以使用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:

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

拨弄的console.log,而不是位置的变化:https://jsfiddle.net/dLe4a83x/

+0

谢谢,我对问题添加了JavaScript – Shane

+0

是那个jQuery? – colburton

+0

对不起,它的JQuery。更新问题 – Shane