如何通过使用在上一个下拉列表中选择的选项执行查询来创建下拉列表

How to create a drop down list by performing a query with the option selected in previous dropdown list

我有一个带有网络下拉列表的表单

<div class="control-group">
    <label class="control-label" for="form-field-1">Network</label>
        <div class="controls">
            <select id="a_network"  name="a_network" onchange="getplan();">
                <option>Choose Network</option>
                    <?php 
                        $q=mysql_query("select * from network");
                        while($rq=mysql_fetch_array($q))
                        {
                    ?>
                            <option value="<?php echo $rq['id'];?>"><?php echo $rq['network_name'];?></option>
                    <?php
                        } 
                    ?>
            </select>
        </div>
</div>    

我有另一个名为 plan 的下拉列表,根据所选的网络选项从数据库中获取选项

<div class="control-group">
    <label class="control-label" for="form-field-1">Plan</label>
    <div class="controls">
            <select id="plan"  name="plan">
                <option>Choose Plan</option>
                    <?php 
                        $q=mysql_query("select * from sim_plans where network_id='$nid'");
                        while($rq=mysql_fetch_array($q))
                        {
                    ?>
                            <option value="<?php echo $rq['plan_id'];?>"><?php echo $rq['plan'];?></option>
                    <?php
                        } 
                    ?>
            </select>
    </div>
</div>

这里$nid应该是选择的网络选项的值。这该怎么做。我想也许我们可以在网络上使用 onchange 函数,但不知道怎么做。

<script>
function getplan()
{
var netid = $("#a_network").val();

    $.ajax({
        url:"<?php echo site_url('sim_orders/get_plan')?>/"+netid,
        type:"POST",
        dataType:"JSON",
        success:function(data)
        {
            var len=data.length;
            $('#plan').empty();
            for(var i=0;i<len;i++)
            {
                var id=data[i]['id'];
                var name=data[i]['name'];
                $('#plan').append("<option value='"+id+"'>"+name+"</option>");
            }
        },
        error:function (jqXHR, textStatus, errorThrown)
        {
            alert("Error in getting plans");
        }
    });
</script>

PHP:

public function get_plan($id)
{
    $plans=array();
    $q=mysql_query("select * from sim_plans where network_id='$id'");
    while($res=mysql_fetch_assoc($q))
    {
        $plans[]=array("id"=>$res['plan_id'],"name"=>$res['plan']);
    }

    echo json_encode($plans);
}

选择网络后不显示任何选项 你好!知道了。我忘了在成功功能后加逗号。所以没有得到下拉。感谢您的帮助!

试试这个:

<div class="control-group">
        <label class="control-label" for="form-field-1">Network</label>
            <div class="controls">
                <select id="a_network"  name="a_network" onchange="getplan();">
                    <option>Choose Network</option>
                        <?php 
                            $q=mysql_query("select * from network");
                            while($rq=mysql_fetch_array($q))
                            {
                        ?>
                                <option value="<?php echo $rq['id'];?>"><?php echo $rq['network_name'];?></option>
                        <?php
                            } 
                        ?>
                </select>
            </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="form-field-1">Plan</label>
        <div class="controls">
                <select id="plan"  name="plan"></select>
        </div>
    </div>

    <script>
    function getplan()
    {
    var network_id = $("#a_network").val();
    $("#plan").empty();

            if(network_id != ''){
                $.ajax({
                    type: "post",
                    url: "getPlanbyNetworkID.php",
                    data: {network_id: network_id},
                    dataType: "html",
                    success: function(data) {
                        $("#plan").append(data);
                });
            }
    }
    </script>

现在创建名为 getPlanbyNetworkID.php 的页面并在其中写入所需的查询:

<?php 
        $network_id = $_POST['network_id'];

        $q=mysql_query("select * from sim_plans where network_id='$network_id'");
    $dropdown = '<option>Choose Plan...</option>';
        while($rq=mysql_fetch_array($q))
        {
    $dropdown .=  '<option value="' . $rq['plan_id'] . '">' . $rq['plan'] . '</option>';
        }
echo $dropdown;
    ?>