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 相关文章推荐
PHP5.4中json_encode中文转码的变化小结
Jan 30 PHP
php生成静态页面的简单示例
Apr 17 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
Dec 18 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
php实现用于删除整个目录的递归函数
Mar 16 PHP
PHP实现合并discuz用户
Aug 05 PHP
优化WordPress中文章与评论的时间显示
Jan 12 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
php版微信数据统计接口用法示例
Oct 12 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
Aug 15 PHP
php中pcntl_fork创建子进程的方法实例
Mar 14 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模板页面中分页代码的解析
2009/02/06 PHP
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
探讨PHP调用时间格式的参数详解
2013/06/06 PHP
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
详解EventDispatcher事件分发组件
2016/12/25 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
实测jquery data()如何存值
2013/08/18 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python运用于数据分析的简单教程
2015/03/27 Python
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
Python 元类实例解析
2018/04/04 Python
关于python写入文件自动换行的问题
2018/06/23 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
基于python实现文件加密功能
2020/01/06 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
Python字符串三种格式化输出
2020/09/17 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
优秀干部获奖感言
2014/01/31 职场文书
软件项目实施计划书
2014/05/02 职场文书
值班管理制度范本
2015/08/06 职场文书