数据库 'ABCDE' 
ID  NAME  BIG  SMALL 
1  a1    A    Aa 
2  a2    A    Ab 
3  a3    A    Ab 
4  a1    B    Ba 
5  b2    B    Ba 
6  b3    B    Bb 
7  c1    C    Ca 
8  c2    C    Ca 
9  c3    C    Cb 
10  c4    C    Cc 将其数据库生成一个带显示和隐藏的分类导航 显示效果 
    -[A] 
      {Aa} 
      {Ab} 
    -[B] 
      {Ba} 
      {Bb} 
    -[C] 
      {Ca} 
      {Cb} 
      {Cc} 隐藏效果 
    +[A] 
    +[B] 
    +[C] 
我做的代码逻辑顺序有问题,只能生成到 
    -[A] 
      {Aa} 
    -[B] 
      {Ba} 
    -[C] 
      {Ca} 
无法再将小类循环出来,请求帮助 

解决方案 »

  1.   

    结合ajax动态读出或者一次性读出交给javascript
    这个东东叫“树形菜单”,不叫“显隐”
      

  2.   

    //基本变量设置 
    $GLOBALS[ID] =1; //用来跟踪下拉菜单的ID号
    /*
    Global 变量:$GLOBALS
    由所有已定义全局变量组成的数组。变量名就是该数组的索引。 
    这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中您不需要使用 global $GLOBALS; 来访问它。
    *///$layer=1; //用来跟踪当前菜单的级数 //连接数据库 
    $Con=mysql_connect($db_host,$db_user,$db_password); 
    mysql_select_db($db_name); $sql_1=select * from tree2 where p_id2=0 and p_id3=0 and p_id4=0; //提取一级菜单 
    mysql_query(set names gbk);
    $result_1=mysql_query($sql_1,$Con);
    //假如一级菜单存在则开始菜单的显示 
    if(mysql_num_rows($result_1)0)
    {
      $numr_1=mysql_num_rows($result_1);
      echo table cellpadding='0' cellspacing='0' border='0';
      for($rows_1=0;$rows_1$numr_1;$rows_1  ) 
       {
      
      $menu_1=mysql_fetch_array($result_1); //将第一级菜单项目的内容导入数组
    $url_1=$menu_1['url'];
    $name_1=$menu_1['topic'];echo tr;//=======================
    $sql_2=SELECT * FROM tree2 WHEREp_id1 =$menu_1[p_id1] AND p_id3 = 0 AND p_id4 = 0 AND p_id2 != 0;   //提取菜单项目的第二层菜单记录集
    $result_sub_2=mysql_query($sql_2);//验证$SQL_1是否正确 
       //.............................................................
    //假如该菜单项目有子菜单,则添加JavaScript onClick语句 
    if(mysql_num_rows($result_sub_2)0) 
       { 
       echo td width='20' onClick='javascript:ShowMenu(Menu.$GLOBALS[ID].);'img src='../images/foldericon.png' border='0'/td; 
       echo td class='Menu' onClick='javascript:ShowMenu(Menu.$GLOBALS[ID].);'; 
      } //if(mysql_num_rows($result_sub_2)0) 
    else 
      { 
        echo td width='20'img src='../images/file.png' border='0'/td; 
        echo td class='Menu'; 
       } //if(mysql_num_rows($result_sub_2)0) else
    //.........................
    if($url_1!=) 
       {
      echo a href='$url_1?p_id1=.$menu_1['p_id1'].&p_id2=.$menu_1['p_id2'].&p_id3=.$menu_1['p_id3'].&topic=.$menu_1['topic'].&perform=0' target=mainFrame [-.$menu_1['p_id1'].-]$name_1/a; 
      }//if($url!=)
       else 
        {
    echo a[-.$menu_1['p_id1'].-]$name_1/a;
    }//if($url!=) else
    echo /td/tr ;//=======================
         if(mysql_num_rows($result_sub_2)0) 
         { 
          //指定该子菜单的ID和style,以便和onClick语句相对应 
          echo tr id=Menu.$GLOBALS[ID]  . style='display:none';
    // echo 'td height=0 background=../images/3.gif';
          echo td width='20' background='../images/3.gif' /td; 
          echo td; 
          //echo /td/tr; 
         }
    $numr_2=mysql_num_rows($result_sub_2);//获取$sql_1的记录笔数
       if($numr_20)
    {
       
      for($rows_2=0;$rows_2$numr_2;$rows_2  )
      {
      //echo table cellpadding='0' cellspacing='0' border='0';
      
       $menu_2=mysql_fetch_array($result_sub_2);//将第二级菜单目录导入数组
      $url_2=$menu_2['url'];
       $name_2=$menu_2['topic'];
      echo table cellpadding='0' cellspacing='0' border='0'; //==========第二级的表头代码
      echo tr; 
      //提取第三层子菜单记录集
      $sql_3=SELECT * FROM tree2 WHEREp_id1 =$menu_2[p_id1] AND p_id2 = $menu_2[p_id2] AND p_id4 = 0 AND p_id3 != 0;
    $result_sub_3=mysql_query($sql_3);     if(mysql_num_rows($result_sub_3)0) 
         { 
          echo td width='20' onClick='javascript:ShowMenu(Menu.$GLOBALS[ID].);'img src='../images/foldericon.png' border='0'/td; 
          echo td class='Menu' onClick='javascript:ShowMenu(Menu.$GLOBALS[ID].);'; 
         } //if(mysql_num_rows($result_sub_3)0) 
         else 
        { 
         echo td width='20'img src='../images/file.png' border='0'/td; 
         echo td class='Menu'; 
        } //if(mysql_num_rows($result_sub_3)0) else
       if($url_2!=) 
         {
        echo a href='$url_1?p_id1=.$menu_2['p_id1'].&p_id2=.$menu_2['p_id2'].&p_id3=.$menu_2['p_id3'].&topic=.$menu_2['topic'].&perform=0' target=mainFrame[-.$menu_2['p_id1'].-.$menu_2['p_id2'].-]$name_2 /a; 
        }//if($url!=)
         else 
         {
       echo a[-.$menu_2['p_id1'].-.$menu_2['p_id2'].-]$name_2/a;
      }//if($url!=) else
      echo /td/tr ;
         if(mysql_num_rows($result_sub_3)0) 
         { 
          //指定该子菜单的ID和style,以便和onClick语句相对应 
          echo tr id=Menu.$GLOBALS[ID]  . style='display:none'; 
          echo td width='20' background='../images/3.gif' /td; 
          echo td; 
          //echo /td/tr; 
         }
      $numr_3=mysql_num_rows($result_sub_3);
    if($numr_30)
        {
      echo table cellpadding='0' cellspacing='0' border='0'; //================第三级表头代码
       for($rows_3=0;$rows_3$numr_3;$rows_3  )
         {
          $menu_3=mysql_fetch_array($result_sub_3);//将第三级菜单目录导入数组
         $url_3=$menu_3['url'];
          $name_3=$menu_3['topic'];
       echo table cellpadding='0' cellspacing='0' border='0'; //===============第三级表头代码
       echo tr; 
       echo td width='20'img src='../images/foldericon.png' border='0'/td; 
             echo td class='Menu'; 
          if($url_3!=) 
            {
          echo a href='$url_1?p_id1=.$menu_3['p_id1'].&p_id2=.$menu_3['p_id2'].&p_id3=.$menu_3['p_id3'].&topic=.$menu_3['topic'].&perform=0' target=mainFrame[-.$menu_3['p_id1'].-.$menu_3['p_id2'].-.$menu_3['p_id3'].-]$name_3/a; 
           }//if($url!=)
            else 
             {
         echo a[-.$menu_3['p_id1'].-.$menu_3['p_id2'].-.$menu_3['p_id3'].-]$name_3/a;
       }//if($url!=) else
       echo /td/tr ;//=======================
            //echo tr id=Menu.$GLOBALS[ID]  . style='display:none'; 
            //echo td width='20' /td; 
            //echo td; 
       echo /table ;
      }//for($rows_3=0;$rows_3$numr_3;$rows_3  )
      }//if($numr_30)
      echo /table;//===================第二级的表尾代码
      }//for($rows_2=0;$rows_2$numr_1;$rows_2  )}//if($numr_10)
      
      }//for($rows=0;$rows$numrows;$rows  ) 
    echo /table ;//=======================第一级的表尾代码
    }//if(mysql_num_rows($result)0)