【发布时间】:2011-07-17 00:31:43
【问题描述】:
我的 HTML 页面上有 2 个下拉列表:第一个下拉列表包含数据库列名称,第二个下拉列表将根据这些名称填充 即
我有一个包含字段的表:<Student Name, Degree, City>,以下是条目;
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();
?>
【问题讨论】:
-
呃,对不起。尝试使用替代变量名而不是“新”...(在 changeSecond 函数中)
-
另外,您需要调整脚本以适应您的“全部”案例
-
@Robot:还是不行。从第一个下拉列表中选择一个值会在浏览器
"; while($row=mysql_fetch_row($data)) { echo ""; } echo ""; } ?>上显示以下内容。我无法理解这里的问题。数据库查询会不会有问题? -
看来 php 提前关闭了……有流氓吗?在
-
从头开始 ^...您的脚本仍然与上面显示的完全一样吗?看起来某处缺少引号,因此它正在回显不应该回显的所有内容,并隐藏了应回显的内容。也许额外的 \ 给第二个\">\";