php+mysql实现的二级联动菜单效果详解
本文实例讲述了php+mysql实现的二级联动菜单效果。分享给大家供大家参考,具体如下:
<!--php+mysql二级联动-->
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<title>生成学院专业级联下拉菜单测试</title>
</head>
<body>
<?//
/***********************************************
**功能:php+mysql+javascript实现学院专业二级级联下拉框
**数据库:数据库名(dms)、数据表(colleges、majors)
**表colleges中字段:college_id(id编号)、name(学院名)
**表majors中的字段:major_id(id编号)、college_id(学院ID)、name(学院名)
**version1.0
**作者:wuyaowen
***********************************************/
//******************连接选择数据库***************
$link=mysql_connect("localhost","root","123456")
ordie("Couldnotconnect:".mysql_error());
mysql_select_db("dms")ordie("Couldnotselectdatabase");
//******************提取学院信息******************
$queryCol="select*fromcollegesorderbycollege_id";
mysql_query("SETNAMES'gb2312'");
$result1=mysql_query($queryCol)ordie("Queryfailed:".mysql_error());
$colleges=array();
while($row1=mysql_fetch_array($result1))
{
$colleges[]=$row1;
}
//print_r($forum_data);
mysql_free_result($result1);
//**************获取专业信息**************
$queryMaj="select*frommajorsorderbycollege_iddesc";
mysql_query("SETNAMES'gb2312'");
if(!($result2=mysql_query($queryMaj)))
{
die('Couldnotqueryt_citylist');
}
$majors=array();
while($row2=mysql_fetch_array($result2))
{
$majors[]=$row2;
}
mysql_free_result($result2);
?>
<!--************JavaScript处理college-onChange*************-->
<scriptlanguage="JavaScript">
varmajorCount;//存储专业记录条数
//form_majors[]储存专业major数据,如{(1,1,电子商务),(4,1,计算机科学),(3,2,古典文学)}
form_majors=newArray();
<?php
$num2=count($majors);//$num2获取专业表中记录的个数
?>
majorCount=<?phpecho$num2;?>;
<?
for($j=0;$j<$num2;$j++)//从0开始取出上面majors[]中存储的专业数据填充数组
{
?>
form_majors[<?echo$j;?>]=newArray("<?echo$majors[$j]['major_id'];?>","<?echo$majors[$j]['college_id'];?>","<?echo$majors[$j]['name'];?>");
<?php
}
?>
functionchangeCollege(college_id)
{
document.stu_add_form.major.length=0;
varid=id;
varj;
document.stu_add_form.major.options[0]=newOption('==选择专业==','');//label的value为空''
for(j=0;j<majorCount;j++)//从0开始判断
{
if(form_majors[j][1]==college_id)//ifcollege_id等于选择的学院的id
{
document.stu_add_form.major.options[document.stu_add_form.major.length]=newOption(form_majors[j][2],form_majors[j][0]);
}
}
}
</script>
<!--********************页面表单*************************-->
<formname="stu_add_form"method="post">
选择:<selectname="college"onChange="changeCollege(document.stu_add_form.college.options[document.stu_add_form.college.selectedIndex].value)"size="1">
<optionselected>==请选择学院==</option>
<?php
$num=count($colleges);
for($i=0;$i<$num;$i++)
{
?>
<optionvalue="<?echo$colleges[$i]['college_id'];?>"><?echo$colleges[$i]['name'];?></option>
<?
}
?>
</select>
<selectname="major">
<optionselectedvalue="">==选择专业==</option>
</select>
</form>
</body>
</html>
sql语句:
-- --表的结构`colleges` -- CREATETABLEIFNOTEXISTS`colleges`( `college_id`int(8)NOTNULLauto_incrementCOMMENT'学院编号自动增加', `name`varchar(40)NOTNULLCOMMENT'学院名称', PRIMARYKEY(`college_id`), UNIQUEKEY`name`(`name`) )ENGINE=InnoDBDEFAULTCHARSET=gb2312AUTO_INCREMENT=7; -- --导出表中的数据`colleges` -- INSERTINTO`colleges`(`college_id`,`name`)VALUES (4,'化学与化工学院'), (1,'计算机与信息科学学院'), (6,'美术学院'), (2,'文学院'), (5,'音乐学院'), (3,'政治与公共管理学院'); -- --表的结构`majors` -- CREATETABLEIFNOTEXISTS`majors`( `major_id`int(8)NOTNULLauto_incrementCOMMENT'专业号,自动增加', `name`varchar(40)NOTNULLCOMMENT'专业名', `college_id`int(8)defaultNULLCOMMENT'所在学院', `counsellor_id`int(10)defaultNULLCOMMENT'辅导员', PRIMARYKEY(`major_id`), UNIQUEKEY`college_id`(`college_id`,`counsellor_id`) )ENGINE=InnoDBDEFAULTCHARSET=gb2312AUTO_INCREMENT=8; -- --导出表中的数据`majors` -- INSERTINTO`majors`(`major_id`,`name`,`college_id`,`counsellor_id`)VALUES (1,'电子商务',1,1), (2,'音乐视唱',5,1), (3,'古典文学',2,1), (4,'计算机科学',1,NULL), (5,'自动化',1,NULL), (6,'现代文学',2,NULL), (7,'新闻写作',2,NULL);
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《PHP+MongoDB数据库操作技巧大全》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。