//db_class.php
<?php
class myconn{
var $conn;
var $result;
function myconn(){//这里根据需要修改数据库连接参数
$this->conn=mysql_connect('localhost','root','888888');
mysql_select_db('ys',$this->conn);
}
function process($sql){
mysql_query('set names gbk');
$result=mysql_query($sql);
//mysql_close($this->conn);
return $result;
}
}
?>
//test.php
<?php
require_once('db_class.php');
$conn=new myconn();
?>
<form name="frm">
<select name="s1" onChange="redirec(document.frm.s1.options.selectedIndex)">
<option selected>请选择</option>
<?php
$sql="select name,id from luo_sclass where fid=11";
$result=$conn->process($sql);
$num=mysql_num_rows($result);
for($i=0;$i<$num;$i++){
mysql_data_seek($result,$i);
$data=mysql_fetch_array($result);
?>
<option value="<?php echo $data[1];?>"><?php echo $data[0];?></option>
<?php
}
?>
</select>
<select name="s2">
<option value="请选择" selected>请选择</option>
</select>
</form>
<script language="javascript">
//获取一级菜单长度
var select1_len = document.frm.s1.options.length;
var select2 = new Array(select1_len);
//把一级菜单都设为数组
for (i=0; i<select1_len; i++)
{
select2[i] = new Array();
}
<?php
require_once('db_class.php');
$conn=new myconn();
$sql="select name,id from luo_sclass where fid=11";
$result=$conn->process($sql);
$num=mysql_num_rows($result);
for($i=0;$i<$num;$i++){
mysql_data_seek($result,$i);
$data=mysql_fetch_array($result);
$sql2="select name,id from luo_sclass where fid=".$data[1];
$result2=$conn->process($sql2);
$num2=mysql_num_rows($result2);
for($j=0;$j<$num2;$j++){
mysql_data_seek($result2,$j);
$data2=mysql_fetch_array($result2);
?>
//select2[$i][$j] = new Option('$data2[0]', ' ');
select2[<?php echo ($i+1);?>][<?php echo $j;?>] = new Option("<?php echo $data2[0];?>", "<?php echo $data2[1];?>");
<?php
}
}
?>
select2[0][0] = new Option("请选择", " ");
function redirec(x)
{
var temp = document.frm.s2;
for (i=0;i<select2[x].length;i++)
{
temp.options[i]=new Option(select2[x][i].text,select2[x][i].value);
}
if(select2[x].length==0)temp.options[0]=new Option("",""); //如果一级菜单为的子菜单项为空的时候,选择此一级菜单的时候,二级显示为空
temp.options[0].selected=true;
}
</script>
/*
这里的重点是二级下拉框数据的读取问题,由于我的数据是放在一个无级表中,所以我是用一级下拉框的ID作为二级下拉框的FID来读取的。根据需要修改。
*/
本文介绍了一个使用PHP实现的动态生成多级下拉菜单的方法。通过从数据库中查询数据并根据层级关系构建选项,实现了根据用户选择动态更新子菜单的功能。此方法适用于需要展示分类数据的应用场景。
558

被折叠的 条评论
为什么被折叠?



