PHP-从一个下拉框中获取一个选择,以便在同一页面上的另一个下拉框中使用

PHP-从一个下拉框中获取一个选择,以便在同一页面上的另一个下拉框中使用,php,database,drop-down-menu,mysqli,Php,Database,Drop Down Menu,Mysqli,我正在尝试使用从另一个下拉框中选择的内容填充下拉框。我已经了解了如何使用数据库中的数据填充列表,问题似乎是在不提交表单的情况下从同一页面的第一个下拉框中获取所选内容。这就是我目前所拥有的 <select name = "trainer_has_update_pokemon"> <p>Trainer</p> <?php $query = "SELECT name FROM Trainer"; if ($stmt = $mysqli->prepare

我正在尝试使用从另一个下拉框中选择的内容填充下拉框。我已经了解了如何使用数据库中的数据填充列表,问题似乎是在不提交表单的情况下从同一页面的第一个下拉框中获取所选内容。这就是我目前所拥有的

<select name = "trainer_has_update_pokemon">
<p>Trainer</p>
<?php
$query = "SELECT name FROM Trainer";

if ($stmt = $mysqli->prepare($query)) {
$stmt->execute();
$stmt->bind_result($name);
while ($stmt->fetch()) {
    echo"<option>$name</option>";
}


$stmt->close();
}


?>
</select>

<?php
$trainer_name = $_GET['trainer_has_update_pokemon'];
?>

<p>Pokemon</p>
<select name = "type_of_update_pokemon">
<?php
$query = "SELECT DISTINCT p.name FROM Pokemon p WHERE p.owner_id = (SELECT t.trainer_id FROM Trainer t WHERE t.name = '$trainer_name')";
if ($stmt = $mysqli->prepare($query)) {
$stmt->execute();
$stmt->bind_result($pkmn_name);
while ($stmt->fetch()) {
    echo"<option>$pkmn_name</option>";
}
$stmt->close();
}
?>

教练

口袋妖怪


不幸的是,您需要某种客户端脚本来调用外部php页面,以便实时拉入数据。快速实体模型的外观如下所示:

javascript:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
$(function(){ //document ready
    $('select[name="trainer_has_update_pokemon"]').change(function(){ // when trainer_has_update_pokemon changes
        $.ajax({
            type:"POST", //send a post method
            url:'ajax.php', // path to ajax page
            data:"trainer_name="+$(this).val(), //set trainer_name to value
            success:function(response){ // retrieve response from php
                $('select[name="type_of_update_pokemon"]').html(response); // update select
            }
        });
    });
});
</script>

$(函数(){//文档准备就绪
$('select[name=“trainer\u has\u update\u pokemon”]')。更改(函数(){//当trainer\u has\u update\u pokemon更改时
$.ajax({
键入:“POST”,//发送一个POST方法
url:'ajax.php',//指向ajax页面的路径
数据:“trainer_name=“+$(this).val(),//将trainer_name设置为值
成功:函数(响应){//从php检索响应
$('select[name=“type_of_update_pokemon”]”)。html(响应);//更新选择
}
});
});
});
PHP(我将其命名为ajax.PHP):


No除了AJAX没有别的方法(除了在初始页面加载时加载整个数据库,然后用javascript更改组合框),我遵循您使用JS和AJAX所做的操作,我已经调整了代码以使用它,但一旦我选择了培训师,下拉框仍然为空。我确信我的数据库中有pokemon,并且我使用了phpMyAdmin来测试我的SQL查询。使用firebug(在Firefox中)的控制台选项卡,确保请求成功完成。接下来,尝试使用上面的
alert(response)
$('input[name=“type\u of\u update\u pokemon”]').html(response)success:function(){}
中,我使用firebug控制台查看了它,但没有任何结果。我应该从
警报(响应)
部分得到什么?只有在更改第一个选择时,控制台才会显示某些内容。而且,您的警报应该显示您从ajax.php页面回显的任何内容。当我更改第一个选择时,控制台中不会出现任何内容,因此,因为它似乎没有得到我正在更改选择的信息,所以它不会将任何内容发送到ajax.php页面或返回任何内容。
<?php
/* ADD YOUR DATABASE CONNECTION */
$trainer_name = $_POST['trainer_name']; // DONT FORGET TO ESCAPE!!
$query = "SELECT DISTINCT p.name FROM Pokemon p WHERE p.owner_id = (SELECT t.trainer_id FROM Trainer t WHERE t.name = '$trainer_name')";
if ($stmt = $mysqli->prepare($query)) {
    $stmt->execute();
    $stmt->bind_result($pkmn_name);
    while ($stmt->fetch()) {
        echo"<option>$pkmn_name</option>";
    }
    $stmt->close();
}?>