如何在一系列链接的选择框中填充 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_iddistrict_idtaluka_id

请严格使用jQuery + AJAX、MySQL、PHP提供易于使用且灵活的解决方案。

仅供参考,我已成功使用 jQuery 的 ajax 方法为州和地区填充选择框,以将更改的选择框的值异步 POST 到包含 php 脚本的查询。好吧,这一直有效,直到我得到第二个区域选择框。这个 Districts 选择框是通过 DOM 操作而不是服务器使用 jQuery 创建的,因此我无法检查 Districts 选择框上的 change 事件,以便通过 AJAX 将其选择的值发布到包含查询的 PHP 脚本的 mysql 查询特定地区的数据库并返回相关的 Talukas。是否可以使用binddelegatelive 事件处理程序来处理,呵呵——我不知道!!! :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 查询结果?的主要内容,如果未能解决你的问题,请参考以下文章

使用对数据库表的查询结果填充 html 表单选择元素

尝试使用 sql/vba 的结果填充文本框并出现 #Name 错误

如何在 C# 中存储 SQL 查询的结果字符串

VB |将 SQL 查询加载到组合框中

如何从 C# 中的 SQL 查询结果填充类?

如何使用 Snowflake sql 查询的结果填充 pandas DataFrame?