当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-03 11:45:56 浏览: 评论:0 

这篇文章主要介绍了php+mysql实现的二级联动菜单效果,涉及php操作mysql的连接、查询结合javascript的DOM节点操作实现二级联动菜单效果,末尾还附带了mysql数据库相应的sql语句,需要的朋友可以参考下。

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

  1. <!--php+mysql二级联动--> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  5. <title>生成学院专业级联下拉菜单测试 </title> 
  6. </head> 
  7. <body> 
  8. <? // 
  9. /*********************************************** 
  10. ** 功 能: php+mysql+javascript实现学院专业二级级联下拉框 
  11. ** 数据库:数据库名( dms)、数据表( colleges、 majors) 
  12. ** 表 colleges中字段: college_id( id编号)、 name(学院名) 
  13. ** 表 majors中的字段: major_id( id编号)、 college_id(学院 ID)、 name(学院名) 
  14. ** version 1.0 
  15. ** 作 者: wu yaowen 
  16. ***********************************************/ 
  17. //****************** 连接选择数据库 *************** 
  18. $link = mysql_connect("localhost""root""123456"
  19.   or die("Could not connect : " . mysql_error()); 
  20. mysql_select_db("dms"or die("Could not select database"); 
  21. //******************提取学院信息 ****************** 
  22. $queryCol = "select * from colleges order by college_id "
  23. mysql_query("SET NAMES 'gb2312'"); 
  24. $result1 = mysql_query($queryColor die("Query failed : " . mysql_error()); 
  25. $colleges = array(); 
  26. while$row1 = mysql_fetch_array($result1) ) 
  27.   $colleges[] = $row1
  28. //print_r ($forum_data); 
  29. mysql_free_result($result1); 
  30. //**************获取专业信息 **************   
  31. $queryMaj = "select * from majors order by college_id desc"
  32. mysql_query("SET NAMES 'gb2312'"); 
  33. if( !($result2 = mysql_query($queryMaj)) ) 
  34.   die('Could not query t_city list'); 
  35. $majors = array(); 
  36. while$row2 = mysql_fetch_array($result2) ) 
  37.   $majors[] = $row2
  38. mysql_free_result($result2); 
  39. ?> 
  40. <!--************ JavaScript处理 college-onChange *************--> 
  41. <script language = "JavaScript"
  42.  var majorCount; // 存储专业记录条数 
  43.  // form_majors[] 储存专业 major数据,如 {(1,1,电子商务 ),(4,1,计算机科学 ),(3,2,古典文学 )} 
  44.  form_majors = new Array(); 
  45.  <?php 
  46.    $num2 = count($majors); // $num2 获取专业表中记录的个数 
  47.  ?> 
  48.    majorCount = <?php echo $num2;?>; 
  49.  <? 
  50.    for($j=0;$j<$num2;$j++) // 从 0开始取出上面 majors[]中存储的专业数据填充数组 
  51.  { 
  52.  ?> 
  53.    form_majors[<?echo $j;?>] = new Array("<?echo $majors[$j]['major_id'];?>","<?echo $majors[$j]['college_id'];?>","<?echo $majors[$j]['name'];?>"); 
  54.  <?php 
  55.  } 
  56.  ?> 
  57.  function changeCollege(college_id) 
  58.  { 
  59.    document.stu_add_form.major.length = 0; 
  60.    var id=id; 
  61.    var j; 
  62.    document.stu_add_form.major.options[0] = new Option('==选择专业 ==',''); // label的 value为空 ' ' 
  63.    for (j=0;j < majorCount; j++) // 从 0开始判断 
  64.    { 
  65.     if (form_majors[j][1] == college_id) // if college_id等于选择的学院的 id 
  66.     { 
  67.        document.stu_add_form.major.options[document.stu_add_form.major.length] = new Option(form_majors[j][2], form_majors[j][0]); 
  68.     } 
  69.    } 
  70.  } 
  71. </script> 
  72. <!--********************页面表单 *************************--> 
  73. <form name="stu_add_form" method="post"
  74. 选择: <select name="college" onChange="changeCollege(document.stu_add_form.college.options[document.stu_add_form.college.selectedIndex].value)" size="1"
  75. <option selected>==请选择学院 ==</option> 
  76. <?php 
  77. $num = count($colleges); 
  78. for($i=0;$i<$num;$i++) 
  79. ?> 
  80. <option value="<?echo $colleges[$i]['college_id'];?>"><?echo $colleges[$i]['name'];?></option> 
  81. <? 
  82. ?> 
  83. </select> 
  84. <select name="major"
  85. <option selected value="">==选择专业 ==</option> 
  86. </select> 
  87. </form> 
  88. </body> 
  89. </html> 

sql语句:

  1. -- 
  2. -- 表的结构 `colleges` 
  3. -- 
  4. CREATE TABLE IF NOT EXISTS `colleges` ( 
  5.  `college_id` int(8) NOT NULL auto_increment COMMENT '学院编号自动增加'
  6.  `namevarchar(40) NOT NULL COMMENT '学院名称'
  7.  PRIMARY KEY (`college_id`), 
  8.  UNIQUE KEY `name` (`name`) 
  9. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 AUTO_INCREMENT=7 ; 
  10. -- 
  11. -- 导出表中的数据 `colleges` 
  12. -- 
  13. INSERT INTO `colleges` (`college_id`, `name`) VALUES 
  14. (4, '化学与化工学院'), 
  15. (1, '计算机与信息科学学院'), 
  16. (6, '美术学院'), 
  17. (2, '文学院'), 
  18. (5, '音乐学院'), 
  19. (3, '政治与公共管理学院'); 
  20. -- 
  21. -- 表的结构 `majors` 
  22. -- 
  23. CREATE TABLE IF NOT EXISTS `majors` ( 
  24.  `major_id` int(8) NOT NULL auto_increment COMMENT '专业号,自动增加'
  25.  `namevarchar(40) NOT NULL COMMENT '专业名'
  26.  `college_id` int(8) default NULL COMMENT '所在学院'
  27.  `counsellor_id` int(10) default NULL COMMENT '辅导员'
  28.  PRIMARY KEY (`major_id`), 
  29.  UNIQUE KEY `college_id` (`college_id`,`counsellor_id`) 
  30. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 AUTO_INCREMENT=8 ; 
  31. -- 
  32. -- 导出表中的数据 `majors` 
  33. -- 
  34. INSERT INTO `majors` (`major_id`, `name`, `college_id`, `counsellor_id`) VALUES 
  35. (1, '电子商务', 1, 1), 
  36. (2, '音乐视唱', 5, 1), 
  37. (3, '古典文学', 2, 1), 
  38. (4, '计算机科学', 1, NULL), 
  39. (5, '自动化', 1, NULL), 
  40. (6, '现代文学', 2, NULL), 
  41. (7, '新闻写作', 2, NULL);

Tags: php+mysql二级联动

分享到: