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 相关文章推荐
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
使用swoole扩展php websocket示例
Feb 13 PHP
PHP缓存机制Output Control详解
Jul 14 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
PHP中的常见魔术方法功能作用及用法实例
Jul 01 PHP
CodeIgniter扩展核心类实例详解
Jan 20 PHP
浅析php静态方法与非静态方法的用法区别
May 17 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
Oct 28 PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
PHP fclose函数用法总结
Feb 15 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
Feb 10 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 Undefined index的问题
2009/06/01 PHP
is_uploaded_file函数引发的不能上传文件问题
2013/10/29 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
2016/06/22 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
书法培训心得体会
2014/01/05 职场文书
化工专业大学生职业生涯规划书
2014/01/14 职场文书
光盘行动倡议书
2014/02/02 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
代办社保委托书范文
2014/10/06 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
实习单位推荐信
2015/03/27 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
初三数学教学反思
2016/02/17 职场文书
python批量创建变量并赋值操作
2021/06/03 Python
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS