Menu Dinamico (PHP + MySQL) - 5 niveis
Publicado por Rodrigo Rodrigues dos Santos 26/12/2003
[ Hits: 38.241 ]
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).
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> **
evePHP: Classe para desenvolvimento PHP
TxtXtrator: Classe para extração e conversão de dados de arquivos texto
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)