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

标签 javascript php mysql list drop-down-menu

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

在数据库中,大学名称按集群(北、南、东、西等)组织,当前代码可以很好地制作集群列表和大学列表(均以“全部”开头) ,但彼此之间没有相关性。我尝试通过各种 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>

关于javascript - 使下拉列表依赖于 PHP 中的另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23122209/

相关文章:

javascript - jQuery.ajax 到 $http

使用 UNION/UNION ALL 和 Group By 的 MySQL 查询错误

mysql - MySQL 中何时使用单引号、双引号和反引号

php - 如何准备要插入 MySQL DATE 字段的数据?

javascript - 将 "http://"从粘贴的文本中剥离到文本框中

javascript - 修改 w2ui 插件

javascript - 如何选择特定类名的所有元素?

php - 确定排序表中每一行的排名

javascript - 如何在选中或取消选中时获取复选框的值而不提交表单

php - Zend Framework - 从 View 访问 View Helper