这个……复杂?不是吧?东西就不写了,而且,你要的应该是javascript的吧?这个不算的上是PHP写一个二维数组,第一维度要确定下来(这个很重要,因为你要的不是无限级联的代码),下拉列表以另外一个用favascript输出的。当下拉列表被变化了,那右面的内容就应该变化(使用的是change。当然调用的是函数参数就是这个链表的calue),通过调用的参数的不同,写出来不同的内容!OK?

解决方案 »

  1.   

    <html>
    <head>
    <title>下拉列表连动</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head>
    <body><!-- 二级联动 Start --><script language="JavaScript">
    <!--var subval = new Array();
    subval[0] = new Array('10','0','1-a')
    subval[1] = new Array('10','1','2-a')
    subval[2] = new Array('10','2','3-a')
    subval[3] = new Array('10','3','4-a')
    subval[4] = new Array('10','4','5-a')
    subval[5] = new Array('10','5','6-a')
    subval[6] = new Array('10','6','7-a')
    subval[7] = new Array('10','7','8-a')
    subval[8] = new Array('10','8','9-a')
    subval[9] = new Array('10','9','10-a')
    subval[10] = new Array('20','10','11-a')
    subval[11] = new Array('20','11','12-a')
    subval[12] = new Array('20','12','13-a')
    subval[13] = new Array('20','13','14-a')
    subval[14] = new Array('20','14','15-a')
    subval[15] = new Array('20','15','16-a')
    subval[16] = new Array('20','16','17-a')
    subval[17] = new Array('20','17','18-a')
    subval[18] = new Array('20','18','19-a')
    subval[19] = new Array('20','19','20-a')function changeselect1(locationid)
    {
        document.form1.s2.length = 0;
        document.form1.s2.options[0] = new Option('==请选择2==','');
        
        for (i=0; i<subval.length; i++)
        {
            if (subval[i][0] == locationid)
            {document.form1.s2.options[document.form1.s2.length] = new Option(subval[i][2],subval[i][1]);}
        }
    }//-->
    </script><form name="form1">
    <select name="s1" onChange="changeselect1(this.value)">
    <option>==请选择1==</option>
    <option value="10">1-10</option>
    <option value="20">11-20</option>
    </select><select name="s2"  onChange="changeselect2(this.value)"> 
    <option>==请选择2==</option>
    </select>
    </form><!-- /二级联动 Over --></body>
    </html>
      

  2.   

    谢谢2位的热情回复,我的情况也点特殊我的二级菜单是提库里面的值,也就是说在一级里面对象如果是a,b,c,d,e,f,g
    那选择a的时候就要把包含a内容的表单对应数据库里的a' 字段提到二级菜单里面。
      

  3.   

    3楼给的挺好啊,这是客户端的功能,都是用js做的,不过你要用php组织一些数据而已
      

  4.   

    wwx840723(你娃儿不给老子好好读书,老子把你送到国家队切,丢尽) ( ) 信誉:100    Blog   加为好友 
    你好,我公司不让上QQ,不好意思
    你有MSN吗
      

  5.   

    晕了……你不能用php把javascript脚本数出来了么??只要数出来,就可以了啊!
      

  6.   

    这个与你写的数据有关了,要是里面的数据没有关联的话是做不到的
    实现原理:第一级用一个选择框,值发生变化时提交
    提交后获取这个值,去数据库里查找与之相对应的二级值,并加载,就OK了
    ,具体代码也不好写
    js的代码前面已经有了,PHP的还是自己写吧,多写写不会错的
      

  7.   

    <script>
    var subArr = new Array();
    subArr[0] = new Array('1','a_1');
    subArr[1] = new Array('1','5','b_5');
    subArr[2] = new Array('1','5','7','c_7');
    subArr[3] = new Array('1','5','7','8','d_8');
    subArr[4] = new Array('1','6','b_6');
    subArr[5] = new Array('1','6','9','c_9');
    subArr[6] = new Array('1','6','9','10','d_10');subArr[7] = new Array('2','a_2');
    subArr[8] = new Array('2','11','b_11');
    subArr[9] = new Array('2','11','12','c_12');
    subArr[10] = new Array('2','11','12','13','d_13');
    subArr[11] = new Array('2','14','b_14');
    subArr[12] = new Array('2','14','15','c_15');
    subArr[13] = new Array('2','14','15','16','d_16');subArr[14] = new Array('3','a_3');
    subArr[15] = new Array('3','17','b_17');
    subArr[16] = new Array('3','17','18','c_18');
    subArr[17] = new Array('3','17','18','19','d_19');
    subArr[18] = new Array('3','20','b_6');
    subArr[19] = new Array('3','20','21','c_21');
    subArr[20] = new Array('3','20','21','22','d_22');subArr[21] = new Array('4','a_4');
    subArr[22] = new Array('4','23','b_23');
    subArr[23] = new Array('4','23','24','c_24');
    subArr[24] = new Array('4','23','24','25','d_25');
    subArr[25] = new Array('4','26','b_26');
    subArr[26] = new Array('4','26','27','c_27');
    subArr[27] = new Array('4','26','27','28','d_28');
    subArrLen = subArr.length;
    var divNum = 3;function sele(ch , n , divName){
    var name = ch.name;
    var value = ch.value;
    var num = n + 1;
    var newDivName = divName + num;
    var level = n - 1;
    var levelNextLen = n + 2;
    var nextID = n;
    var nextValue = n + 1;
    for(i=n+1;i<=divNum;i++){
    var oldDivName = divName + i;
    document.getElementById(oldDivName).innerHTML = '';
    }
    var htmlStr = '';
    var htmlStr = "<select name='" + name + "' onchange='sele(this , " + num + " , \"" + divName + "\")'>\n";
    for(i=0;i<subArrLen;i++){
    var sArr = subArr[i];
    if(sArr.length == levelNextLen && sArr[level] == value){
    htmlStr = htmlStr + "<option value='" + sArr[nextID] + "'>" + sArr[nextValue] + "</option>\n";
    }
    }
    htmlStr = htmlStr + "</select>\n";
    document.getElementById(newDivName).innerHTML = htmlStr;
    }</script><form>
    <select name="a[]" onchange="sele(this , 1 , 'make')">
    <option value="1">a_1</option>
    <option value="2">a_2</option>
    <option value="3">a_3</option>
    <option value="4">a_4</option>
    </select>
    <div id="make2"></div>
    <div id="make3"></div>
    <div id="make4"></div>
    <div id="make5"></div>
    <div id="make6"></div>
    </form>
    新写的,可无限分类