Foros del Web » Programando para Internet » PHP »

Crear menú árbol recursivo

Estas en el tema de Crear menú árbol recursivo en el foro de PHP en Foros del Web. Hola a todos (as), Ando en búsqueda de alguna solución para el siguiente problema. Necesito crear un sistema de categorías para productos que sea "infinito" ...
  #1 (permalink)  
Antiguo 13/12/2010, 09:01
Avatar de Jona_than  
Fecha de Ingreso: noviembre-2005
Ubicación: Chile
Mensajes: 155
Antigüedad: 19 años
Puntos: 0
Exclamación Crear menú árbol recursivo

Hola a todos (as),

Ando en búsqueda de alguna solución para el siguiente problema.

Necesito crear un sistema de categorías para productos que sea "infinito" para expresarlo de alguna manera.

Es para la clasificación de productos los cuales no sé dame dentro de cuantas categorías podrían estar, osea quiero decir que si tengo una categoría padre, esta tendrá una categoría hijo, y el hijo podría tener otro hijo y otro hijo, y así sucesivamente. Osea en definitivas cuenta no existe un nivel definido.

Mi estructura sería la siguiente de base de datos: id, id_padre, nombre

He pensado crear un while que lea los padres, y luego una función de forma re cursiva que vaya mostrando los hijos, de los hijos y así sucesivamente.

Haber, si alguien me da otra ayuda, o explica algo que se me quede en el tintero.

Saludos.
__________________
- Fasecreativa
- Twitter @jonyram
  #2 (permalink)  
Antiguo 13/12/2010, 09:19
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Crear menú árbol recursivo

Lo que planteas es una forma válida, lo que no tengan id_padre son la raiz, mientras que los que no tengan ninguno con su id en id_padre serán los últimos nodos y los restantes los del medio, aunque para la muestra de los árboles te recomiendo usar algún tipo de cache porque rearmar muchas veces el árbol puede ser costoso en recursos, ya que puede poseer una alta recursividad y demandar muchas consultas.
  #3 (permalink)  
Antiguo 13/12/2010, 10:44
 
Fecha de Ingreso: julio-2009
Mensajes: 42
Antigüedad: 15 años, 3 meses
Puntos: 3
Respuesta: Crear menú árbol recursivo

Como ves resulta bastante simple un arbol es una estructura recursiva por si misma; cada vez que se procesa un nodo del arbol se hace lo propio para todos sus hijos...

Lo que nesesitarias adicionalmente es una clase de categorias q contenga los nodos q son raiz del arbol, es decir aquellos que no tienen padre... espero te sea util salu2


Código PHP:

 

class Arbol
{
  private 
$id;
  private 
$nombre;
  private 
$childs;    

 function 
__construct($id,$name)
 {
     
$this->id=$id;
     
$this->name=$name;
     
$this->childs=array();
     
$this->loadChilds();    
 }

 function 
loadChilds()
 {
    
//obtener todos los hijos de este arbol
    
$chils=this->obtenerHijos();
    
    foreach(
$childs as $child)
    {
       
$ch=new Arbol($child['id'],$child['name']); //aca esta la llamada recursiva
       
array_push($this->childs,$ch);
    }    
 
 } 

 
 
 function 
obtenerHijos()
 {

    
//busca en la base de datos todos los registros con
        //id_padre igual a $this->id 
        //retorna un array de objetos [{id,name}]

 
}




Etiquetas: recursivo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 21:47.