php 三级联动菜单

数据库结构

  

复制代码 代码如下:

  -- 表的结构 `bigclass`

  --

  CREATE TABLE `bigclass` (

  `bigclassid` int(11) NOT NULL auto_increment,

  `bigclassname` varchar(200) collate utf8_unicode_ci NOT NULL,

  `sort` int(11) NOT NULL,

  `suoshu` int(1) NOT NULL,

  PRIMARY KEY (`bigclassid`)

  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=19 ;

  -- 表的结构 `smallclass`

  --

  CREATE TABLE `smallclass` (

  `smallclassid` int(11) NOT NULL auto_increment,

  `smallclassname` varchar(200) collate utf8_unicode_ci NOT NULL,

  `bigclassid` int(11) NOT NULL,

  `sort` int(11) NOT NULL,

  PRIMARY KEY (`smallclassid`)

  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=7 ;

  -- 表的结构 `minclass`

  --

  CREATE TABLE `minclass` (

  `minclassid` int(10) NOT NULL auto_increment,

  `minclassname` varchar(200) NOT NULL,

  `bigclassid` int(10) NOT NULL,

  `smallclassid` int(10) NOT NULL,

  `sort` int(10) NOT NULL,

  PRIMARY KEY (`minclassid`)

  ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

  代码如下

  

复制代码 代码如下:

  <script language = "JavaScript">

  var onecount;

  onecount=0;

  subcat = new Array();

  <?

  //类别选择

  mysql_select_db($database_lr, $lr);

  $sql = "select * from smallclass order by sort";

  $result = mysql_query( $sql );

  $count = 0;

  while($res = mysql_fetch_row($result)){

  ?>

  subcat[<?=$count?>] = new Array("<?=$res[1]?>","<?=$res[4]?>","<?=$res[0]?>");

  <?

  $count++;

  }

  ?>

  onecount=<?php echo $count?>

  //联动函数

  function changelocation(bigclassid)

  {

  document.myform.smallclassid.length = 0;

  var bigclassid=bigclassid;

  var i;

  document.myform.smallclassid.options[0] = new Option('请选择二级分类','');

  for (i=0;i < onecount; i++)

  {

  if (subcat[i][1] == bigclassid)

  {

  document.myform.smallclassid.options[document.myform.smallclassid.length] = new Option(subcat[i][0], subcat[i][2]);

  }

  }

  }

  </script>

  <?php

  mysql_select_db($database_lr, $lr);

  $sql2 = "select * from minclass order by sort";

  $result2 = mysql_query( $sql2 );

  $count2 = 0;

  ?>

  <script language = "JavaScript">

  //如果这个数组中含有双引号则不能使用。即二级和三级类不能含有双引号

  var onecount2;

  onecount2=0;

  subcat2 = new Array();

  <?php

  $count2 = 0;

  while($res2 = mysql_fetch_row($result2)){

  ?>

  subcat2[<?php echo $count2?>] = new Array("<?php echo $res2[1]?>","<?php echo $res2[3]?>","<?php echo $res2[0]?>");

  <?php

  $count2++;

  }

  ?>

  onecount2=<?php echo $count2?>;

  function changelocation2(smallclassid)

  {

  document.myform.minclassid.length = 0;

  var smallclassid=smallclassid;

  var j;

  document.myform.minclassid.options[0] = new Option('请选择三级分类','');

  for (j=0;j < onecount2; j++)

  {

  if (subcat2[j][1] == smallclassid)

  {

  document.myform.minclassid.options[document.myform.minclassid.length] = new Option(subcat2[j][0], subcat2[j][2]);

  }

  }

  }

  </script>

  <select name="bigclassid" onChange="changelocation(document.myform.bigclassid.options[document.myform.bigclassid.selectedIndex].value)" size="1">

  <option selected value="">请指定一级分类</option>

  <?

  $sql = "select * from bigclass order by sort";

  $result = mysql_query( $sql );

  while($res = mysql_fetch_row($result)){

  ?>

  <option value="<? echo $res[0]; ?>"><? echo $res[1]?></option>

  <? } ?>

  </select>

  <select name="smallclassid" onChange="changelocation2(document.myform.smallclassid.options[document.myform.smallclassid.selectedIndex].value)" size="1">

  <option selected value="">请指定二级分类</option>

  </select>

  <select name="minclassid" size="1">

  <option selected value="">==所有三级分类==</option>

  </select>