根据另一个 select php 设置可用于 select 的选项

Set the option available for select based on another select php

大陆Table

  1. 亚洲
  2. 南美洲

国家Table

  1. 日本
  2. 中国
  3. 巴西
  4. 秘鲁

这是我的 table 中的数据,我从大洲 table 和国家 table 获取所有数据,就像这样

    <select name="continent" class='required InputBox'>
          <?php echo "<option value=''></option>"; 
    foreach (Contintent() as $value) { 
echo "<option id='" . $value[ 'sysid'] . "' value='" . $value[ 'name'] . "'>" . $value[ 'name'] . "</option>"; } ?>
        </select>

这是针对国家/地区的

<select name="country" class='required InputBox'>
              <?php echo "<option value=''></option>"; 
        foreach (Country() as $value) { 
    echo "<option id='" . $value[ 'sysid'] . "' value='" . $value[ 'name'] . "'>" . $value[ 'name'] . "</option>"; } ?>
            </select>

我想知道如何实现,当我 select 大陆(例如亚洲)时,可用于县的选项将仅是亚洲的国家/地区,即日本和中国。我还有另一个 table 在此之后是城市,但如果我得到这里的逻辑,我可以将它应用于城市。任何想法表示赞赏

"UPDATE"

找到了东西here

我不熟悉的一个是 ajax 谁能解释一下它是如何工作的 我想知道如何从这个 [=68= 传递 select 的 ID ] 我的 php 功能页面的片段是片段..

$('.continent').change(function() {
        var id = $(this).find(':selected')[0].id;
        //alert(id); 
        $.ajax({
            type:'POST',
            url:'../include/functions.php',
            data:{'id':id},
            success:function(data){
                // the next thing you want to do 
console.log(data);
                alert(id);
            }
        });

    });

在我的函数中 php

function Country(){
if(isset($_POST['id'])){
echo $_POST['id'];
}
}

问题是 id 的值没有传递我如何将它传递给 function.php 我在这里有点不知所措。它发生在 success:function(data){ 我接下来要做什么吗?

FYI

警报正常,它已经获取大陆的 ID,只是没有传递给 function.php console.log 什么也不写 当我将 url 更改为主页时 select 在 console.log returns 主页代码中的页面。

如前所述,可以使用ajax。 有一种静态的非 ajax 方法,但这种方法在长 运行.

中更好

基本上,您对 jQuery 所做的是监听大陆 select 框中的变化,当发生变化时,您向服务器发出请求:"give me all the countries within this continent".你应该有一个数据库,或者你可以将它们映射到静态对象中只是为了测试它。

$('.continent').change(function() {
    var id = $(this).val(); //get the current value's option
    $.ajax({
        type:'POST',
        url:'<path>/getCountries',
        data:{'id':id},
        success:function(data){
            //in here, for simplicity, you can substitue the HTML for a brand new select box for countries
            //1.
            $(".countries_container").html(data);

           //2.
           // iterate through objects and build HTML here
        }
    });
});

这当然会让你在 HTML 中添加 countries_container 并且在其中渲染 select:

<div class="countries_container"></div>

现在,在实际的 PHP 代码服务器端 (getCountries),您可以执行如下操作:

$id = $_POST['id'];
if(isset($id) && <other validations>)){

  // 1. your query to get countries from a given continent
  // and for each result you can build the HTML itself

  // 2. OR, a better solution is to return an Object and then in the
  // success:function(data){ } iterate through it
}

这段代码绝对可以改进,但我试图以一种易于理解的方式对其进行解释。

此外,您应该检查:

Jquery ajax populate dropdown with json response data

Demo of linked drop down list by using Ajax & PHP

请记住,这些是 google 搜索的第一个结果,因此,下一次,尝试 在堆栈溢出本身内搜索以避免重复问题。