【问题标题】:Populating a <select> then changing another <select> based off the original [duplicate]填充 <select> 然后根据原始 [重复] 更改另一个 <select>
【发布时间】:2012-12-06 13:59:40
【问题描述】:

可能重复:
Populating drop-down based on previous selection

好的,这基本上就是我想要做的。第一条语句由服务器上的表的查询填充。第二个有 3 个值:精英、核心、掠夺者。使用 AJAX 和 PHP 我试图做到这一点,所以当有人从第一个选择一个名称时,第二个总是更改为该人在数据库中的值;但是,如果发生未注意的切换,则必须保持选择状态(在这种情况下,必须更改第二个的值)。

<?php
echo "<select name='playername' onchange='filldata(this.value)'>";
require("/home/a9299818/public_html/DKPTools/connect.php");
$query1 = mysql_query("SELECT player.id, player.primarytoon, player.rank, IFNULL( SUM(dkp.dkp ) , 0 ) 
FROM player
LEFT OUTER JOIN dkp ON player.id = dkp.player_id
GROUP BY player.id
ORDER BY player.id");
while ($row = mysql_fetch_array($query1, MYSQL_NUM)){printf("<option value='%s'>%s</option>",$row[0],$row[1]);}
echo "</select>";
echo "<select name='rank'><option value='1'>Elite</option><option value='2'>Core</option><option value='3'>Raider</option>";
?>

这个 PHP 可以正常工作并正确填充两个选择;但是我完全迷失在编码 AJAX 中,它应该将 rank.value 更改为数据库所说的任何内容,而无需刷新页面。

【问题讨论】:

  • 不是在这种情况下,第二个下拉列表的值是静态的,选项不会改变。当第一个被更改时,只有值应该,但该值仍然是前 3 个选项之一。

标签: php ajax


【解决方案1】:

有两种可能。

首先是使用 jQuery 和 Ajax。

function filldata(value) {
    $.ajax({
        type: "GET",
        url: "URL_TO_PHP_FILE",
        data: "playerID=" + value,
        success: function(result) {
            $("select[name=rank]").val(result);
        }
    });
}

URL_TO_PHP_FILE 是 PHP 文件的 URL,您可以在其中从数据库中检索具有给定 playerID 的播放器的 rank_id。 在 PHP 文件中,您应该只回显 rank_id。 所以 PHP 文件看起来像这样:

<?php ## THE PHP FILE ##
require("/home/a9299818/public_html/DKPTools/connect.php");
$query1 = mysql_query("SELECT player.rank WHERE player.id = ".$_GET['playerID']);
$row = mysql_fetch_array($query1, MYSQL_NUM);
echo $row['rank'];
## END OF PHP FILE ## ?>

秒的可能性是确保您第一次选择的选项值不等于“player_id”,而是等于“rank_id”。所以你可以写一个javascript函数..

function filldata(value) {
    $("select[name=rank]").val(value);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    相关资源
    最近更新 更多