php - 动态下拉菜单

标签 php mysql ajax drop-down-menu

我想创建一个动态下拉列表,其中第二个下拉列表的选项在选择第一个下拉列表后发生变化。

test.php 文件

<?php
$con=mysqli_connect("localhost","******","****","******");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM countries");
?>
<select id="country" name='country' onchange="get_states();">
<option value=''>Select</option>
<?php
while($row = mysqli_fetch_array($result))
{
echo "<option value='" . $row['country_id'] . "'>" . $row['country_name'] . "</option>";
}
?>
</select>
<div id="get_state"></div> // Sub will be appended here using ajax

<script type="text/javascript">
function get_states() { // Call to ajax function
var country = $('#country').val();
var dataString = "country="+country;
$.ajax({
    type: "POST",
    url: "getstates.php", // Name of the php files
    data: dataString,
    success: function(html)
    {
        $("#get_state").html(html);
    }
});
}
</script>
<?php
mysqli_close($con);
?>

并且 gestates.php 是:

<?php if ($_POST) {
$country = $_POST['country'];
if ($country != '') {
   $sql1 = "SELECT * FROM states WHERE country_id=" . $country;
   $result1 = mysql_query($sql1);
   echo "<select name='state'>";
   echo "<option value=''>Select</option>"; 
   while ($row = mysql_fetch_array($result1)) {
      echo "<option value='" . $row['id'] . "'>" . $row['state_name'] . "</option>";}
   echo "</select>";
}
else
{
    echo  '';
}
}
?>

但是上面的代码不起作用!

最佳答案

在第一个下拉列表中进行更改时,您需要进行 ajax 调用,该调用将获取选项,然后您可以填充下一个下拉列表

关于php - 动态下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19598226/

相关文章:

php - PDO 插入成功但没有?

mysql - SQL select AS - 前置文本

javascript - 在浏览器中检测离线模式的最佳方法是什么?

javascript - 将 javascript 移至单独的文件,ajax 调用出现错误

php - 在 PHP 中通过 XPath 提取信息

php - 当前的浏览器是否接受来自 ajax 响应的 cookie?

mysql - "\N"使用 mysqlimport 在 mysql 中转换为 0,我想避免这种情况,我需要一个 null

java - 用 JSF 反向 Ajax?

php - Kohana PHP框架MySQL数据库连接异常

php - Apache2 网站在整个站点中导航时不会更改默认 URL