php动态根据第一个列表的选定值填充下拉列表

时间:2014-03-19 19:10:26

标签: php sql

在开始之前,我知道mysql已被折旧,但我的主管希望我将它用于此项目。

目前在名为“users_db”的数据库中有两个表。两个表都包含一列。

标有“year_of_study”的表格包含“year_name”列。 该表填充如下:

年份名称为“小学”,“初级周期”,“高级周期”。

标有“school”的表格包含“name_school”列。 该表填充如下:

name_school是“Goldsmith Hall”,“Marian College”,“Ringsend”,“St.Andrew's”

当用户从第一次下拉菜单中选择“小学”时,我希望第二次下拉只填充“Goldsmith Hall”和“Marian College”。当用户选择“Junior Cycle”或“Senior Cycle”时,我希望第二次下拉只填充“Ringsend”和“St.Andrew's”。

我知道我可能需要一个AJAX onchange或javascript?但我的问题是我没有太多运气经历了教程

如果有人能帮助我,我将不胜感激

<br>
 <?php
   mysql_connect("localhost","root","");
   mysql_select_db("users_db");
   $query = "SELECT DISTINCT year_name FROM year";
   $result = mysql_query($query);
  ?>


<label for="year_of_study">Year of study</label>
  <select name="year_of_study" id="year_of_study">
  <option value="null" selected>--Select One--</option>

  <?php
   while($row = mysql_fetch_array($result))
   {      

  echo "<option value=\"".mysql_real_escape_string($row['year_of_study'])."\">".$row["year_of_study"]."</option>";

  }
  ?>

   </select>

  <br>

  <?php
   mysql_connect("localhost","root","");
   mysql_select_db("users_db");
   $query = "SELECT DISTINCT name_school FROM school";
   $result = mysql_query($query);
  ?>


<label for="student_availability">Availability</label>
  <select name="student_availability" id="student_availability">
  <option value="null" selected>--Select One--</option>

  <?php
   while($row = mysql_fetch_array($result))
   {      

  echo "<option value=\"".mysql_real_escape_string($row['name_school'])."\">".$row["name_school"]."</option>";

  }
  ?>

   </select>

  <br>

1 个答案:

答案 0 :(得分:0)

您可能最好实现某种Web服务,然后在这种情况下执行一些JavaScript。绝对没有办法用PHP这样的服务器端语言动态地完成它 - 您必须使用JavaScript或Dart来执行客户端操作。看到你正在使用PHP,你可以使用Slim Framework为你提供一些RESTful API。

在你安装了Slim后:

$app = new \Slim\Slim();
$app->get('/school/:student_availability', function ($student_availability) {
    // do your query here and echo the results in JSON format
});
$app->run();

然后在jQuery上关于&#34; student_availability&#34;你可以做的选择改变:

$.getJSON("<yoururl>/school/" + $('#student_availability').val, function(result) {
    // you might want to clear it here to stop it becoming overpopulated
    $.each(result, function() {
        $('#student_availability').append($("<option/>").val(result.school_id).text(result.name_school));
    });
});

不是一个完整的答案,但希望是正确的方向。我还强烈建议您查看某种JavaScript网络应用程序框架,如果您对客户端丰富的网络应用程序感兴趣,请阅读以下内容:

  • Backbonejs:像Trello这样的应用程序是使用此构建的。
  • AngularJs:谷歌自己的JS框架。我相信他们将它用于他们的云应用控制面板。
  • Ember.js:采用率低于之前的两个,但声称自己的开箱即用效果更高。&#34;所以也许更少的学习曲线。

如果您感兴趣,那么请务必查看Node.js以制作RESTful API。

一切顺利。