Vejam como foi criado a lógica.
Criando a tabela.
CREATE TABLE IF NOT EXISTS `menu` ( `caminho` varchar(250) DEFAULT NULL, `descricao` varchar(250) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;....inclusão dos dados na tabela
INSERT INTO `base_de_conhecimentos` (`caminho`, `descricao`, `solucao`) VALUES
('1', 'Item 1', NULL),
('2', 'Item 2', NULL),
('3', 'Item 3', NULL),
('1/1', 'Item 1/1', NULL),
('1/2', 'Item 1/2', NULL),
('2/1', 'Item 2/1', NULL),
('3/1', 'Item 3/1', NULL),
('3/2', 'Item 3/2', NULL),
('3/3', 'Item 3/3', NULL),
('3/3/1', 'Item 3/3/1', NULL),
('3/3/2', 'Item 3/3/2', NULL),
('3/3/3', 'Item 3/3/3', NULL),
('3/3/3/1', 'Item 3/3/3/1', NULL);
código php
<?
//conexao
mysql_connect("127.0.0.1","root","****");
//seleciona o banco
mysql_select_db("banco");
//consulta
$consulta = mysql_query("Select caminho, descricao From menu Order by caminho")or die(mysql_error());
$maior_nivel = 0;
//REALIZA A PESQUISA NO BANCO DE DADOS E ARMAZENA O RESULTADO EM VETORES
while($aux_consulta = mysql_fetch_assoc($consulta)){
$root = substr($aux_consulta['caminho'],0,(strlen($aux_consulta['caminho'])-1));
$root_vetor = explode("/",$root);
$count_vetor= count($root_vetor)-1;
if ( !empty($root) ) {
$li[ $root ][] = $aux_consulta['caminho'];
} else {
$li_root[] = $aux_consulta['caminho'];
}
$descricao[ $aux_consulta['caminho'] ] = $aux_consulta['descricao'];
if ($maior_nivel < $count_vetor )
$maior_nivel = $count_vetor;
}
//FUNCAO PARA REPETIÇÃO DOS <UL> E <LI>
function vetor_li($lis,$li,$descricao){
echo '<ul>';
foreach($li[ $lis ] as $key2 => $lis2 ){
$lis3 = $lis2.'/';
if ( isset($li[ $lis3 ]) ){
echo '<li class="closed"><span class="folder">'.$descricao[$lis2].'</span>';
vetor_li($lis3,$li,$descricao);
}else{
echo '<li><span class="file">'.$descricao[$lis2].'</span>';
}
echo '</li>';
}
echo '</ul>';
}
echo '<ul id="browser" class="filetree">';
foreach($li_root as $key => $lis){
echo '<li class="closed"><span class="folder">'.$descricao[$lis].'</span>';
$lis = $lis.'/';
if ( isset($li[ $lis ]) ){
echo '<ul>';
foreach($li[ $lis ] as $key2 => $lis2 ){
$lis3 = $lis2.'/';
if ( isset($li[ $lis3 ]) ){
echo '<li class="closed"><span class="folder">'.$descricao[$lis2].'</span>';
vetor_li($lis3,$li,$descricao);
} else {
echo '<li><span class="file">'.$descricao[$lis2].'</span>';
}
echo '</li>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
/**/
?>
[ leia mais ]



