【问题标题】:populate one dropdown base on another dropdown using PHP and MySQL使用 PHP 和 MySQL 在另一个下拉列表的基础上填充一个下拉列表
【发布时间】:2016-02-04 22:06:29
【问题描述】:

我有一个下拉列表,它使用 mysqli_query() 从查询中获取信息 现在,一旦从第一个下拉列表中选择一个选项,我希望第二个下拉列表中填充来自差异查询的数据。

这是我的代码

HTML:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js"></script>
<script>
$(document).ready(function() {
    $('.country').on('change', function() {
    // Code to add country information in url
    location.href = location.href.split('?')[0]
        + ['?country', $(this).val()].join('=');
    });
});
</script>

PHP 第一下拉菜单:

<?php
    $countries = mysqli_query($mysqli,"select source from nhws.masterkey group by source;");
    echo "<select name='country' style=width:200px>"; 
    echo "<option size =30 ></option>";
    while($row = mysqli_fetch_array($countries)){        
        echo "<option value='".$row['source']."'>".$row['source']."</option>"; 
    }
    echo "</select>";
?>

PHP 第二个下拉菜单:

<?php
if (isset($_GET['country'])) {
   $country = $_GET['country'];
   echo $country;
   $variables = mysqli_query($mysqli,"select variable from nhws.num_all_{$country} group by variable;");
   echo "<select name='variable' style=width:200px>"; 
   echo "<option size =30 ></option>";
   while($row = mysqli_fetch_array($variables)) {        
     echo "<option value='".$row['variable']."'>".$row['variable']."</option>"; 
   }
   echo "</select>";
}
?>

现在,一旦从第一个下拉列表中选择了一个选项,第二个下拉列表中就不会发生任何事情。

谢谢!

【问题讨论】:

  • 如果信息在服务器上并且没有立即传输到客户端,那么 ajax 是按需获取它的方式。如果您可以在初始页面加载时带来“可选”数据,那么您可以将其存储在隐藏的 div 中。就我个人而言,如果要为完整表单提取大量数据,我会选择前者并使用 ajax,只是按需引入它会加快页面加载速度。
  • 根本没有 js/JQuery 吗?
  • 我愿意接受使用任何方法的建议。忘记没有ajax。

标签: php jquery html ajax mysqli


【解决方案1】:

我假设你可以使用 jQuery。所以像这样添加一个 jQuery 监听器:

<script>
$(document).ready(function() {
    $('.country').on('change', function() {
        // Code to add country information in url
        location.href = location.href.split('?')[0]
            + ['?country', $(this).val()].join('=');
    });
});
</script>

现在在顶部的 php 代码中,在您提到的代码之后添加类似这样的内容

if (isset($_GET['country']) {
    $country = $_GET['country'];
    // code to prevent SQL injection
    // ... code to get data from DB using country name
    // ... code to print a new select box based on data from DB
}

【讨论】:

  • 按原样添加了脚本部分。并在我的第一个下拉菜单之后添加它。并使用此查询 select variable from nhws.num_all_{$country} group by variable; 添加您的其他 PHP 代码,从第一个下拉列表中选择后没有任何显示
  • @user3882752 在您的 php 代码之后添加我提到的 php 代码。然后在 HTML 内容中添加此脚本,您还必须在此之前包含 jquery
  • 我编辑了我的问题并将您的代码包含在其中。它仍然对我不起作用。查看问题以查看完整代码。谢谢!
  • @user3882752 在 PHP First 下拉列表中:将 &lt;select name='country' style=width:200px&gt; 更改为 &lt;select class='country' name='country' style='width:200px'&gt;
猜你喜欢
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 2019-06-14
  • 2018-02-03
相关资源
最近更新 更多