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程序设计有所帮助。