Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/01/2008, 19:15
Moleman
 
Fecha de Ingreso: abril-2006
Mensajes: 69
Antigüedad: 18 años, 1 mes
Puntos: 0
Menú dinámico asp - xml

Hola a todos:

Necesito un menú dinámico. Un menú, multilevel, que se genere solo. El menú va a ser del tipo <ul><li>......</ul>. Desde una CSS tengo ya todas las características del menú montadas, tanto de diseño como para que los submenús se oculten y muestren. Sin embargo, no sé cómo recuperar los registros, dado el problema del multilevel. Tengo dos opciones en mente: coger los datos de un xml, o leerlos de una bbdd.

CON ACCESS Y SQL
=============

El problema es que el menú tiene varios levels, y todo eso lo tengo definido en dos tablas, con lo cual necesito un select dentro de otro select.

Me estoy volviendo loco para hacer que un select esté dentro del otro. Estoy probando con subconsultas, con arrays, y con varias cosas que voy encontrando, pero no hay manera. Por eso acudo, en última instancia, solicitando ayuda.

Os explico cómo está el tema:

TABLA 1 (id y familia):

1 - Rodríguez
2 - Gutiérrez
3 - Pérez
4 - Serrano
5 - García
Etc...

TABLA 2 (id, nombre, id_tabla1):

1 - Pedro - 1
2 - María - 1
3 - Luis - 2
4 - Manuel - 2
5 - Lola - 3
6 - Alicia - 3
7 - Roberto - 3
8 - Pablo - 4
9 - Silvia - 5

Etc.

Es decir, los registros de la segunda tabla se enlazan con la primera mediante el campo id_tabla1, que se refiere al id (valor único) de la tabla 1.

Y el resultado que busco es, ya en HTML:

RODRÍGUEZ
Pedro
María

GUTIÉRREZ
Luis
Manuel

PÉREZ
Lola
Alicia
Roberto

SERRANO
Pablo

GARCÍA
Silvia

Es decir: por cada valor de la tabla 1, escribo todos los valores de la tabla 2 cuyo id_tabla1 coincida con el id de ese valor de la tabla 1.

Si no me corregís, creo que habría que hacer algo así:

SELECT de la tabla 1 todos los registros; por cada registro, me escribes su nombre, y me haces ahora un SELECT de la tabla 2, DONDE el id_tabla1 sea = al id de la tabla 1 en la que estamos.

Y no sé hacerlo, claro. No sé hacer selects dentro de selects.

También había pensado con un array:

SELECT de la tabla 1 todos los registros, y me los guardas en un array, de varias columnas; por cada registro del array, me escribes el valor del nombre y me das el valor del id, y haces un SELECT con ese id a la tabla 2, para que me devuelva todos los registros con ese id.

Qué facil es escribirlo en castellano, ¿verdad? El problema es cómo se pasa a lenguaje máquina, je, je...

CON XML
======

Básicamente mi problema es el mismo. Tengo una serie de nodos padre, con la información de la tabla 1, y varios nodos hijo, con la información de la tabla 2. Ejemplo:

<Rodriguez>
<Pedro></Pedro>
<María></María>
</Rodriguez>
<Gutiérrez>
<Luis></Luis>
<Manuel></Manuel>
</Gutiérrez>
<Pérez>
<Lola></Lola>
<Alicia></Alicia>
<Roberto></Roberto>
</Pérez>

Etc...

Pues se trata de lo mismo: léeme todos los nodos padre, y, por cada nodo padre, escríbeme primero su nombre, y luego todos los nodos hijo que lleva dentro.

Pero hay que hacer también un doble bucle, un doble select, una doble consulta... como queráis llamarlo, pero no sé hacerlo.

CONCLUSIÓN
=========

Pues ya véis... Yo creo que es muy interesante el contar con menús dinámicos, pues no hacemos nada separando contenidos de formatos, si no podemos hacer que los menús crezcan de forma automática. Bueno, sí, se pueden hacer muchas cosas, pero quiero decir que un menú dinámico es el complemento perfecto para una web de contenidos dinámicos.

Espero que podáis iluminarme un poco (cuanto más mejor, je, je...) y que este la solución a este problema os sirva a muchos de vosotros, ya que he sido incapaz de encontrar la respuesta por Internet).

Un saludo y muchísimas gracias (aunque sea sólo por leer este peñazo).

Moleman.