我的数据库中有这四个表(同时是分层的):
表 1:状态
+----------+-------------+
| state_id | state_name |
+----------+-------------+
| 1 | Maharashtra |
| 2 | Goa |
+----------+-------------+
表2:地区
+-------------+---------------+----------+
| district_id | district_name | state_id |
+-------------+---------------+----------+
| 1 | Mumbai | 1 |
| 2 | Pune | 1 |
| 3 | Nashik | 1 |
| 4 | Aurangabad | 1 |
| 5 | Panjim | 2 |
| 6 | Dandeli | 2 |
| 7 | Karwar | 2 |
+-------------+---------------+----------+
表 3:Taluka
+-----------+-------------+-------------+
| taluka_id | taluka_name | district_id |
+-----------+-------------+-------------+
| 1 | Alibag | 1 |
| 2 | Kalyan | 1 |
| 3 | Matheran | 1 |
| 4 | Vaijapur | 4 |
| 5 | Gangapur | 4 |
| 6 | Kannad | 4 |
| 7 | Sillod | 4 |
| 8 | Madgaon | 5 |
| 9 | Vengurle | 5 |
| 10 | Sawantwadi | 5 |
+-----------+-------------+-------------+
表 4:村庄
+------------+--------------+-----------+
| village_id | village_name | taluka_id |
+------------+--------------+-----------+
| 1 | Ranjangaon | 5 |
| 2 | Wadgaon | 5 |
| 3 | Teesgaon | 5 |
+------------+--------------+-----------+
如何在发生以下事件时显示动态加载的选择框:
- 显示“州”表中州名的选择框
- 在这里,
state_id
作为<option>
的值标记和state_name
作为开始和结束之间的文本<option>
标签)
- 在这里,
- 从州的第一个选择框中选择任何一个州时,显示一个新创建的选择框,用于“地区”表中与第一个选择框中的所选州选项相关的地区名称
- 在这里,
district_id
作为<option>
的值标记和district_name
作为开始和结束之间的文本<option>
标签
- 在这里,
- 类似地在第二个选择框的所选地区下为 Talukas 创建一个新的选择框。
- 再次类似地为从第三个选择框选择的 Taluka 下的村庄创建一个新的选择框。
以上述方式,当从新创建的选择框(我们可以称之为父/根选择框的子选择框)中逐一选择值时,我们最终将有四个选择框用于可视化。州、区、Taluka、村庄。
此过程背后的目的是我需要获得 village_id
特定村庄的数据以及其他数据,例如 state_id
, district_id
, 和 taluka_id
.
请严格使用jQuery + AJAX、MySQL、PHP提供易于使用且灵活的解决方案。
仅供引用,我已经成功地使用 jQuery 的 ajax 方法填充州和地区的选择框,以将更改后的选择框的值异步发布到包含 PHP 脚本的查询。好吧,这一直有效,直到我获得第二个区域选择框。 Districts 的这个选择框是由 DOM 操作创建的,而不是由使用 jQuery 的服务器创建的,因此我无法检查 change
。地区选择框上的事件,以便通过 AJAX 将其选择的值发布到包含 PHP 脚本的 MySQL 查询,该脚本查询特定地区的数据库并返回相关的 Talukas。可以使用 bind
处理吗? , delegate
或 live
事件处理程序,呵呵——我不知道!!! :P
嗯,我的逻辑一定是完全错误的。算了吧,请给我一个完整的解决方案。我将从该解决方案中学到很多东西。 顺便说一句,感谢您阅读这些令人厌恶的内容! ;)
我为此创建了一个原型(prototype)设计。这应该有助于以视觉方式描述问题(或者正是我想要的输出或解决方案):
更新:此处提供工作演示代码:https://github.com/vishaltelangre/select-chain
最佳答案
- 使用
State
表显示下拉列表。state_id
将是选项值,state_name
将是文本。 - 当
onchange
事件在此下拉菜单上触发时,获取所选选项的值。 - 向选定状态的加载区发送 Ajax 调用。参数将为
state_id
- 在 PHP 端获取
District
中具有匹配state_id
的所有行。将其作为 JSON 响应返回 - 当 Ajax 获得响应时,创建一个新的下拉列表或使用此新结果填充先前创建的下拉列表。
- 转到
District
的第 1 步,然后是Taluka
,然后是Village
关于php - 如何在一系列链式选择框中填充 sql 查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9101495/