【问题标题】:Setting up multiple key and values for an array为数组设置多个键和值
【发布时间】:2014-06-05 08:06:44
【问题描述】:

我在下面有一个小代码sn-p。我正在使用 jQueryUI 的自动完成功能从我的 mySql 数据库中提取数据,并在有人搜索特定用户时将用户名填充到搜索栏中。我希望它自动完成正在搜索的人的名字和姓氏。例如,如果自动完成函数预测有人正在寻找 Lebron James,我希望它同时返回名字和姓氏。目前,我只能让它返回名字。通过查看文档,我认为我可以通过将它们一个接一个地添加来添加多个键和值对。这只会为我产生一个名字。我在第二个标签/值对名称之后添加了一个“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>

【问题讨论】:

    标签: php jquery mysql autocomplete


    【解决方案1】:

    直接取自API documents

    支持多种类型: 数组:数组可用于本地数据。 支持的格式有两种: 字符串数组:[ "Choice1", "Choice2" ] 具有标签和值属性的对象数组: [ { 标签:“Choice1”,值:“value1”},...]

    他们希望您提供如下信息:

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

    而你是这样提供的:

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

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

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

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

    【讨论】:

    • 非常感谢。我正在查看 php 数组的文档。感谢您帮助我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2018-12-08
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多