【发布时间】:2012-02-24 11:13:52
【问题描述】:
我的数据库中有这四个表(同时是分层的):
表 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_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 下为 Villages 创建一个新选择框。
通过上述方式,当我们从新创建的选择框(我们可以称之为父/根选择框的子选择框)中逐一选择值时,我们最终将有四个选择框用于即。州、区、塔卢卡、村。
此过程的目的是我需要获取特定村庄的village_id 以及其他数据,例如state_id、district_id 和taluka_id。
请严格使用jQuery + AJAX、MySQL、PHP提供易于使用且灵活的解决方案。
仅供参考,我已成功使用 jQuery 的 ajax 方法为州和地区填充选择框,以将更改的选择框的值异步 POST 到包含 PHP 脚本的查询。好吧,这一直有效,直到我得到第二个区域选择框。这个 Districts 选择框是通过 DOM 操作而不是服务器使用 jQuery 创建的,因此我无法检查 Districts 选择框上的 change 事件,以便通过 AJAX 将其选择的值发布到包含查询的 PHP 脚本的 MySQL 查询特定地区的数据库并返回相关的 Talukas。是否可以使用bind、delegate 或live 事件处理程序来处理,呵呵——我不知道!!! :P
嗯,我的逻辑一定是完全错误的。算了,请给我一个完整的解决方案。我将从该解决方案中学到很多东西。 顺便说一句,感谢您阅读这一切令人厌恶的东西! ;)
我为此创建了一个原型设计。这应该有助于以视觉方式描述问题(或者正是我想要的输出或解决方案):
更新:可在此处获得工作演示代码:https://github.com/vishaltelangre/select-chain
【问题讨论】:
-
永远不要相信客户端会构建 SQL 字符串,除非你希望你的数据库被 SQL 注入攻击。
-
是的,我也同意。虽然它是通过使用诸如 trim()、mysql_real_escape_string() 和其他类似类型的 PHP 函数来解析来自服务器端 PHP 脚本中客户端应用程序的传递的 $_GET 或 $_POST 值来控制的。但它根本无法阻止 SQL 注入。
标签: php jquery mysql ajax drop-down-menu