Foros del Web » Programando para Internet » PHP »

Generacion de Menu con campos de BBDD Mysql

Estas en el tema de Generacion de Menu con campos de BBDD Mysql en el foro de PHP en Foros del Web. Buenas tardes , me gustaria saber si es posible generar un menu desplegable siendo los campos que lo componen datos de una bbdd en mysql ...
  #1 (permalink)  
Antiguo 03/07/2013, 04:22
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Generacion de Menu con campos de BBDD Mysql

Buenas tardes , me gustaria saber si es posible generar un menu desplegable siendo los campos que lo componen datos de una bbdd en mysql ?

Tengo un menu ya hecho estatico pero pensandolo mejor para mis intereses creo que lo mejor seria que esos campos se generaran automaticamente ya que si en su dia hay que generar nuevos campos lo ideal seria que teniendo un simple formulario web se pudieran agregar los campos automaticamente y no tener que ir editando el html para generar nuevas categorias.


Gracias por su ayuda.
  #2 (permalink)  
Antiguo 03/07/2013, 04:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Generacion de Menu con campos de BBDD Mysql

Si. Simplemente debes tener una tabla de ítems de menú y combinar el html/css con la impresión de los datos obtenidos de la bbdd, no es mas complicado que presentar datos de una tabla en forma de tabla....

La complicación se presenta por la jerarquía de categorías pero una estructura básica podría ser

TblItemsMenu
idItem
Item
idItemPadre FK a idItem de la misma tabla
nivel (0 ítems principales, 1 hijos de los principales, 2 nietos, 3....)
orden (determina el orden entre los hijos de un mismo padre)
accion (opcional pero aquí puedes tener por ejemplo la función javascript a ejecutar )


Si el menú estático lo tienes definido con listas (HTML+CSS) debes conseguir una query que te retorne los ítems en el orden adecuado para construir dinámicamente la lista.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 03/07/2013 a las 04:45
  #3 (permalink)  
Antiguo 03/07/2013, 04:41
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Generacion de Menu con campos de BBDD Mysql

Eso es afirmativo.

Solo tienes que hacer una consulta a tu bd y luego mostrarlo mediante un while.

Ejemplo en mysql que realmente no deberias usarlo puesto que ya esta en deprecada.

Código HTML:
<select name='desplegable'>
<?php 
while($row=mysql_fetch_array($query)){

echo "<option>".$row[nombre_campo]."</option>";

}
?>
</select> 
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #4 (permalink)  
Antiguo 03/07/2013, 05:10
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Respuesta: Generacion de Menu con campos de BBDD Mysql

Gracias por compartir los conocimientos tan rapido son de mucha ayuda ambos pero lo qeu veo mas dificil como pone quimfv es la estructura de la bbd del menu. Voy a poner el menu estatico que tengo mas o menos para ver si me podeis ayudar a confeccionar la BBDD.


Perro
----Jack Russel
----Caniche
----Pastor Aleman

Gato
----Abisinio
----American Curl
----Burmés

Si quisiera tener esa estructura en el menu , como tendria que tenerlo en la bbdd ?
  #5 (permalink)  
Antiguo 03/07/2013, 05:12
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Generacion de Menu con campos de BBDD Mysql

Exactamente que es lo que quieres mostrar, para ayudarte mas directamente.
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #6 (permalink)  
Antiguo 03/07/2013, 05:22
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Respuesta: Generacion de Menu con campos de BBDD Mysql

Hola mira , este es mi menú de test que tengo , ese es estático como he dicho. Lo que necesito es que los campos esos que ves en el menú los coja automáticamente de un Mysql.



Entonces para printar eso tal como esta ahí pero con los datos en el Mysql que estructura me aconsejáis que siga con la BBDD?

Y claro esta luego como recojo los datos del sql para poder printarlo , luego el css ya se lo aplicaria yo claro esta
  #7 (permalink)  
Antiguo 03/07/2013, 05:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Generacion de Menu con campos de BBDD Mysql

Ya te he puesto la tabla

idItem,Item,idItemPadre,nivel,orden,accion
1, Perro, Null,0,1,Null
2,Jack Russel,1,1,abrir('Jack Russel')
3,Caniche,2,2,abrir('Caniche')
4,Pastor Aleman,1,3,abrir('Pastor Aleman')
5,Gato,Null,0,2,Null
6,Abisinio,5,1,1,abrir('Abisinio')
7,American Curl,5,1,2,abrir('American Curl')
8,Burmés,5,1,3,abrir('Burmés')

el contenido de accion es un ejemplo tonto es para poner algo

Ahora necesitas una query que retorne los items en ese orden, no vale ORDER BY idItem por razones obvias....

Código MySQL:
Ver original
  1. SELECT itm1.*,itm2.*
  2. FROM TblItemsMenu itm1 LEFT JOIN TblItemsMenu itm2
  3.        ON itm1.idItem=itm2.idItemPadre
  4. ORDER BY if(itm2.orden is null,0,1),itm2.orden,....itm2.nivel,itm1.nivel....,itm1.orden...

El join consigo misma nos proporciona cada item emparejado con los datos de su padre, si tiene. Luego hay que jugar con ORDER BY para conseguir el orden, no tengo aquí la solución. (Recuerda que un campo null se ordena al final de la lista con if(itm2.orden is null,0,1) invertimos esa logica).

Si solo tienes dos niveles, padres e hijos, la cosa se simplifica pero se puede conseguir una query que ordene bien para un numero indefinido de niveles.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 03/07/2013 a las 05:47
  #8 (permalink)  
Antiguo 03/07/2013, 06:55
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Respuesta: Generacion de Menu con campos de BBDD Mysql

Muchas gracias quimfv por el comentario lo qeu pasa es que sinceramente no lo entendi muy bien , no soy un gran especialista en esto pero bueno, he puesto tal y como lo que me has puesto tu en la BBDD y luego con la consulta y sale da como resultado esto.

BBDD


Consulta


Haber si me sabes decir tu que es lo qeu falta porque no lo veo muy claro.
  #9 (permalink)  
Antiguo 03/07/2013, 07:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Generacion de Menu con campos de BBDD Mysql

Debes jugar con mas campos para conseguir el orden

ORDER BY if(itm2.orden IS NULL,0,1),itm2.orden,....itm2.nivel,itm1.nivel.... ,itm1.orden...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #10 (permalink)  
Antiguo 04/07/2013, 00:13
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Respuesta: Generacion de Menu con campos de BBDD Mysql

Lo siento pero sinceramente no tengo ni idea , si alguien puede ayudarme con lo que dijo quimfv o algo nuevo se lo agradeceria mucho.
  #11 (permalink)  
Antiguo 04/07/2013, 05:42
 
Fecha de Ingreso: julio-2010
Mensajes: 275
Antigüedad: 13 años, 9 meses
Puntos: 21
Respuesta: Generacion de Menu con campos de BBDD Mysql

Deberías tener una tabla más o menos así

MenuPadre
idPadre
nombrePadre

MenuHijo
idHijo
nombreHijo
id_padre (clave foránea idPadre en la tabla Menú Padre)

MenuNieto
idNieto
nombreNieto
id_hijo (clave foránea idHijo en la tabla Menú hijo)

Así es como yo lo haría... Tipo las tablas de "País - Provincia - Ciudad"...

Etiquetas: bbdd, campos, formulario, html, mysql
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.
Respuesta




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