我的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> </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 举报,一经查实,本站将立刻删除。