PHP读取数据库生成二级联动选择框

本文介绍了一个使用PHP实现的动态生成多级下拉菜单的方法。通过从数据库中查询数据并根据层级关系构建选项,实现了根据用户选择动态更新子菜单的功能。此方法适用于需要展示分类数据的应用场景。

//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来读取的。根据需要修改。

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值