我的HTML页面上有2个下拉列表:第一个下拉列表包含数据库列名称,第二个下拉列表将基于该数据库列名称进行填充, 即
我有一个带有字段的表:<Student Name, Degree, City>以下是条目;
<Student Name, Degree, City>
1. "A", "BS", "New York" 2. "B", "BS", "Chicago" 3. "C", "MS", "Boston" 4. "D", "MS", "New York"
因此,我的第一个下拉列表将包含列名称,即“ Degree”和“ City”。
如果我选择“学位”,则第二个下拉列表将填充“ BS”和“ MS”;如果我选择“城市”,则第二个下拉列表应选择“纽约”,“波士顿”和“芝加哥”。
我该如何进行实施?
[添加我的代码]:
该changeSecond(first)方法与您建议的完全相同
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> </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(); ?>
如果您想要一个更动态的解决方案(可以容纳对后台数据库的更改),则可以在页面上执行以下操作:
<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动态填充第一个