为数组设置多个键和值

时间:2014-06-04 23:49:59

标签: php jquery mysql autocomplete

我下面有一个小代码片段。我正在使用jQueryUI的自动完成功能从我的mySql数据库中提取数据,并在有人搜索特定用户时将用户名填充到搜索栏中。我希望它能够自动填充被搜索人员的名字和姓氏。例如,如果自动完成功能预测某人正在寻找勒布朗詹姆斯,我希望它返回名字和姓氏。目前,我只能让它返回名字。从查看文档,我想我可以通过一个接一个地添加它们来添加多个键和值对。这只为我生一个名字。我在第二个标签/值对名称之后添加了一个“2”,看看给它们不同的名称会有所帮助。它仍然只返回名字而不是姓氏。如何让它返回自动填充中的名字和姓氏?

我的index.php

<?php


// here we set the database information
$SERVER = 'localhost';
$USER = 'user';
$PASS = 'password';
$DATABASE = 'database';

// we are instantiating the mysqli database object
$db = new mysqli($SERVER, $USER, $PASS, $DATABASE);

// error check
if($db->connect_errno > 0){

      // report an error
die('Unable to connect to database [' . $db->connect_error . ']');
}



$sql = 'SELECT * FROM users WHERE user LIKE "' . $_REQUEST['term'] . '%"';


$result = $db->query($sql);

$data = array();

    while ($row = $result->fetch_assoc()) 
    {
        $data[] = array(
            'label' => $row['firstName'] ,
            'value' => $row['lastName'],
            'label2' => $row['lastName'],
            'value2' => $row['lastName'],

        );
    }


// jQuery wants JSON data
echo json_encode($data);
flush();

我的html和js

<form id="searchbox" action="">
    <input id="search" type="text" placeholder="Search">
    <!--<input id="submit" type="submit" value="Search">-->
</form> 


<script type="text/javascript" >

//script for autocompleting usernames when being search
$('#search').autocomplete(
    {source:'autosuggest.php',
     minLength:2
     });

</script>

1 个答案:

答案 0 :(得分:1)

直接从API documents

  

支持多种类型:数组:数组可用于本地数据。   有两种支持的格式:字符串数组:[&#34; Choice1&#34;,   &#34;选择2&#34; ]具有标签和值属性的对象数组:[{   label:&#34; Choice1&#34;,value:&#34; value1&#34; },...]

他们希望您提供这样的信息:

[
{'label': 'label', 'value': 'value'},
{'label': 'label', 'value': 'value'},
{'label': 'label', 'value': 'value'}
....etc
]

你正在提供它:

[
{'label': 'label', 'value': 'value', 'label1': 'label1', 'value1': 'value1'}
....etc
]

我自己还没有使用jQuery UI的这一部分,所以我无法对此发表评论,但是我可以建议您解析全名:firstname_lastname然后label然后可能利用split()来显示全名。

或者,你可以通过你的php文件传递标签:

while ($row = $result->fetch_assoc()) 
{
    $data[] = array(
        'label' => $row['firstName'] . ' '. $row['lastName'],
        'value' => $row['firstName'] . ' '. $row['lastName'],
    );
}