繁体   English   中英

使下拉列表依赖于PHP中的另一个列表

[英]Making a dropdown list dependent on another list in PHP

我要创建一个下拉列表,该列表根据所做的选项创建一个新的下拉列表。 我可以使用以下代码使用JavaScript在HTML中完成此操作:

<div>
<legend> Question </legend>
     <select class="source" id="selType">
    <option>Select</option>
    <option value="A1"> Answer1 </option>
    <option value="A2"> Answer2 </option>
    <option value="A3"> Answer3 </option>
</select>
</div>
<div id="Answers">
<div id="A1" style="display: none;">
    <select id="Option1">
    <label>Select Workshop</label>
    <option value="1"> 1 </option>
    <option value="2"> 2 </option>
    <option value="3"> 3 </option>
    </select>
</div>

<div id="A2" style="display: none;">
    <select id="Option2">
        <-- list items -->
    </select>
</div>

<div id="A3" style="display: none;">
    <select id="Option3">
        <-- list items -->
    </select>
</div>
</div>  

<script>
$(function () {
$('#selType').change(function () {
    $('#Answers > div').hide();
    $('#Answers').find('#' + $(this).val()).show();
});
});
</script>

但是,我似乎无法使用2个通过PHP在MySQL中获取的数据制成的列表来做同样的事情。 如下。

// Pull data for cluster names
$query="SELECT LIST_OF_CLUSTERS.CLUSTER_NAME
    FROM LIST_OF_CLUSTERS";

$data = mysqli_query($db_connect, $query) or die(mysqli_error());

// Create drop down list of cluster names
echo "<label>Location</label>";
echo "<select class='form-control' name='location1'>";
echo "<option value='All'>All</option>";
$number_results = mysqli_num_rows($data);
    while($results = mysqli_fetch_array($data)){
        echo "<OPTION value='". $results['CLUSTER_NAME'] ."'>" . $results['CLUSTER_NAME'] . "</option>";
    }
echo "</select>";


// Pull data for university names
$query="SELECT LIST_OF_UNIVERSITIES.UNIVERSITY_NAME
    FROM LIST_OF_UNIVERSITIES
    ORDER BY LIST_OF_UNIVERSITIES.UNIVERSITY_NAME";

$data = mysqli_query($db_connect, $query) or die(mysqli_error());

// Create drop down list of cluster names
echo "<label>University</label>";
echo "<select class='form-control' name='university1'>";
echo "<option value='All'>All</option>";
$number_results = mysqli_num_rows($data);
    while($results = mysqli_fetch_array($data)){
        echo "<OPTION value='". $results['UNIVERSITY_NAME'] ."'>". $results['UNIVERSITY_NAME'] . "</option>";
        }
echo "</select>";

在数据库中,大学名称按簇(北,南,东西西等)进行组织,当前代码很好地完成了簇列表和大学列表(均以“ All”开头)的列表,但是彼此没有关联。 我试图通过各种id标签实现上述JavaScript,并试图将PHP拆分,但无济于事。

数据库中的大学数组包含一个名为“ Cluster”的条目的值,该值等于各个数字,具体取决于它们所在的群集(0、1,2等),我可以使列表仅显示该群集中的大学在下面添加WHERE CLUSTER ='n',因此创建我需要的列表很容易,我只是不能让它们仅在需要时显示;

// Pull data for uni names - South West
$query="SELECT LIST_OF_UNIVERSITIES.UNIVERSITY_NAME
    FROM LIST_OF_UNIVERSITIES
    WHERE CLUSTER='2'
    ORDER BY LIST_OF_UNIVERSITIES.UNIVERSITY_NAME";

任何帮助将非常感激 :)

没关系,我最终知道了。

它所需要的只是将php部分放在选择括号内,现在看来是如此明显。 我想我只是空白的一天:)

<div>
<label>University?</label>
<select class= "source form-control" id="selUni" name="university1">
    <option>Select</option>
    <option value='All'>All</option>
        <?php
        $number_results = mysqli_num_rows($data);
        while($results = mysqli_fetch_array($data)){
            echo "<OPTION value=\"". $results['UNIVERSITY_NAME'] . "\">". $results['UNIVERSITY_NAME'] . "</option>";
        }
        ?>
</select>
</div>

**与MVC相关的完整代码,使用Ajax下拉菜单**

                           <div class="col-md-4" id="cars_reff_idedt">
                            <select name="cars_reff_id" id="edtcars_reff_id" class="col-md-12" >
                                <option value="">--Select Car--</option>
                                <?php
                                foreach ($car as $new) {
                                    $sel = "";
                                    if (set_select('cars_reff_id', $new->id))
                                        $sel = "selected='selected'";
                                    echo '<option value="' . $new->id . '" ' . $sel . '>' . $new->name . '</option>';
                                }
                                ?>
                            </select>
                        </div>
                        <div class="col-md-4" id="chasis_id">
                            <select name="chasis_id" id="chasis_id" class="col-md-12" > </select>
                        </div> 



    <script>
//Dependent DropDown Car+Chessis
    $(document).on('change', '#edtcars_reff_id', function () {
        vch = $(this).val();
        if (vch) {
            $.ajax({
                url: '<?php echo site_url('admin/expense/getChessisNo') ?>',
                dataType: 'Json',
                data: {'id': vch},
                success: function (data) {
                    $('select[name="chasis_id"]').empty();
                    $.each(data, function (key, value) {
                        $('select[name="chasis_id"]').append('<option value="' + key + '">' + value + '</option>');
                    });
                }
            });
        } else {
            $('select[name="city"]').empty();
        }
    });
</script>

<?php
function getChessisNo() {
    $data = $this->car_model->getChessisByCarId($_GET['id']);
    $json = [];
    foreach ($data as $row) {
        $json[$row->id] = $row->number;
    }
    echo json_encode($json);
}

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM