填充下拉列表 – 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动态填充第一个

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...