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中设置、使用、删除Cookie的解决方法
May 06 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
Sep 28 PHP
PHP设置图片文件上传大小的具体实现方法
Oct 11 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
CodeIgniter中实现泛域名解析
Jul 19 PHP
浅析iis7.5安装配置php环境
May 10 PHP
php中memcache 基本操作实例
May 17 PHP
php读取csc文件并输出
May 21 PHP
用PHP代码在网页上生成图片
Jul 01 PHP
深入讲解PHP Session及如何保持其不过期的方法
Aug 18 PHP
利用PHP自动生成印有用户信息的名片
Aug 01 PHP
实现php删除链表中重复的结点
Sep 27 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
php获取文件名后缀常用方法小结
2015/02/24 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
2015/08/04 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
Python 多线程抓取图片效率对比
2016/02/27 Python
python-str,list,set间的转换实例
2018/06/27 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
Python二维码生成识别实例详解
2019/07/16 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
介绍一下linux的文件系统
2012/03/20 面试题
高二地理教学反思
2014/01/24 职场文书
二年级学生评语大全
2014/04/23 职场文书
节约用水的口号
2014/06/20 职场文书
大四毕业生自荐书
2014/07/05 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
小学母亲节活动总结
2015/02/10 职场文书
应届生简历自我评价
2015/03/11 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
python中if和elif的区别介绍
2021/11/07 Python