hola maycolalvarez,
Gracias por la repuesta pero no me sirve. Si te fijas en mi tabla no tengo ningun indice ni nada que me sirva contar los niveles son todos varchar y no le puedo añadir ningun campo.
Yo antes lo tenia asi:
Código PHP:
function recorrer_menu_familias($padre, $nivel_anterior){
//la consulta a la tabla familias busca los hijos del padre que entró como parametro a esta función
$sql="SELECT Idfamilia, familia, nivel, padre FROM familia WHERE padre = $padre";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result)){
$clase = $row['nivel'];
switch ($clase) {
case 0:
$clase_fin = "clase1";
$span_folder = "folder";
break;
case 1:
$clase_fin = "clase2";
$span_folder = "folder2";
break;
case 2:
$clase_fin = "clase3";
$span_folder = "folder3";
break;
case 3:
$clase_fin = "clase4";
$span_folder = "folder4";
break;
}
if($GLOBALS['nivel']==""){
//si la goblal nivel está vacia es que acaba de empecar el ciclo recursivo
echo "<li class= 'closed $clase_fin'>";
}else{
//según la diferencia de nivel actual con el anterior guardada en $GLOBALS['nivel'] se cierran o abren etiquetas <Li>
$diferencia = $row['nivel'] - $GLOBALS['nivel'];
if($diferencia==0) echo "</li>\n<li class='closed $clase_fin'>\n"; //no ha cambiado de nivel de subfamilia respecto al anterior
if($diferencia==1) echo "<ul>\n<li class='closed $clase_fin'>\n"; //ha subido un nivel de subfamilia respecto al anterior
if($diferencia==-1) echo "</span></li>\n</ul>\n<li class='closed $clase_fin'>\n"; //ha bajado un nivel de subfamilia respecto al anterior
if($diferencia < (-1)){
//baja varios niveles de subfamilia respecto al anterior
echo "</span></li>";
for($i>=$diferencia;$i<0;$i++)
echo "</ul>\n</li>\n";
echo "<li class='closed $clase_fin'>\n";
}
}
//crea el enlace
$padre2 = $row['padre'];
$familia = $row['Descripcio'];
echo "<div class='hitarea'><a href='productos.php?fam=$padre2&familia=$familia' class=$span_folder $clase_fin><span class='$span_folder'><span class='espacio'>".$row['familia']."</span></span></a></div>";
//actualiza $GLOBALS['nivel'] al nivel actual
$GLOBALS['nivel'] = $row['nivel'];
//se llama a si mismo para comprovar quienes son los hijos de la familia actual
recorrer_menu_familias($row['Idfamilia'],$row['nivel']);
}
}
//muestra menu
function muestra_menu_familias(){
recorrer_menu_familias(0, "");
echo "</li>\n";
for($i=0;$i==$GLOBALS['nivel'];$i++)
echo "</ul>\n</li>\n";
}
?>
<div id="main">
<ul id="browser" class="filetree">
<?php muestra_menu_familias(); ?>
</ul>
</div>
pero no me sirve por la misma razon. Espero que alguien pueda ayudarme porque me estoy volviendo loco.
Gracias y saludos