将表单值设置为自动完成查找结果的子字符串

时间:2016-03-15 18:55:18

标签: php jquery mysql jquery-ui autocomplete

我有一个jQueryUI自动完成脚本,可以从SQL查询中提取结果。这一切都很有效,表单字段返回我期望的结果#34;员工ID - 员工姓名"

autocomplete.js

$(document).ready(function() {      
    $("#emp_lookup").addClass("grey_text");
    $("#emp_lookup").autocomplete({
        source: "/lookup.php",
        minLength: 2
    });
});

lookup.php

<?php
    // Query to get users
        $_emp_lookup = $_GET['term'];

        $q = "SELECT `emp_id`, `fn`, `ln`, `full_name`, `display_name`, `is_active` FROM `emp_info` WHERE (`emp_id` LIKE '%".$emp_lookup."%' OR `fn` LIKE '%".$emp_lookup."%' OR `ln` LIKE '%".$emp_lookup."%' OR `full_name` LIKE '%".$emp_lookup."%' OR `display_name` LIKE '%".$emp_lookup."%') AND `is_active` = 1";
        $r = mysqli_query($connect, $q);            

        $employee = array();
        if(mysqli_num_rows($r) > 0){
            while($row = mysqli_fetch_assoc($r)){
                $result = $row['emp_id']." - ".$row['display_name'];
                array_push($employee, $result);
            }
        }else{
            $result = "No employee found";
            array_push($employee, $result);
        }

        $json = json_encode($employee);
        echo $json;
?>

我遇到的问题是,在提交表单时,我想要将Employee ID传递给处理脚本。因此,员工姓名在自动完成结果中的事实严格意味着可读性。与DNS名称相同的方式使我们不必记住IP地址。

1 个答案:

答案 0 :(得分:0)

您可以在jQuery UI自动完成中使用客户渲染方法来解析您的PHP脚本提供的结果:

http://api.jqueryui.com/autocomplete/#event-response

对于PHP代码,请确保验证/清理用户输入。您的脚本容易受到SQL注入攻击。