Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera tudo certo.. bem depois eu ter apanhando muito para achar essa logica peguntando em varios lugares e sem exito .. resolvi usar minha cuca para funcionar.. e tá ai o resultado...
Primeiro agradeço ao Jair Issa que me ajudo na 1° logica mais ainda estava havendo alguns erros ai resolvi mecher nela e melhorei o codigo.. ficando muito mais agil e funcional a ela mesmo ;)
Resultado
Pai |-- Filho1 |-- Filho1 |-- Filho1 |-- Filho1 |-- Filho2 Pai2 |-- Filho |-- Filho2 |-- Filho1
Bem é isso ai ele cria infinitos subMenus de Submenus.. ;)
<ul><?//require( "conecta.php" );$connect = mysql_connect("localhost","root","");mysql_select_db("dados",$connect);function getMenuOption($id=0,$conta=1,$pertence=0){ #:: SQL para selecionar os Ids $sql = mysql_query( "select * from link where pertence = '$id' order by posicao" ); $traco = str_repeat("--", 2); #:: ou coloca 1 para ficar somente com 1 vez a repetição;) $espaco = str_repeat(" ", $conta); #:: ou coloca um $conta no lugar do 2 para dar espaço while( $i = mysql_fetch_array( $sql ) ) { #:: criar um while de quantos foram encontrados dentro de cada 1 $id_busca = $i["id"]; #:: recupera a id if($i["pertence"] == $pertence){ #:: verifica se o pertence é o valor padrão do pai $options .= "<li>{$i["nome"]}</li>\r\n"; # contatena essa linha a mais para a variavel $options }elseif($id != $id_anterior){ #:: verifica se o $id é igual ao $id_anterior $conta++; #:: acrecenta mais 1 para a variavel $conta $id_anterior = $id; #:: define um valor para o id anterior $options .= "<li>{$espaco}| {$traco} {$i["nome"]}</li>\r\n"; # contatena essa linha a mais para a variavel $options }else{ $options .= "<li>{$espaco}| {$traco} {$i["nome"]}</li>\r\n"; # contatena essa linha a mais para a variavel $options } $options .= getMenuOption($id_busca,$conta); #:: chama novamente a função com o novo ID para recuperar as informações sobre seus filhos } return $options; #:: retorna o contéudo}echo getMenuOption();?></ul>
Bem ta ai ^^
Edit.
Banco de dados
CREATE TABLE link ( id int(11) NOT NULL auto_increment, nome varchar(60) default NULL, endereco varchar(10) default NULL, posicao int(11) NOT NULL, pertence int(11) default NULL, PRIMARY KEY (id)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=22;INSERT INTO link (id, nome, endereco, posicao, pertence) VALUES (1, 'LINK', '', 1, 0),(2, 'Sites de busca', '', 0, 1),(3, 'Google', '', 1, 2),(4, 'Yahoo', '', 0, 2),(19, 'Nivel 2 L4', NULL, 0, 18),(18, 'Nivel 1 L4', NULL, 0, 17),(17, 'LINK4', NULL, 0, 0),(10, 'Windows', '', 0, 5),(11, 'Windows 98', '', 1, 10),(12, 'Windows XP', '', 0, 10),(13, 'LINK2', 'http://', 2, 0),(14, 'Link do Segundo Nivel', NULL, 0, 13),(15, 'Link do Link do Segundo Nivel', NULL, 0, 14),(16, 'Link do Link do Link do Segundo Nivel', NULL, 0, 15),(20, 'Nivel 3 L4', NULL, 0, 19),(21, 'Nivel 4 L4', NULL, 0, 20);
Carregando comentários...