js+jsp+mysql二级联动菜单

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

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

字段如下

id      menu1      menu2

1       k1             hhh

2       k5            dddd

3       bc            dddl

4       k5            lldkd

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

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

下面是一级菜单

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

<%

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

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

while(rs.next()){
out.println("<option value='"+rs.getString("menu1")+"'>"+ rs.getString("menu1")+"</option>");
   }

%>

</select>
    <select name="menu2" id="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=connbean.executeQuery(str1);
while(rs1.next()){
   str1="select*from classify where menu1='"+rs1.getString("menu1")+"'";
   ResultSet rs2=connbean.executeQuery(str1);
   if(rs2.next()){
     rs2.last();
    int rowcount=rs2.getRow();
    String sz="type2s['"+rs1.getString("menu1")+"']=new Array(";
 for(int k=1;k<=rowcount;k++){
     rs2.absolute(k);
  if(k<rowcount){
  sz+="'"+rs2.getString("menu2")+"',";
  }else {
  sz+="'"+rs2.getString("menu2")+"');";
  }
   }
   out.println(sz);
 }
   }
%>
function choosetype2(type1,type2){
var t1,t2;
var i,ii;
t1=type1.value;
t2=type2.value;
type2.length=1;
if(t1=='0') return;
if(typeof(type2s[t1])=='undefined') return;
  for(i=0; i<type2s[t1].length; i++)
  {
     ii = i+1;
     type2.options[ii] = new Option();
     type2.options[ii].text = type2s[t1][i];
     type2.options[ii].value = type2s[t1][i];
  }

}
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值