0

可能重复:
根据先前的选择填充下拉列表

好的,这基本上就是我想要做的。第一条语句由服务器上的表的查询填充。第二个有 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 更改为数据库所说的任何内容,而无需刷新页面。

4

1 回答 1

0

有2种可能性。

首先是使用 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);
}
于 2012-12-19T11:24:21.430 回答