使用PDO查询构建选择列表作为可选选项

时间:2014-11-30 01:48:53

标签: javascript php jquery json pdo

我想创建一个选择列表,列出查询中的项目/信息。每次我更新数据库时都需要更新选择列表,所以我必须使用JQuery。我从来没有使用过JSON,所以我真的很糟糕而且没有经验。

我想为选择列表中的每个选项输出字段“email”和“balance”,如下所示:

<option>john@doe.com - 120020</option>
<option>john2@doe.com - 130020</option>

我的HTML选择列表:

<select id="assignaccount" name="assignaccount" class="form-control select">
    <option>Database</option>
    <option>Option 2</option>
    <option>Option 3</option>
    <option>Option 4</option>
    <option>Option 5</option>
</select>

我的Ajaxrequest:

function buildSelectList(){
    $.ajax({
        url: "/database/accounts.php",
        type: "GET",
        success: function (response) {
            var data = JSON.parse(response);
            alert(data.id);
        },
        dataType: "json"
    });
}

我的“database / accounts.php”

function selectPlayerless(PDO $db){
    $stmt = $db->prepare("SELECT * FROM Accounts WHERE id NOT IN (SELECT accountId FROM PlayerCards)");
    $stmt->execute();
    $result = $stmt->fetchAll();
    echo json_encode($result);
}

我的问题: 我不知道如何以这种方式实现Ajax请求,它通过所有行循环并将必要的字段作为选项添加到选择字段中。

1 个答案:

答案 0 :(得分:1)

首先,由于您明确提出了dataType: "json",因此您不需要JSON.parse

其次,只需在收到服务器的响应后构建标记:

粗略的例子:

$.ajax({
    url: "/database/accounts.php",
    type: "GET",
    success: function (response) {
        var opt = '';
        // loop the response
        $.each(response, function(i, e){
            // just use your column names, these are just an example, but you get the idea
            opt += '<option value="'+e.id+'">'+e.email+'</option>';
        });
        // append the markup to that select box
        $('select#whatever_this_selectbox_is').html(opt);
    },
    dataType: "json"
});

旁注:我建议使用$result = $stmt->fetchAll(PDO::FETCH_ASSOC);,因为你真的不需要数字索引中的值。