Foros del Web » Programando para Internet » PHP »

Como creo un Menú en Arbol con PHP ?

Estas en el tema de Como creo un Menú en Arbol con PHP ? en el foro de PHP en Foros del Web. Que tal, Necesito construir un menú dinámico (Que lea los Items de la base de datos) en forma de árbol, como éste. Para este modelo ...
  #1 (permalink)  
Antiguo 09/11/2005, 09:49
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Como creo un Menú en Arbol con PHP ?

Que tal,

Necesito construir un menú dinámico (Que lea los Items de la base de datos) en forma de árbol, como éste.




Para este modelo de tablas:



Me sirve cualquier Link, Tutorial, explicación ya que he buscado y la verdad no he encontrado nada.

Gracias de Antemano.
  #2 (permalink)  
Antiguo 09/11/2005, 13:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm .. Para la estructura de arbol que buscas .. el modelo de datos que emplearía sería este que propone esta FAQ:

http://www.forosdelweb.com/showpost....&postcount=147

Si te fijas .. se crea una sóla tabla (tu actual products_category).. la cual contiene un campo que denomina "padre" .. es decir, de que registro depende ese mismo registro. El arbol se genera de forma dinámica aplicando recursividad. Los niveles ("ramas") de este tipo de arboles son infinitas, es muy cómodo mover por ejemplo una rama completa a otra .. etc.

Un saludo,
  #3 (permalink)  
Antiguo 09/11/2005, 14:55
Avatar de flaconovato  
Fecha de Ingreso: noviembre-2005
Ubicación: Bogota, Colombia
Mensajes: 137
Antigüedad: 18 años, 5 meses
Puntos: 1
De acuerdo Como creo un Menú en Arbol con PHP

Mira esta parte de menus en PEAR nunca la he utilizado... pero talvez te pueda servir

pienso que es solo leer los datos que nesecitas de tus tablas


http://pear.php.net/manual/en/packag...menu.intro.php
__________________
El pueblo que se resigna a tecnologías pasadas, sucumbe en el campo de la ignorancia y se entierra en sus ideales.:arriba: :arriba:
  #4 (permalink)  
Antiguo 09/11/2005, 17:17
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Gracias,

Estaba intentando utilizar esta extensión, por todos los medios, incluso editando el ejemplo que ponen, pero al parecer no funciona con dos tablas:

http://www.interaktonline.com/Produc...Menu/Overview/

Cualquier otro link, lo agrezco.

Saludos.
  #5 (permalink)  
Antiguo 10/11/2005, 08:39
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Gracias Cluster y Flaconovato,

La verdad ando en busca de una solución en la que no tenga que cambiar mis 2 tablas a una..............Saludos.
  #6 (permalink)  
Antiguo 10/11/2005, 11:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No no .. no se trata de cambiar de "dos tablas a una" .. sino que alteres UNA de tus tablas su estructura .. justo la que define tus "categorías" ..

Así como usas tus tablas relacionadas son: 1 producto -> tiene una categoría.

Necesitas al menos ese "campo" en tu tabla categoría que define el "ID del registro padre al que pertenece" como para "recursivamente" recorrer esa tabla de esa forma (la que te mostré en la FAQ que te indico) para obtener tu "rama" en la que está tus productos.

Luego la relación "categoria -> producto" va exactamente igual ..

Un saludo,
  #7 (permalink)  
Antiguo 10/11/2005, 12:17
Avatar de cdavid_00  
Fecha de Ingreso: septiembre-2004
Ubicación: La Gran Tenoch
Mensajes: 124
Antigüedad: 19 años, 7 meses
Puntos: 1
Me parece que se puede con el DOM

Hola, tal vez lo que voy a sugerir sea una averración , ya que nunca lo he hecho, pero se me ocurre lo siguiente: ese tipo de menús se pueden hacer con CSS, claro que el problema es que se tienen que generar dinámicamente, con Javascript se puede modificar la hoja de estilos (CSS) a través del DOM, esto sigue sin solucionar tu problema, pero tengo entendido que PHP5 cuenta con una serie de funciones para manipular el árbol del DOM, te dejó la siguiente liga http://mx.php.net/domxml yo digo que ésta es una forma de solucionar tu problema. Si no queremos vernos muy estrictos o no estas usando hojas de estilo, pues intenta, modificar directamente (o sea sin meternos en modificar la hoja de estilos) el documento Xhtml (tu página, donde esta el menú) mediante el DOM y si lo logras ¡LIsto! podra hacer tu menú dinámicamente.

Espero me haya dado a entender y ojala te sirva de algo, si no quedo claro dudes en preguntar.

Hasta pronto
__________________
"Cuanto más grande es el caos, más cerca está la solución"
"Toda ciencia tiene de ciencia, lo que tiene de matemática"
  #8 (permalink)  
Antiguo 10/11/2005, 12:48
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Que tal CDavid, gracias por la respuesta, esa forma es una opción.

Bueno la verdad no acabo de entender lo de ese relacionamiento que explicó Cluster ahora, pero si veo (Tomando el Modelo de ejemplo, de la extensión ya mencionada), que las 2 tablas que se utilian no están siquiera relacionadas, sino que tienen una especie de indices o relacionamiento "jerárquico":



Aquí la cuestión es:

1. Añadir un nuevo campo en mi tabla de categorías que se llame ??? Que debe guardar ahí? Es decir este campo debe ir "Sincronizado" con cual?

2. Esto influye luego al hacer inserts? se puede quedar este campo huerfano? o no?

Saludos.
  #9 (permalink)  
Antiguo 10/11/2005, 14:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Vamos a ver ...

Te explico el modelo de datos que te comenté por mi parte que tienes en las FAQ's.

Con datos .. sería algo así. Imagina una barra de menus de una aplicación (es lo mismo si lo ves "horizontal" o "vertical" la presentación de los datos).

id_categoria categoria_nombre id_pertenece
1 Archivo 0
2 Edicion 0
3 Ver 0
4 Nuevo 1
5 Abrir 1
6 Cortar 2
7 Pegar 2
8 Otro 0
9 otromas 8
10 sub_otromas 9

Lo entiendes?
Los registros que su categoría "id_depende" son 0 .. son ramas del raiz de nuestro arbol .. las otras depende de la "rama" que se indica ..

Quedaría:
Archivo
--- Nuevo
--- Abrir
Edicion
--- Cortar
--- Pegar
Ver
Otro
--- otromas
------- sub_otromas

Y así como tantas ramas quieras o sub_ramas. Este arbol para obtener una rama (lo marcado en negrita sería una rama completa por ejemplo) se recorre recursivamente .. se ve la rama padre (raiz) .. se mira si depende de otra .. se entra en esa .. se recorre la sub-rama .. etc.

La relación de esa "propiedad" que es la "categoría" en tu caso con un "producto" la dás por el mismo Id_categoria de esta tabla categoría .. (si te fijas son únicos) .. Ese es es el campo que relacionas con tus otras tablas (no necesariamente para UNa sóla .. la categoría es una "propiedad" de algo).

Un saludo,
  #10 (permalink)  
Antiguo 10/11/2005, 16:43
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Claro como el agua Master, ya lo he entendido. Muchas Gracias. Finelmente he podido hechar a andar la extensión............y he pillado con vuestras explicaciones, como funciona la lógica. Muchas Gracias. Cualquier cosa seguiré posteando, je, je.

Saludos.
  #11 (permalink)  
Antiguo 04/05/2007, 10:45
 
Fecha de Ingreso: enero-2007
Mensajes: 80
Antigüedad: 17 años, 3 meses
Puntos: 0
Pregunta Re: Como creo un Menú en Arbol con PHP ?

hola yo tengo alguna preguntas con respecto a ese tema, por cierto que yo busco algo similar pero en vb.net si seria posible que me ayuden con ese codigo, ademas quisiera saber de la tabla categoria:

categorias
id_categ
nombre_categ
id_pertenece

productos
id_prod
nombre_prod
id_categ

cuales serian las claves primarias y foraenas respectivamente de las tablas mencionadas para lograr la relacion correcta y la recursividad en la tabla catgeorias.

gracias!
  #12 (permalink)  
Antiguo 21/12/2007, 18:14
 
Fecha de Ingreso: diciembre-2007
Mensajes: 1
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Como creo un Menú en Arbol con PHP ?

Hola a todos tengo un problema similar quiero crear un arbol apartir de una tabla recursiva en mysql pero no se como realizar tal metodo
Es una tabla tarea que hace referencia asi misma por lo que una tarea puede tener N tareas hijas
De antemano agradeciendo su ayuda Humberto
  #13 (permalink)  
Antiguo 22/12/2007, 08:08
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 5 meses
Puntos: 25
Re: Como creo un Menú en Arbol con PHP ?

primero si trabajaras con base de datos lo cual seria lo mas logico para este tipo de menus es que te dieras una puñalada con joins y despues de eso hacesun parse con tablas en html usando php y listo tienes tu arbol.
  #14 (permalink)  
Antiguo 23/04/2008, 19:54
 
Fecha de Ingreso: marzo-2005
Mensajes: 74
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Como creo un Menú en Arbol con PHP ?

Cita:
Iniciado por Cluster Ver Mensaje
mm .. Para la estructura de arbol que buscas .. el modelo de datos que emplearía sería este que propone esta FAQ:

http://www.forosdelweb.com/showpost....&postcount=147

Si te fijas .. se crea una sóla tabla (tu actual products_category).. la cual contiene un campo que denomina "padre" .. es decir, de que registro depende ese mismo registro. El arbol se genera de forma dinámica aplicando recursividad. Los niveles ("ramas") de este tipo de arboles son infinitas, es muy cómodo mover por ejemplo una rama completa a otra .. etc.

Un saludo,
Cordial Saludo, le cuento que ando en busca de algo como eso, el codigo de la FAQ lo monte y me sirvio perfecto con mi tabla, peroooooo. Se necesita que sea dinamico que se haga clic en la cat y abra o cierre.

Si me pueden colaborar muchas gracias
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 08:12.