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

标签 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($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();
}
?>

我在 Javascript 或 AJAX 方面真的没有任何经验,所以如果有一种方法可以在没有这些的情况下做到这一点,那将会很有帮助,但如果没有,我愿意学习他们在这种情况下的应用。

最佳答案

不幸的是,您需要某种客户端脚本来调用外部 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>

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();
}?>

关于PHP - 从下拉框中获取选择以在同一页面上的另一个下拉框中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13591523/

相关文章:

PHP 语法糖与 Perl

java - 在将数据插入 DB2 的 sql 表之前,如何对列的值进行大小验证?

php - Zend_Db_Select 随机排序,兼容mssql/mysql

php - 样式表未加载。 URL 重复点击

mysql - 是否有可能更改具有数值的字符串的顺序

sql - 如何编写这个特定的查询?

css - 如果列表项被打开/悬停,父链接必须有不同的颜色

java - 如何在具有多个项目选择的java swing中创建下拉列表?

Selenium 问题 : with selecting a value in dropdown using thymeleaf

php - 在 Yii2 的 GridView 小部件中禁用 html_entities_encode