【问题标题】:Making a dropdown list dependent on another list in PHP使下拉列表依赖于 PHP 中的另一个列表
【发布时间】:2014-04-16 23:48:51
【问题描述】:

我想创建一个下拉列表,根据所做的选项创建一个新的下拉列表。我可以使用 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>

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

// 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 拆分,但无济于事。

数据库中的大学数组包含每个名为“集群”的条目的值,该值等于各种数字,具体取决于它们所在的集群(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";

任何帮助将不胜感激:)

【问题讨论】:

  • 那么您是想在不刷新的情况下更改页面上的大学集群,还是要使用所选集群提交表单/刷新页面,然后从发布的集群中构建大学下拉列表价值?
  • 我希望在上一个下拉列表中选择特定于集群位置的大学下拉列表。考虑一个国家下拉列表,然后显示该国家的特定城市列表。例如,选择 France 将显示一个列表,其中包含法国城市的数据库条目(无需刷新)

标签: javascript php mysql list drop-down-menu


【解决方案1】:

没关系,我终于明白了。

只需要将 php 部分放在 select 括号内,现在看起来很明显。我想我只是度过了空白的一天:)

<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>

【讨论】:

    【解决方案2】:

    **完整代码与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);
    }
    

    ?>

    【讨论】:

      猜你喜欢
      • 2021-03-12
      • 1970-01-01
      • 2019-09-05
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      相关资源
      最近更新 更多