php - 如何在一系列链式选择框中填充 sql 查询结果?

标签 php jquery mysql ajax drop-down-menu

我的数据库中有这四个表(同时是分层的):

表 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 处理吗? , delegatelive事件处理程序,呵呵——我不知道!!! :P


嗯,我的逻辑一定是完全错误的。算了吧,请给我一个完整的解决方案。我将从该解决方案中学到很多东西。 顺便说一句,感谢您阅读这些令人厌恶的内容! ;)


我为此创建了一个原型(prototype)设计。这应该有助于以视觉方式描述问题(或者正是我想要的输出或解决方案):

"Prototype design for describing question"



更新:此处提供工作演示代码:https://github.com/vishaltelangre/select-chain

最佳答案

  1. 使用 State 表显示下拉列表。 state_id 将是选项值,state_name 将是文本。
  2. onchange 事件在此下拉菜单上触发时,获取所选选项的值。
  3. 向选定状态的加载区发送 Ajax 调用。参数将为 state_id
  4. 在 PHP 端获取 District 中具有匹配 state_id 的所有行。将其作为 JSON 响应返回
  5. 当 Ajax 获得响应时,创建一个新的下拉列表或使用此新结果填充先前创建的下拉列表。
  6. 转到 District 的第 1 步,然后是 Taluka,然后是 Village

关于php - 如何在一系列链式选择框中填充 sql 查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9101495/

相关文章:

php - 如何在金字塔排名系统中获得挑战者

php - if 语句中括号的使用

javascript - 日期时间选择器显示在上方时不工作

jquery - bxSlider 触摸启用 - 禁用垂直触摸事件,因此只有水平触摸事件起作用

php - 连接到数据库

mysql - 如果我有一个没有数据的 VARCHAR(32),它会占用空间吗?

php - 页面网址 {$smarty.server.PHP_SELF}

javascript - 为什么 array.prototype.map.call(..) 在使用原型(prototype)框架的情况下不起作用?

jquery - 我不应该在不使用 jquery 的页面上包含 jquery 吗?

php - 将mysql字段添加到if语句