微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

填充下拉列表 – PHP Ajax MySQL

我的HTML页面上有2个下拉列表:第一个下拉列表包含数据库名称,第二个下拉列表将基于该名称填充,即

我有一个包含字段的表:<学生姓名,学位,城市>以下是参赛作品;

1. "A", "BS", "New York"
2. "B", "BS", "Chicago"
3. "C", "MS", "Boston"
4. "D", "MS", "New York"

所以我的第一个下拉列表将包含列名称,即“Degree”和“City”.

如果我选择“Degree”,第二个下拉列表应该填充“BS”和“MS”,如果我选择“City”,第二个下拉列表应该选择“New York”,“Boston”和“Chicago”.

我该如何进行实施?

[添加我的代码]:

changeSecond(first)方法与您建议的完全相同

<body>
   <form method="POST" action="" name="mainForm">
      <table>
         <tr>
            <td> Filter by: </td>
            <td>
            <div id="first">
               <select onChange="changeSecond(this.value)">
                  <option value="1">All</option>
                  <option value="2">Degree</option>
                  <option value="3">City</option>
               </select>
            </td>
         </tr>
         <tr>
            <td>&nbsp</td>
            <td>
               <div id="second">
                  <select name="val">
                     <option value=""></option>
                  </select>
               </div>
            </td>
         </tr>
      </table>
   </form>
</body>

这是你建议的second_script.PHP

<?
   $link = MysqL_connect("localhost", "root", "");

   if (!$link)
   {
      die('Could not connect: ' . MysqL_error());
   }
   if (MysqL_select_db("myDatabase", $link))
   {
      $first=MysqL_real_escape_string($_REQUEST["first"]);
      $query="SELECT ".$first." FROM myTable GROUP BY ".$first;
      $data=MysqL_query($query);

      echo "<select id=\"second\">";
      while($row=MysqL_fetch_row($data))
      {
         echo "<option value=\"".$row[0]."\">".$row[0]."</option>";
      }
      echo "</select>";
   }
   echo MysqL_error();
?>

解决方法:

如果您想要一个更动态的解决方案(可以适应后台DB的更改),您可以在页面上执行以下操作:

<script>
        function changeSecond(first){
        var xmlhttp;
        if (window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
          }
        else
          {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        xmlhttp.onreadystatechange=function()
        {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            var res=xmlhttp.responseText;
            document.getElementById("second").innerHTML=res;
            }
          }
        xmlhttp.open("GET","second_script.PHP?first="+first,true);
        xmlhttp.send();
        }
        </script>
...
<select onChange="changeSecond(this.value)">
<option value="Degree">Degree</option>
<option value="City">City</option>
</select>
<div id="second"><select><option value=""></option></select></div>

然后是一个类似于的脚本:

<?PHP
//database connection
$first=MysqL_real_escape_string($_REQUEST["first"]);
$query="SELECT ".$first." FROM tablename GROUP BY ".$first;
$data=MysqL_query($query);
echo "<select>";
while($row=MysqL_fetch_row($data)){
echo "<option value=\"".$row[0]."\">".$row[0]."</option>";
}
echo "</select>";
?>

我想为了真正的灵活性,你还想在另一个类似于上面的脚本中使用MysqL_field_name动态填充第一个

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐