Menu Dinamico (PHP + MySQL) - 5 niveis

Publicado por Rodrigo Rodrigues dos Santos 26/12/2003

[ Hits: 38.059 ]

Download menu_dinamico_5niveis.zip




Esse script é um menu dinâmico hierarquico de 5 níveis.

A url dos links carrega no iframe q se encontra do lado direito.

Arquivos Principais:
classe_main.php - Classe principal
index.php - Visualização do Menu
index_manager.php - Gerenciamento do Menu
sql_db_menu_dinamico.sql - Front-End

Esse menu funciona no I.E. 6.0 e Opera 7.11

Qualquer sugestão ou dúvida entre em contato comigo(rsantos@gelre.com.br).

  



Esconder código-fonte

File - classe_main.php
**
<?php
/*
Autor: Rodrigo Rodrigues dos Santos
Email: rsantos@gelre.com.br
Data: 26/12/2003
Descrição: Menu dinâmico - 5 Níveis
*/

class ClasseMain {
   function ClasseMain() {
      $this->usuario = "root";
      $this->senha = "xxxx";
      $this->local = "localhost";
   }

   function doConexaoMysql() {
      $this->con = @mysql_pconnect($this->local,$this->usuario,$this->senha) or die("Erro de Conexão: ".mysql_error());
      if($this->con)
         $this->dataBase = @mysql_select_db("framework",$this->con) or die("Não achou a DataBase: ".mysql_error());
   }

   function doMontaMenu() {
      $sql = "SELECT id_link_modulo, id_link_pai, nome, path_url FROM tb_link_modulo WHERE ativo = 't' AND id_link_pai = 0 ORDER BY nome";
      $sqlQuery = @mysql_query($sql,$this->con) or die("Error Sql Select Menu: ".mysql_error());
      return $sqlQuery;
   }

   function doMontaSubMenu($idLinkPai) {
      $sql = "SELECT id_link_modulo, id_link_pai, nome, path_url FROM tb_link_modulo WHERE ativo = 't' AND id_link_pai = $idLinkPai ORDER BY nome";
      $sqlQuery = @mysql_query($sql,$this->con) or die("Error Sql Select SubMenu: ".mysql_error());
      return $sqlQuery;
   }

   function doMontaMenuManager() {
      $sql = "SELECT id_link_modulo, id_link_pai, nome, path_url, ativo FROM tb_link_modulo WHERE id_link_pai = 0 ORDER BY nome";
      $sqlQuery = @mysql_query($sql,$this->con) or die("Error Sql Select Menu Manager: ".mysql_error());
      return $sqlQuery;
   }

   function doMontaSubMenuManager($idLinkPai) {
      $sql = "SELECT id_link_modulo, id_link_pai, nome, path_url, ativo FROM tb_link_modulo WHERE id_link_pai = $idLinkPai ORDER BY nome";
      $sqlQuery = @mysql_query($sql,$this->con) or die("Error Sql Select SubMenu Manager: ".mysql_error());
      return $sqlQuery;
   }

   function doUpdateMenuManager($idModuloAtivo,$idModuloInativo) {
      if(!empty($idModuloAtivo)){
         $idModuloAtivo = explode(";",$idModuloAtivo);
         for($i = 0; $i < count($idModuloAtivo); $i++){
            if($idModuloAtivo[$i] != "")
               $updateModulo = @mysql_query("UPDATE tb_link_modulo SET ativo = 't' WHERE id_link_modulo = ".$idModuloAtivo[$i],$this->con) or die("Error Sql Update Menu True: ".mysql_error());
         }
      }

      if(!empty($idModuloInativo)){
         $idModuloInativo = explode(";",$idModuloInativo);
         for($i = 0; $i < count($idModuloInativo); $i++){
            if($idModuloInativo[$i] != "")
               $updateModulo = @mysql_query("UPDATE tb_link_modulo SET ativo = 'f' WHERE id_link_modulo = ".$idModuloInativo[$i],$this->con) or die("Error Sql Update Menu False: ".mysql_error());
         }
      }

      if($updateModulo)
         echo "<script>window.location = '$_SERVER[PHP_SELF]';</script>";
   }

   function doLimiterString($string,$lengthNumber) {
      $lengthNumber = (int)($lengthNumber);
      if(strlen($string) >= $numeroLimite){
         $newString = "";
         for($i = 0; $i < $lengthNumber; $i++)
            $newString .= $string[$i];
         return $newString;
      } else
           return $string;
   }
}

$classeMain = new ClasseMain();
$classeMain->doConexaoMysql();
?>
**

File - index_manager.php
**
<?php
/*
Autor: Rodrigo Rodrigues dos Santos
Email: rsantos@gelre.com.br
Data: 26/12/2003
Descrição: Menu dinâmico - 5 Níveis
*/

include_once("classe_main.php");

if($_POST['acao'])
   $classeMain->doUpdateMenuManager($_POST['idLinkModuloAtivo'],$_POST['idLinkModuloInativo']);
?>
<html>
<head>
<title>Home</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
function doMenuCheckbox() {
   if(confirm("Deseja alterar os links?")){
      var checkBoxPai = document.form1.checkbox;
      var idLinkModuloAtivo = "";
      var idLinkModuloInativo = "";
      for(i = 0; i < checkBoxPai.length; i++){
         if(checkBoxPai[i].checked){
            idLinkModuloAtivo += checkBoxPai[i].value + ";";
         } else {
              idLinkModuloInativo += checkBoxPai[i].value + ";";
           }
      }
      document.form1.idLinkModuloAtivo.value = idLinkModuloAtivo;
      document.form1.idLinkModuloInativo.value = idLinkModuloInativo;
      document.form1.submit();
   }
}
</script>
<link href="dynmenu.css" rel="stylesheet" type="text/css">
</head>

<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginheight="0" marginwidth="0">
<form name="form1" action="<?=$_SERVER['PHP_SELF']?>" method="post">
<input type="hidden" name="acao" value="true">
<input type="hidden" name="idLinkModuloAtivo">
<input type="hidden" name="idLinkModuloInativo">
  <table border="0" width="203" cellspacing="0" cellpadding="0">
    <tr height="30" valign="middle">
      <td width="203" height="22" align="center" class="titleMenu">Links Ativos</td>
</tr>
  </table>
  <br>
  <table width="185" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td><div id="Layer1" style="position:relative; left:0; top:0; width:580px; height:280px; z-index:1; overflow: auto;">
          <table width="564" border="0" cellpadding="0" cellspacing="0" class="clsPopup_Itens">
            <?php
   $contController = 0;
   $sqlQuery = $classeMain->doMontaMenuManager();
   while($lineMenu = @mysql_fetch_array($sqlQuery)){
?>
            <tr>
              <td align="right" width="22"> <input type="checkbox" class="cls_INPUT_CHECK_BOX" name="checkbox" value="<?=$lineMenu['id_link_modulo']?>" <?=($lineMenu['ativo'] == "t" ? "checked" : "")?>>
              </td>
              <td colspan="5" class="titleModulo" width="542">
                <?=$lineMenu['nome']?>
              </td>
            </tr>
            <?php
      $subLink = $classeMain->doMontaSubMenuManager($lineMenu['id_link_modulo']);
      if($subLink){
         $contController++;
         while($lineSubLink = @mysql_fetch_array($subLink)){
?>
            <tr height="20">
              <td width="22"> </td>
              <td width="22" align="center"> <input type="checkbox" class="cls_INPUT_CHECK_BOX" name="checkbox" value="<?=$lineSubLink['id_link_modulo']?>" <?=($lineSubLink['ativo'] == "t" ? "checked" : "")?>>
              </td>
              <td colspan="4" class="titleMenu" width="520">
                <?=$lineSubLink['nome']?>
              </td>
            </tr>
            <?php
            $subSubLink = $classeMain->doMontaSubMenuManager($lineSubLink['id_link_modulo']);
            if($subSubLink){
               $contController++;
               while($lineSubSubLink = @mysql_fetch_array($subSubLink)){
?>
            <tr height="20">
              <td width="22"> </td>
              <td width="22"> </td>
              <td width="22" align="center"> <input type="checkbox" class="cls_INPUT_CHECK_BOX" name="checkbox" value="<?=$lineSubSubLink['id_link_modulo']?>" <?=($lineSubSubLink['ativo'] == "t" ? "checked" : "")?>>
              </td>
              <td colspan="3" valign="middle" class="titleMenu" width="498">
                <?=$lineSubSubLink['nome']?>
              </td>
            </tr>
            <?php
                  $subSubSubLink = $classeMain->doMontaSubMenuManager($lineSubSubLink['id_link_modulo']);
                  if($subSubSubLink){
                     while($lineSubSubSubLink = @mysql_fetch_array($subSubSubLink)){
?>
            <tr height="20">
              <td width="22"> </td>
              <td width="22"> </td>
              <td width="22"> </td>
              <td width="22" align="center"> <input type="checkbox" class="cls_INPUT_CHECK_BOX" name="checkbox" value="<?=$lineSubSubSubLink['id_link_modulo']?>" <?=($lineSubSubSubLink['ativo'] == "t" ? "checked" : "")?>>
              </td>
              <td valign="middle" colspan="2" class="titleMenu" width="476">
                <?=$lineSubSubSubLink['nome']?>
              </td>
            </tr>
            <?php
                        $subSubSubSubLink = $classeMain->doMontaSubMenuManager($lineSubSubSubLink['id_link_modulo']);
                        if($subSubSubSubLink){
                           while($lineSubSubSubSubLink = @mysql_fetch_array($subSubSubSubLink)){
?>
            <tr height="20">
              <td width="22"> </td>
              <td width="22"> </td>
              <td width="22"> </td>
              <td width="22"> </td>
              <td width="22" align="center"> <input type="checkbox" class="cls_INPUT_CHECK_BOX" name="checkbox" value="<?=$lineSubSubSubSubLink['id_link_modulo']?>" <?=($lineSubSubSubSubLink['ativo'] == "t" ? "checked" : "")?>>
              </td>
              <td valign="middle" class="titleMenu" width="454">
                <?=$lineSubSubSubSubLink['nome']?>
              </td>
            </tr>
            <?php
                           }
                        }
                     }
                  }
               }
            }
         }
      }
   $contController++;
   }
?>
          </table>
        </div></td>
    </tr>
    <tr>
      <td align="center"><input name="button" type="button" onClick="doMenuCheckbox();" value="Alterar"></td>
    </tr>
  </table>
</form>
</body>
</html>
**

File - index.php
**
<?php
/*
Autor: Rodrigo Rodrigues dos Santos
Email: rsantos@gelre.com.br
Data: 26/12/2003
Descrição: Menu dinâmico - 5 Níveis
*/

include_once("classe_main.php");
?>
<html>
<head>
<title>Home</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="dynmenu.css" rel="stylesheet" type="text/css">
<script src="dynmenu.js"></script>
<script>
   menu_path="imagens/menu"

   m=new dynmenu()
   m.width=176

   m.pipe="<img src=\""+menu_path+"/pipe.gif\" class=pipe>"

<?php
   $sqlQuery = $classeMain->doMontaMenu();
   while($lineMenu = @mysql_fetch_array($sqlQuery)){
?>
   menu_add("<?=(strlen($lineMenu['nome']) >= 20 ? $classeMain->doLimiterString($lineMenu['nome'],20)."..." : $lineMenu['nome'])?>|carregarPagina('<?=$lineMenu['path_url']?>')")
<?php
      $subLink = $classeMain->doMontaSubMenu($lineMenu['id_link_modulo']);
      if($subLink){
         while($lineSubLink = @mysql_fetch_array($subLink)){
?>
   menu_add("   \\<?=$lineSubLink['nome']?>|carregarPagina('<?=$lineSubLink['path_url']?>','')")
<?php
            $subSubLink = $classeMain->doMontaSubMenu($lineSubLink['id_link_modulo']);
            if($subSubLink){
               while($lineSubSubLink = @mysql_fetch_array($subSubLink)){
?>
   menu_add("   \\   \\<?=$lineSubSubLink['nome']?>|carregarPagina('<?=$lineSubSubLink['path_url']?>','')")
<?php
                  $subSubSubLink = $classeMain->doMontaSubMenu($lineSubSubLink['id_link_modulo']);
                  if($subSubSubLink){
                     while($lineSubSubSubLink = @mysql_fetch_array($subSubSubLink)){
?>
   menu_add("   \\   \\   \\<?=$lineSubSubSubLink['nome']?>|carregarPagina('<?=$lineSubSubSubLink['path_url']?>','')")
<?php
                        $subSubSubSubLink = $classeMain->doMontaSubMenu($lineSubSubSubLink['id_link_modulo']);
                        if($subSubSubSubLink){
                           while($lineSubSubSubSubLink = @mysql_fetch_array($subSubSubSubLink)){
?>
   menu_add("   \\   \\   \\   \\<?=$lineSubSubSubSubLink['nome']?>|carregarPagina('<?=$lineSubSubSubSubLink['path_url']?>','')")
<?php
                           }
                        }
                     }
                  }
               }
            }
         }
      }
   }
?>
</script>
</head>

<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginheight="0" marginwidth="0">
<br>
<table width="750" border="0" cellspacing="0" cellpadding="0">
<tr>
    <td width="259">
<div id="MyDiv" style="position:absolute; width:194px; height:70%; z-index:1; left: 20px; top: 60px; overflow:auto;">
        <script language="javascript">
    document.write(m.geraHTML())
  </script>
        <script language="javascript">

function carregarPagina (pagina, titulo) {
   if(typeof(titulo)!="string")
      titulo=""
   top.mainFrame.location=pagina
}
</script>
      </div></td>
    <td width="491"><iframe src="#" name="mainFrame" width="500" marginwidth="0" height="420" marginheight="0" scrolling="auto" frameborder="0"></iframe></td>
  </tr>
</table>
</body>
</html>
**

Scripts recomendados

Classe para conversões de data/hora em diversos formatos

Contador de Acessos

Tempo de Geracao da Pagina

FormConstructor: Formulário Construído por Variável

Consulta Yahoo! Buscas na Web


  

Comentários
[1] Comentário enviado por rsantos em 26/12/2003 - 17:30h

Olá amigos desenvolvedores.

Eu sou novo por aqui e espero compartilhar conhecimentos com todos vocês.

Sem mais, Rodrigo Rodrigues.
(rsantos@gelre.com.br)

[2] Comentário enviado por removido em 05/01/2004 - 08:35h

Firmeza.. rodrigão mandou bem no script!, pena que fica devendo no Netscape :(

fui...

[3] Comentário enviado por removido em 22/10/2008 - 20:53h

bom!

flw

[4] Comentário enviado por tigo17 em 04/08/2009 - 23:14h

Desculpa, sou novo, já tenho alguma experiência, muito pouca, eu criei o banco no Php My Admin com o mesmo nome do arquivo .sql instalei no meu WinXP o Wamp com PHP 5.3 Apache 2.2.11 MySql 5.1.36 configurei o nome do banco local senha e usuário, mas aparece uma página em branco, o que eu tenho que fazer mais?

Obrigado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts