【发布时间】:2016-12-12 15:46:21
【问题描述】:
我有一个自动完成搜索字段,当用户输入名称时,结果会显示在下拉列表中。
这一切都很好,并按应有的方式显示数据。
但是,我正在等待将每个结果都设为链接,因此当显示结果时,用户可以点击正确的名称,然后将他们带到他们的个人资料中。
见下面的脚本:
<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>
【问题讨论】:
-
使用 $row['id'] 作为数组索引而不是 'value'。然后,您可以在客户端分离该信息。发布您的 JavaScript 代码以获取更多说明。
-
不要使用已弃用的
mysql_*函数。它们自 PHP 5.5 起已弃用,自 PHP 7 起完全删除。请改用 PDO 或 MySQLi。您也对 SQL 注入攻击持开放态度,应该使用准备好的语句(可以与 PDO 和 MySQLi 一起使用)。 -
@colburton - 谢谢,你能告诉我如何在答案中做到这一点吗?
-
警告:如果您只是学习 PHP,请不要使用
mysql_query接口。它是如此可怕和危险,以至于它在 PHP 7 中被删除。像 PDO is not hard to learn 这样的替代品和像 PHP The Right Way 这样的指南解释了最佳实践。你的用户参数不是properly escaped,有SQL injection bugs可以被利用。 -
谢谢@tadman - 但是你对我的问题有什么答案吗?