Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/08/2014, 12:45
Avatar de alex171294
alex171294
 
Fecha de Ingreso: agosto-2014
Mensajes: 10
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: Categorias, Subcategorias y Recursividad

Cita:
Iniciado por bookmaster Ver Mensaje
Pues usando ejemplos, la cosa sería algo así:
Código PHP:
Ver original
  1. function Listado($Padre = 0){
  2. $Consulta = SELECT * FROM Tabla WHERE id_categoria_padre = $Padre;
  3. echo '<ul>';
  4. // Entras en el bucle que te muestra las categorias
  5.  echo "<li>{$c['nombre']} ". Listado($c['id_categoria_padre'])."</li>";
  6. // Sales del bucle
  7. echo '</ul>';
  8. }
Uso:
Código PHP:
Ver original
  1. echo Listado();

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!