Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Perfect Lion

Menu Árvore 2

Recommended Posts

Fala galera.. eu estou criando um framework para mim e como eu só estou trabalhando com classe para mim facilita muito criar alguns componentes como por exemplo a criação de menus dinamicamentos a montagem deles.

 

Como eu sempre usso XHTML então o padrão de criação html de menus meu é

[*] então para num ter que ficar sempre criando na mão eu cadastro os menus no banco e depois disso eu crio um codigo para gera esses menus...

 

Bem num vou colocar como eu fiz com classes pois é algo que vcs tem que aprender.. eu vou colocar aqui no modo simples procedural mesmo.. para vocês verem como funfa o negocio...

 

Vamos lá.

 

SQL

CREATE TABLE tb_menu (	  cod_menu INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,	  str_menu VARCHAR(50) NULL,	  fk_relacao INTEGER UNSIGNED NULL DEFAULT 0,	  enum_ativo ENUM('S','N') NULL DEFAULT 'S',	  dt_alteracao DATETIME NULL DEFAULT 0000-00-00 00:00:00,	  PRIMARY KEY(cod_menu)	)TYPE=InnoDB;		INSERT INTO tb_menu SET str_menu = 'menuHome';	INSERT INTO tb_menu SET str_menu = 'menuAjuda';	INSERT INTO tb_menu SET str_menu = 'menuHomeInicio', fk_relacao = 1;	INSERT INTO tb_menu SET str_menu = 'menuHomeComeço', fk_relacao = 1;	INSERT INTO tb_menu SET str_menu = 'menuAjudaOque', fk_relacao = 2;

Agora para o codigo PHP eu comencei espero que consigam entender o que ele está fazendo só por esses simples comentarios..

 

funcoes.php

function getMenu($intIdMenu=0,$intConta=0){		$objQuery = mysql_query("SELECT * FROM tb_menu WHERE fk_relacao = {$intIdMenu} and enum_ativo = 'S' ") or die("SQL - " . mysql_error()); # sql responsavel pela consulta no banco de dados		if(mysql_num_rows($objQuery)){ # verifica se encontro alguma linha			$i=1; # atribue o valor de i para 1			$tabs = str_repeat("\t",$conta); # atribur tabs 			$html = "\r\n{$tabs}<ul>"; # gera HTML			while($arrRows = mysql_fetch_array($objQuery)){ # cria um loop sobre a consulta no sql				$html .= "\r\n{$tabs}\t<li>{$i} - " . $arrRows["str_nome"]; # concatena o valor retornado do banco				$i++; $conta++; # atribuições				getMenu($arrRows["cod_menu"],$conta); # chama novamente o metodo informando o cod do menu atual para verificar se há filhos				$html .= "{$tabs}\t</li>"; # concatena html				$conta = 0; # atribui o valor do contar para 0			}			$html .= "\r\n{$tabs}</ul>\r\n"; # concatena html depois que termina o loop			return $html;		}else{ # caso não encontre nenhum resultado			return false; # retorna falso		}	}
Pronto só rodar

 

echo getMenu();

Bem para quem viu meu ultimo topico sobre Esse estilo de menú vai ver que o codigo fico mais limpo e robusto e mais enchuto =D

 

Bem é isso ae.. espero que gostem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.