填充<select>然后根据原始文件更改另一个</select>

时间:2012-12-19 08:55:29

标签: php ajax

  

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

好的,这基本上就是我要做的事情。第一个语句由服务器上的表的查询填充。 The Second有3个值:Elite,Core,Raider。使用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改为数据库所说的无论如何更新页面。

1 个答案:

答案 0 :(得分:0)

有两种可能性。

第一个是使用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);
}