Menu Árvore 2
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.
Discussão (1)
Carregando comentários...