三个表联合操作
role module functionselect r.functionId, f.moduleId, f.name, m.name AS mname
from role as r
left join function as f on r.functionId=f.id
left join module as m on f.moduleId=m.id
where role.userId=3;
order by f.moduleId结果为根据moduleId排好序的记录,
$first = $db->fetchRow();
//记录当前操作的模块ID
$currentModule = $firist['moduleId'];
echo "<h4>".$first['mname']."</h4>";
echo "<ul>";
while($row = $db->fetchRow()){
   if($row['moduleId'] != $currentModule)
   {
      echo "</ul>";
      echo "<h4>".$row['mname']."</h4>";
      echo "<ul>";
      $currentModule = $row['moduleId'];
   }
   echo "<li>".$row['name']."</li>";}
echo "</ul>";

解决方案 »

  1.   

    用户表(user):
    innerid int(6)      自增id           
    username varchar(8) 用户名                
    name varchar(8)     姓名              
    bankid int(6)       单位id                  
    deptid int(6)       部门id                     
    mima                密码用户角色表(userrole):
    innerid int(6)    自增id             
    userid int(6)     用户id               
    roleid int(6)     角色id              
    beizhu            备注角色功能表(rolefunc):
    innerid int(6)   自增id             
    roleid int(6)    角色id                
    funcid int(6)    功能id                
    beizhu           备注功能表(function):
    innerId int(6)           自增id
    funcno int(4)            功能编号                 
    funcname varchar(40)     功能中文名                
    funcename varchar(40)    功能英文名               
    moduleid int(4)          模块id       
    url                      链接地址模块表(module):
    innerid int(4)          自增id
    moduleno int(4)         模块编号          
    modulename varchar(40)  模块中文名               
    moduleename varchar(40) 模块英文名涉及五个表,下面是我做的二级菜单:<? include("include/header.inc"); ?>
    <html>
    <head>
    <link href='include/menu.css' rel=stylesheet>
    <script language="javascript">
    function change_view(obj_name)
    {
    var aa=document.getElementById(obj_name);
    if(aa.style.display=="")
    {
    aa.style.display="none";
    }
    else
    {
    aa.style.display="";
    }
    }
    </script></head><body background="images/oa_bg.gif" scroll="no"><p> </p><table border="0" width="165" id="table1" cellpadding="2">
    <?php
    //$Con = mysql_connect("localhost","root","hcedagb");
    include("include/conn.inc");
    mysql_select_db("icbcoa");//提取一级菜单
    $sql = "select * from module order by moduleno";
    //mysql_query("SET NAMES 'GBK'");
    $result = mysql_query($sql,$connect);
    $numrows = mysql_num_rows($result);
    for($rows=0;$rows<$numrows;$rows++)
    {
    //将当前菜单项目的内容导入数组
    $menu = mysql_fetch_array($result);
    ?>
            <tr onClick="change_view(<? echo $menu[moduleno];?>)">
                    <td width="15">
                    <img border="0" src="file:///D:/icbcoa/images/folder.gif" width="16" height="16"></td>
                    <td width="135"><? echo $menu[modulename];?></td>
            </tr>
            <tr id="<? echo $menu[moduleno];?>" style="display:none">
             <td width="119" colspan="2">
    <?
      $sql = "select * from function where moduleid=$menu[innerid] order by funcno";
      //mysql_query("SET NAMES 'GBK'");
      $result_sub = mysql_query($sql,$connect);
      $numrows_sub = mysql_num_rows($result_sub);
    ?>
      <table border="0" id="table2" width="157">
    <?
      for($rows_sub=0;$rows_sub<$numrows_sub;$rows_sub++)
      {
      $menu_sub = mysql_fetch_array($result_sub);
      ?>
                    <tr>
                                    <td width="12"> </td>
                                    <td width="15">
                                    <img border="0" src="file:///D:/icbcoa/images/child.gif" width="15" height="15"></td>
                                    <td><a href="<? echo $menu_sub[url];?>" target="main"><? echo $menu_sub[funcname];?></a></td>
                    </tr>   <?}?>
       </table>
    <?}?>
      </td>
      </tr>
    </table></body></html> 我现在想根据用户角色,显示菜单,涉及5张表,想不明白了!
            
      

  2.   

    我的哥们啊,牵扯那么多HTML不用模版你就用定界符吧,
    看都看乱了!