应该是可以的.
就是说第二级菜单onchange的时候要获取第四级菜单的选中的值,将其做为一个查询条件.第四个菜单onchange的时候,同时也要取一级和二级菜单的值,将其做为查询条件.也就是说,第三级菜单是根据 1,2,4三个条件来生成的.

解决方案 »

  1.   


    <script language="javascript">
    <?
    require ('connectdb.php');
    $provno=0;
    $cityno=0;
    $countyno=0;
    $sql = "select * from cityinfo";//第1个下拉菜单查询
    $sqlcon = mssql_query ( $sql, $conn );
    $count = mssql_num_rows ( $sqlcon );
    for($i = 0; $i < $count; $i ++) {
    $m=0;
    $a = mssql_fetch_row ($sqlcon);
    for($ii=0;$ii<$provno;$ii++)
    {
    if($prov[$ii]==$a[4])
    $m=1;
    }
    if($m==0)
    {$prov[$provno]=$a[4];
    $provvalue[$provno]=$a[3];
    $provno++;}
    }
    //获取city的数量=$provno-1;
    for($j=0;$j<$provno;$j++)
    {
    $cityno=0;
    $citycontry[$j]=0;
    $sql = "select * from cityinfo where cityname='$prov[$j]'";//第2个下拉菜单查询
    $sqlcon = mssql_query ( $sql, $conn );
    $count = mssql_num_rows ( $sqlcon );
    for($i = 0; $i < $count; $i ++) 
    {
    $m=0;
    $a = mssql_fetch_row ($sqlcon);
    for($ii=0;$ii<$cityno;$ii++)
    {
    if($city[$j][$ii]==$a[6])
    $m=1;
    }
    if($m==0)
    {$city[$j][$cityno]=$a[6];
    $cityvalue[$j][$cityno]=$a[5];
    $citycontry[$j]++;$cityno++;}
    }
    }
    //获取city的数量=$citycontry-1;
    $leixing=$_POST['buildtype'];for($j=0;$j<$provno;$j++)
    {
    for($jj=0;$jj<$citycontry[$j];$jj++)
    {
    $countyno=0;
    $sql1="select name from stationinfo  where provno='01' and cityno='$provvalue[$j]' and countyno='".$cityvalue[$j][$jj]."'";
    //第3个下拉菜单查询
    $sqlcon1 = mssql_query ( $sql1, $conn );
    $count1 = mssql_num_rows ( $sqlcon1 );
    for($i = 0; $i < $count1; $i ++) 
    {
    $m=0;
    $a = mssql_fetch_row ($sqlcon1);
    for($ii=0;$ii<$countyno;$ii++)
    {
    if($county[$j][$jj][$ii]==$a[0])
    $m=1;
    }
    if($m==0)
    {$county[$j][$jj][$countyno]=$a[0];
    $countyvalue[$j][$jj][$countyno]=$a[0];
    $countyno++;}
    }}
    }
    ?>
    </script><!-- 下拉框1 -->
    <select name="prov2" id="prov2" onChange="redirec(document.form1.prov2.options.selectedIndex);redirec2(document.form1.prov2.options.selectedIndex,document.form1.city2.options.selectedIndex)" >
    <option value="0">市</option>
    <?for ($i=0;$i<count($prov);$i++){  ?>
        <option value="<?echo $provvalue[$i]?>"><?echo $prov[$i]?></option>
        <?
    }
    ?>
    </select>&nbsp;&nbsp;
        
        
        <!-- 下拉框2 -->
    <select name="city2" id="city2" onChange="redirec2(document.form1.prov2.options.selectedIndex,document.form1.city2.options.selectedIndex);build(document.form1.buildtype.options.selectedIndex)">
    <option value="请选择">区</option></select>
    <script language="javascript">
    var countt=document.form1.prov2.options.length;
    var sel2 = new Array(countt);
    sel2[0]=new Array();
    <?
    for($j=0;$j<$provno;$j++)
    {
    ?>
    sel2[<?echo $j+1?>]=new Array();
    <?
    for($jj=0;$jj<$citycontry[$j];$jj++)
    {
    ?>
    sel2[<?echo $j+1?>][<?echo $jj?>]=new Option("<?echo $cityvalue[$j][$jj];?>", "<?echo $city[$j][$jj];?>");
    <?
    }
    }
    ?>
    sel2[0][0]=new Option("请选择","请选择");
    function redirec(x)
    {
    document.form1.city2.length=1;
    var two=document.form1.city2;
    for (i=0;i<sel2[x].length;i++)
    {
      two.options[i]=new Option(sel2[x][i].value,sel2[x][i].text); //显示city的内容
    }
    if(sel2[x].length==0)
    two.options[0]=new Option("无选项","无选项"); //如果一级菜单为的子菜单项为空的时候,选择此一级菜单的时候,二级显示为空
    }
    </script> 
        
        
        <!-- 下拉框3 -->
    <select name="county2" id="county2"><option value="请选择">选择</option></select>
    <script language="javascript">
    var countt=document.form1.prov2.options.length;
    var sel3 = new Array(countt);
    sel3[0]=new Array();
    sel3[0][0]=new Array();
    <?
    for($j=0;$j<$provno;$j++)
    {
    ?>
    sel3[<?echo $j+1?>]=new Array();
    <?
    for($jj=0;$jj<$citycontry[$j];$jj++)
    {
    ?>
    sel3[<?echo $j+1?>][<?echo $jj?>]=new Array();
    <?
    for($jjj=0;$jjj<count($county[$j][$jj]);$jjj++)
    {
    ?>
    sel3[<?echo $j+1?>][<?echo $jj?>][<?echo $jjj;?>]=new Option("<?echo $countyvalue[$j][$jj][$jjj];?>", "<?echo $county[$j][$jj][$jjj];?>");
    <?
    }
    }
    }
    ?>
    sel3[0][0][0]=new Option("请选择","请选择");
    function redirec2(x,y)
    {
    document.form1.county2.length=1;
    var three=document.form1.county2;
    for (i=0;i<sel3[x][y].length;i++)
    {
     three.options[i]=new Option(sel3[x][y][i].value,sel3[x][y][i].text); //显示county的内容
    }
    if(sel3[x][y].length==0)
    three.options[0]=new Option("无选项","无选项"); //如果一级菜单为的子菜单项为空的时候,选择此一级菜单的时候,二级显示为空
    }
    </script> 
    现在是要根据另外一个下拉框
    <select name="buildtype" id="buildtype">
    <option value="01" selected="selected">01</option>
    <option value="02">02</option>
    <option value="03">03</option>
    来判断第3个下拉框要查询的数据库表名