首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用自动完成从mysql表返回用户id

使用自动完成从mysql表返回用户id
EN

Stack Overflow用户
提问于 2013-06-20 15:17:58
回答 3查看 2.5K关注 0票数 1

我只想单独处理id列的值,以便在mySQL的隐藏字段中使用它。但是当我获取n个ame,surname,id时,它们会出现在搜索文本字段中,同时也会出现id值。我只想在隐藏字段的值区域使用id。只有姓名、姓氏必须出现在文本字段中。如何立即将id值设置为隐藏字段?

autocomplete.php

代码语言:javascript
复制
<?php 
include 'config/db.connect.php';
$return_arr = array();


if (isset($_GET['term'])){
try {

    $stmt = $db->prepare('SELECT id,user_username,name,surname FROM user WHERE name LIKE :receiver or surname LIKE :receiver or user_username LIKE :receiver');
    $stmt->execute(array('receiver' => '%'.$_GET['term'].'%'));

    while($row = $stmt->fetch()) {
         $return_arr['name'] = $row['name'];
         $return_arr['surname']= $row['surname'];
         $return_arr['id']= $row['id'];
    }

} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}
echo json_encode($return_arr);

 }

?>

脚本在窗体的页面

代码语言:javascript
复制
<script type="text/javascript">
$(function() {

//autocomplete
$("#receiver").autocomplete({
    source: "autocomplete.php",
    minLength: 1,

    select: function(event, ui) { 
    $("#receiver_id").val(ui.item.value); 
}

});             

});
</script>

表单

代码语言:javascript
复制
<form action="action_send_message.php" method="POST"  >
     <label for="receiver">Receiver</label>
     <input type="text" name="receiver" id="receiver" placeholder="Receiver" class="span12" />
     <input type="hidden" name="receiver_id" id="receiver_id" value=""/>
     <textarea id="messagebody" name="message_body" class="wysihtml5 span12" rows="5" placeholder="Mesajınızı Yazın"></textarea>
     <button type="submit" class="btn btn-large color-10">Gönder</button>
</form>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-20 15:44:59

编辑了

我建议将您的代码更新为如下内容:

autocomplete.php

代码语言:javascript
复制
....
     $return_arr[] = array('value' => $row['name'] . ' ' . $row['surname'],
                           'id' =>  $row['id']);
....

echo json_encode($return_arr);

脚本在窗体的页面

代码语言:javascript
复制
$("#receiver").autocomplete({
    source: function(request, response) {
        jQuery.ajax({
            url: 'autocomplete.php',
            dataType: 'json',
            success: function(data) {
                response(data);
            }
        });
    },
    minLength: 1,
    select: function(event, data) { 
        $("#receiver_id").val(data.item.id); 
    }
});

注意,只有当$return_arr项上的数组键是'value'时,自动完成输出才能工作。如果这被命名为其他东西,它将无法工作。

票数 0
EN

Stack Overflow用户

发布于 2013-08-01 19:48:39

这是一种更简单的方法

search.php

代码语言:javascript
复制
while($row = $stmt->fetch()) {

           $return_arr[] = array('value' => $row['name'], 'id' => $row['id']);

        }

    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }



    echo json_encode($return_arr);

代码语言:javascript
复制
$(function() {
>                 //autocomplete
>                 $("#autocomplete").autocomplete({
>                     source: "search.php",
>                     minLength: 1,
>                     select: function(event, data) {
>                     $("#hidden").val(data.item.id);
>                     $("#autocomplete").val(data.item.value);
>                     },
>                 });
>             });
票数 1
EN

Stack Overflow用户

发布于 2013-06-20 15:27:21

问题是,您只返回返回JSON对象的一维数组中的最后结果。您的对象将如下所示:

代码语言:javascript
复制
{
    name: "Firstname",
    surname: "Surname",
    id: "id"
}

而不是一系列的结果:

代码语言:javascript
复制
{
    "0": { name: "Firstname", surname: "Surname", id: "id" },
    "1": { name: "Firstname", surname: "Surname", id: "id" },
    "2": { name: "Firstname", surname: "Surname", id: "id" },
}

你只看到一个结果而不是几个结果。假设它们都是ID -值对的数组,jQueryUI默认,因此它假设项以"Firstname“作为ID为"name”的值,以此类推。你想做的是:

代码语言:javascript
复制
$i = 0;
while($row = $stmt->fetch()) {
     $i++
     $return_arr[$i]['name'] = $row['name'];
     $return_arr[$i]['surname']= $row['surname'];
     $return_arr[$i]['id']= $row['id'];
}

而不是您在代码中使用的while循环。然后,自动完成将按照默认行为隐藏ID (如果我没有弄错的话)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17217498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档