我想把你原来的单表三级连动改为三个表的三级,因为
departments,
professional,和sm_required 的属性都不同,所以要用三个表。院系决定有什么专业,而专业决定要上什么科目。但我改了一下你的代码,只能显示到第二级:
//---------------------------------------------
<?php$conn = mysql_connect("localhost","root",""); // 连接数据库
mysql_select_db("sm"); // 选择库if(!isset($_GET['key'])) { // 检查是否有传递参数
$sql = "select * from sm_departments ";
$rs = mysql_query($sql);
$str = "";
while($row = mysql_fetch_array($rs)) // 循环构造初始信息
$str .= "<option value='{$row['departments_id']}'>{$row['departments_name']}\n";
}else { // 有,产生脚本代码
$sql = "select * from sm_professional where departments_id={$_GET['key']}";
$rs = mysql_query($sql);
$obj = substr($_GET['obj'],0,-1) . (substr($_GET['obj'],-1)+1);
$str = "$obj.options.length = 0;\n";
while($row = mysql_fetch_array($rs))
$str .= "$obj.options[$obj.options.length] = new Option('{$row['professional_name']}',{$row['professional_id']});\n";
echo $str; exit;
}
?>
本方法通过改变script标记的src属性来达到动态修改列表框的内容<br>
<script id="sensele" src=""></script>
<script>
function loadsele(v) {
var s = v.options[v.selectedIndex].value;
sensele.src = "?obj="+v.id+"&key="+s;
}
</script>
<select id="sele1" onchange="loadsele(this)">
<?php echo $str; ?>
</select>
<select id="sele2" onchange="loadsele(this)">>
</select>
<select id="sele3">
</select><?php print_r($_GET);?>
//--------------------------------
请问怎么第三级也能显示?
departments,
professional,和sm_required 的属性都不同,所以要用三个表。院系决定有什么专业,而专业决定要上什么科目。但我改了一下你的代码,只能显示到第二级:
//---------------------------------------------
<?php$conn = mysql_connect("localhost","root",""); // 连接数据库
mysql_select_db("sm"); // 选择库if(!isset($_GET['key'])) { // 检查是否有传递参数
$sql = "select * from sm_departments ";
$rs = mysql_query($sql);
$str = "";
while($row = mysql_fetch_array($rs)) // 循环构造初始信息
$str .= "<option value='{$row['departments_id']}'>{$row['departments_name']}\n";
}else { // 有,产生脚本代码
$sql = "select * from sm_professional where departments_id={$_GET['key']}";
$rs = mysql_query($sql);
$obj = substr($_GET['obj'],0,-1) . (substr($_GET['obj'],-1)+1);
$str = "$obj.options.length = 0;\n";
while($row = mysql_fetch_array($rs))
$str .= "$obj.options[$obj.options.length] = new Option('{$row['professional_name']}',{$row['professional_id']});\n";
echo $str; exit;
}
?>
本方法通过改变script标记的src属性来达到动态修改列表框的内容<br>
<script id="sensele" src=""></script>
<script>
function loadsele(v) {
var s = v.options[v.selectedIndex].value;
sensele.src = "?obj="+v.id+"&key="+s;
}
</script>
<select id="sele1" onchange="loadsele(this)">
<?php echo $str; ?>
</select>
<select id="sele2" onchange="loadsele(this)">>
</select>
<select id="sele3">
</select><?php print_r($_GET);?>
//--------------------------------
请问怎么第三级也能显示?
原来的你是单表结构的:
CREATE TABLE `menu` (
`id` int(10) NOT NULL,
`parent_id` varchar(40) default NULL,
`name` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ;
<% while(rs.next()){%> <option value=<%=rs.getString("topic_id")%>> <%=rs.getString("topic_name")%></option>
<%}%>
</select></p>
<script>
function loadsele(v) {
var s = v.options[v.selectedIndex].value;
sensele.src = "http://192.168.1.118:8080/listEdition.jsp?"+v.id+"="+s;
}
</script>
版名:<select id=editionid>
<script id="sensele" src="http://192.168.1.118:8080/listEdition.jsp?edition_id=1"></script> </select>
</form>