js+jsp+mysql二级联动菜单

时间:2025-02-13 15:11:43

 这两天接到一个项目,要求是这样的;

菜单只有二级,但是菜单的内容全部是放在mysql数据库的一个菜单中,

字段如下

id      menu1      menu2

1       k1             hhh

2       k5            dddd

3       bc            dddl

4       k5            lldkd

那么我们首先要取的是一级菜单,k1,k5,bc 有重复的就必须得去掉,

如果采用普通的校验方法,机器肯定要搞死

下面是一级菜单

<select name="menu1" οnchange="choosemenu2(this, (menu2))">
      <option value="n">请选择</option>
  

<%

 String str="select *,count(distinct menu1) from menu1 group by menu1";

ResultSet rs=(str);//connbean是一个javabean,如果不会请不要问我,请去看看书。

while(()){
("<option value='"+("menu1")+"'>"+ ("menu1")+"</option>");
   }

%>

</select>
    <select name="menu2" >
      <option value="n">请选择</option>
    </select>

//OK 一级菜单出来了

再看看二级菜单怎么做;大家都知道js是在客户端上运行的,而jsp是在服务器上运行的,如果要将js的参数传递到jsp页面上运行,一般采用浏览器传递,一个菜单是通过浏览器来传递,那么就不友好了。

现在我们再说说怎么调用二级菜单。

<script language = "JavaScript">
type2s=new Object();
<%
String str1="select *,count(distinct menu1) from classify group by menu1";
ResultSet rs1=(str1);
while(()){
   str1="select*from classify where menu1='"+("menu1")+"'";
   ResultSet rs2=(str1);
   if(()){
     ();
    int rowcount=();
    String sz="type2s['"+("menu1")+"']=new Array(";
 for(int k=1;k<=rowcount;k++){
     (k);
  if(k<rowcount){
  sz+="'"+("menu2")+"',";
  }else {
  sz+="'"+("menu2")+"');";
  }
   }
   (sz);
 }
   }
%>
function choosetype2(type1,type2){
var t1,t2;
var i,ii;
t1=;
t2=;
=1;
if(t1=='0') return;
if(typeof(type2s[t1])=='undefined') return;
  for(i=0; i<type2s[t1].length; i++)
  {
     ii = i+1;
     [ii] = new Option();
     [ii].text = type2s[t1][i];
     [ii].value = type2s[t1][i];
  }

}
</script>