繁体   English   中英

如何在下拉菜单中从数据库中获取数据

[英]How Could i fetch the data from Database in a Drop Down menu

我尝试了以下操作,但id无效

//PHP CODE

$query = "SELECT kategorite FROM kategorite";

$data = mysql_query($conn, $query);

$makes = array();

while($row = mysql_fetch_array($data))
{
array_push($makes, $row["Lloji"]);
}
echo json_encode($makes);

//JAVASCRIPT CODE

$(document).ready(function () {

$.getJSON("getTipin.php", success = function(data)
{
var options = "";

for(var i=0; i < data.length; i++)

{

 options += "<option value='" + data[i].toLowerCase() + "'>" + data[i] + "</option>";

}

$("#type").append(options);

$("type").change();
});

除了其他注释中提到的错误之外,该代码还包含一些小错误。 例如,您在$('type')而不是$('#type')上调用change() $('#type') 而且,并非所有浏览器都很好地提供了JSON的内容类型。

通常,此问题由两部分组成:

提取数据并输出JSON

// Here I strongly suggest to use PDO.

$dbh = new PDO('mysql:host=localhost;port=3306;dbname=database', 'user', 'password',
    array(
        PDO::ATTR_PERSISTENT        => true,
        PDO::ATTR_EMULATE_PREPARES  => false,
        PDO::ATTR_ERRMODE           => PDO::ERRMODE_EXCEPTION
    )
);
$query  = "SELECT kat_id, kategorite FROM kategorite WHERE kategorite LIKE :search";
$stmt   = $dbh->prepare($query);

// Always check parameter existence and either issue an error or supply a default
$search = array_key_exists('search', $_POST) ? $_POST['search'] : '%';

$stmt->bindParam(':search', $search, PDO::PARAM_STRING);
$stmt->execute();
$reply = array();
while ($tuple = $stmt->fetch(PDO::FETCH_NUM)) {
    $reply[] = array(
        'value' => $tuple['kat_id'],
        'text' => $tuple['kategorite'],
    );
};

// See: http://stackoverflow.com/questions/477816/what-is-the-correct-json-content-type
Header('Content-Type: application/json');

// Adding Content-Length can improve performances in some contexts, but it is
// needless with any kind of output compression scheme, and if things go as they
// should, here we have either zlib or gz_handler running.

// die() ensures no other content is sent after JSON, or jQuery might choke.
die(json_encode($reply));

在jQuery中从JSON填充组合框

function fillCombo($combo) {
    $.post('/url/to/php/endpoint',
        { search: '%' },
        function(options) {
            for (i in options) {
                $combo[0].options[i] = {
                    value: options[i].value,
                    text : options[i].text
                };
            }
            $combo.change();
        }
    );
}

fillCombo($('#comboBox');

在这种情况下,由于返回的数据与comboBox所使用的格式相同,因此您还可以使用以下方法来缩短和加速操作:

        function(options) {
            $combo[0].options = options;
            $combo.change();
        }

通常,您希望服务器做尽可能少的工作(服务器负载花费金钱并影响性能),但客户也希望做尽可能少的工作(客户端负载影响站点的感知和响应能力)。 几乎总是值得考虑使用哪种数据交换格式。

例如,对于很长的没有分页的列表,您可能希望通过仅对选项的文本进行编码来剪切发送的数据。 然后,您将发送

[ 'make1','make2','make3'... ]

代替

[ { "option": "1", "value": "make1" }, { "option": "2", "value": "make2" }, ... ]

并使用较慢的客户端周期填充组合框。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM