php+mysql实现的二级联动菜单效果详解


Posted in PHP onMay 10, 2016

本文实例讲述了php+mysql实现的二级联动菜单效果。分享给大家供大家参考,具体如下:

<!--php+mysql二级联动-->
<html>
<head>
<meta http-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(学院名)
** version 1.0
** 作 者: wu yaowen
***********************************************/
//****************** 连接选择数据库 ***************
$link = mysql_connect("localhost", "root", "123456")
  or die("Could not connect : " . mysql_error());
mysql_select_db("dms") or die("Could not select database");
//******************提取学院信息 ******************
$queryCol = "select * from colleges order by college_id ";
mysql_query("SET NAMES 'gb2312'");
$result1 = mysql_query($queryCol) or die("Query failed : " . mysql_error());
$colleges = array();
while( $row1 = mysql_fetch_array($result1) )
{
  $colleges[] = $row1;
}
//print_r ($forum_data);
mysql_free_result($result1);
//**************获取专业信息 **************  
$queryMaj = "select * from majors order by college_id desc";
mysql_query("SET NAMES 'gb2312'");
if( !($result2 = mysql_query($queryMaj)) )
{
  die('Could not query t_city list');
}
$majors = array();
while( $row2 = mysql_fetch_array($result2) )
{
  $majors[] = $row2;
}
mysql_free_result($result2);
?>
<!--************ JavaScript处理 college-onChange *************-->
<script language = "JavaScript">
 var majorCount; // 存储专业记录条数
 // form_majors[] 储存专业 major数据,如 {(1,1,电子商务 ),(4,1,计算机科学 ),(3,2,古典文学 )}
 form_majors = new Array();
 <?php
   $num2 = count($majors); // $num2 获取专业表中记录的个数
 ?>
   majorCount = <?php echo $num2;?>;
 <?
   for($j=0;$j<$num2;$j++) // 从 0开始取出上面 majors[]中存储的专业数据填充数组
 {
 ?>
   form_majors[<?echo $j;?>] = new Array("<?echo $majors[$j]['major_id'];?>","<?echo $majors[$j]['college_id'];?>","<?echo $majors[$j]['name'];?>");
 <?php
 }
 ?>
 function changeCollege(college_id)
 {
   document.stu_add_form.major.length = 0;
   var id=id;
   var j;
   document.stu_add_form.major.options[0] = new Option('==选择专业 ==',''); // label的 value为空 ' '
   for (j=0;j < majorCount; j++) // 从 0开始判断
   {
    if (form_majors[j][1] == college_id) // if college_id等于选择的学院的 id
    {
       document.stu_add_form.major.options[document.stu_add_form.major.length] = new Option(form_majors[j][2], form_majors[j][0]);
    }
   }
 }
</script>
<!--********************页面表单 *************************-->
<form name="stu_add_form" method="post">
选择: <select name="college" onChange="changeCollege(document.stu_add_form.college.options[document.stu_add_form.college.selectedIndex].value)" size="1">
<option selected>==请选择学院 ==</option>
<?php
$num = count($colleges);
for($i=0;$i<$num;$i++)
{
?>
<option value="<?echo $colleges[$i]['college_id'];?>"><?echo $colleges[$i]['name'];?></option>
<?
}
?>
</select>
<select name="major">
<option selected value="">==选择专业 ==</option>
</select>
</form>
</body>
</html>

sql语句:

--
-- 表的结构 `colleges`
--
CREATE TABLE IF NOT EXISTS `colleges` (
 `college_id` int(8) NOT NULL auto_increment COMMENT '学院编号自动增加',
 `name` varchar(40) NOT NULL COMMENT '学院名称',
 PRIMARY KEY (`college_id`),
 UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 AUTO_INCREMENT=7 ;
--
-- 导出表中的数据 `colleges`
--
INSERT INTO `colleges` (`college_id`, `name`) VALUES
(4, '化学与化工学院'),
(1, '计算机与信息科学学院'),
(6, '美术学院'),
(2, '文学院'),
(5, '音乐学院'),
(3, '政治与公共管理学院');
--
-- 表的结构 `majors`
--
CREATE TABLE IF NOT EXISTS `majors` (
 `major_id` int(8) NOT NULL auto_increment COMMENT '专业号,自动增加',
 `name` varchar(40) NOT NULL COMMENT '专业名',
 `college_id` int(8) default NULL COMMENT '所在学院',
 `counsellor_id` int(10) default NULL COMMENT '辅导员',
 PRIMARY KEY (`major_id`),
 UNIQUE KEY `college_id` (`college_id`,`counsellor_id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 AUTO_INCREMENT=8 ;
--
-- 导出表中的数据 `majors`
--
INSERT INTO `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 相关文章推荐
PHP程序开发范例学习之表单 获取文本框的值
Aug 08 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
深入extjs与php参数交互的详解
Jun 25 PHP
PHP cdata 处理(详细介绍)
Jul 05 PHP
PHP将URL转换成短网址的算法分享
Sep 13 PHP
php实现用户登陆简单实例
Apr 04 PHP
Joomla框架实现字符串截取的方法示例
Jul 18 PHP
PHP实现将标点符号正则替换为空格的方法
Aug 09 PHP
php中如何执行linux命令详解
Nov 06 PHP
详解PHP素材图片上传、下载功能
Apr 12 PHP
laravel-admin 中列表筛选方法
Oct 03 PHP
浅析Yii2缓存的使用
May 10 #PHP
php简单统计在线人数的方法
May 10 #PHP
使用php实现从身份证中提取生日
May 09 #PHP
PHP使用内置函数生成图片的方法详解
May 09 #PHP
php时间计算相关问题小结
May 09 #PHP
php数据访问之查询关键字
May 09 #PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 #PHP
You might like
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
js数组的基本操作(很全自己整理的)
2014/10/16 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
python生成随机验证码(中文验证码)示例
2014/04/03 Python
Python中使用PIPE操作Linux管道
2015/02/04 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
8种用Python实现线性回归的方法对比详解
2019/07/10 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
python树的同构学习笔记
2019/09/14 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
2013/01/30 HTML / CSS
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
大学军训感想
2014/02/12 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
出纳岗位职责
2015/01/31 职场文书
运动会观后感
2015/06/09 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript
Oracle使用别名的好处
2022/04/19 Oracle
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript