根据先前的选择填充下拉列表

Posted

技术标签:

【中文标题】根据先前的选择填充下拉列表【英文标题】:Populating drop-down based on previous selection 【发布时间】:2011-11-04 10:54:54 【问题描述】:

我的 mysql 表看起来像这样

地区表

id     |   region
-------------------
1      |   Region1
2      |   Region2

...

和学校表

id     |   school
-------------------
1      |   schno1
1      |   schno5
1      |   schno6
2      |   scho120

我的注册表单中有多个选择(下拉)菜单。区域下拉列表如下所示

<select name="region">
<option value="0">Select the region</option>
<?php
$result=$db->query("SELECT * FROM regions");
while($row=$result->fetch_array(MYSQLI_BOTH))

    echo '<option value="'.$row[0].'">'.$row[1].'</option>';
    
?>
</select>

我想要做的是,获取“地区”id,然后根据“学校”表中的 id(先前选择的 id)填充学校下拉菜单。我是js的新手。请帮我修复它。提前谢谢。

【问题讨论】:

【参考方案1】:

1) 利用 jQuery 更改事件(绑定到区域选择) 2) 调用您的 php 脚本,您应该在其中提供基于区域 id 的学校数据 3) 将数据附加到学校选择

www 上有很多例子 - http://remysharp.com/2007/01/20/auto-populating-select-boxes-using-jquery-ajax/

【讨论】:

我是 js 新手。我想不通。如果可以,请编辑我的代码。 阅读文档,阅读示例,尝试一下。这就是你学会做某事的方式。【参考方案2】:
$region = mysql_real_escape_string($_POST['region']);
$query = "SELECT s.school FROM regions r 
          INNER JOIN schools s ON (s.region_id = r.id) 
          WHERE r.region LIKE '$region' ";  <<-- LIKE is case insensitive, '=' is NOT 
$result = $db->query($query);
if not($result) then  die("error"); 
while($row=$result->fetch_array(MYSQLI_BOTH))

  echo '<option value="'.$row[0].'">'.$row[1].'</option>';

【讨论】:

这是服务器端部分。以及如何找出客户端部分?

以上是关于根据先前的选择填充下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

根据 python plotly dash 中先前单选项目/下拉列表中的选择禁用下拉列表

如何使用Javascript根据先前的下拉值显示第二个下拉列表

jquery bootstrap selectpicker根据先前的列表选择刷新列表

根据第一个下拉选择填充第二个下拉列表

根据另一个下拉列表中的选择填充一个下拉列表,然后重定向

根据第一个下拉选择填充 HTML/PHP 下拉列表