Cita:
Iniciado por bookmaster Pues usando ejemplos, la cosa sería algo así:
Código PHP:
Ver originalfunction Listado($Padre = 0){
$Consulta = SELECT * FROM Tabla WHERE id_categoria_padre = $Padre;
echo '<ul>';
// Entras en el bucle que te muestra las categorias
echo "<li>{$c['nombre']} ". Listado($c['id_categoria_padre'])."</li>";
// Sales del bucle
echo '</ul>';
}
Uso:
Tendrías que ajustar el código para hacerlo funcional, yo tengo uno ya echo pero ahora mismo no le encuentro, si sólo quieres mostrar una de las categorías con sus subcategorias con poner el valor dentro de Listado(CategoriaInicial) te valdría.
eso que muestras daría con un bucle infinito, ya que por más que la consulta no obtenga resultados de igual manera vuelves a llamar a Listado.
La recursividad es algo complicado, y que puede traer problemas serios si no se aplica correctamente.
Ten en cuenta lo siguiente, puedes hasta hacer consultas (muchas) innecesariamente con recursividad sin notarlo, haciendo tu código bastante pesado de forma innecesaria.
Yo creo que quizá con 2 funciones lo logres de igual manera te dejo aquí una forma recursiva:
function obtenerListado($idPadre = 0)
{
// obtienes todos los registros con idPadre pasado por parametro
// recorres cada uno de estos con un for o lo que sea, SI ALGUNO TIENE IDPADRE DIFERENTE A 0 llamas a la funcion obtenerListado guardando su resultado en el $arregloConResultados;
// y a los que no tengan un id diferente a 0 (o al que llegó por parametro) lo agregamos directamente a $arregloConResultados;
return $arregloConResultados;
}
cuando llames a obtenerListado deberías obtener un arreglo con arreglos adentro generando el arbol de categorias.
Saludos!