如何在一系列链接的选择框中填充 sql 查询结果?
Posted
技术标签:
【中文标题】如何在一系列链接的选择框中填充 sql 查询结果?【英文标题】:How to populate sql query result in a series of chained select boxes? 【发布时间】: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 注入。 【参考方案1】:-
使用
State
表显示下拉列表。 state_id
将是选项值,state_name
将是文本。
当onchange
事件在此下拉列表中触发时,获取选定选项的值。
发送 Ajax 调用以加载所选状态的区。参数为state_id
在 PHP 端从District
中获取与state_id
匹配的所有行。将其作为 JSON 响应返回
当 Ajax 获得响应时,创建一个新的下拉列表或使用此新结果填充先前创建的下拉列表。
转到步骤 1 获取 District
然后 Taluka
然后 Village
【讨论】:
以上是关于如何在一系列链接的选择框中填充 sql 查询结果?的主要内容,如果未能解决你的问题,请参考以下文章