Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/08/2015, 09:59
kabe_jrr
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Crear lista ul-li desde cualquier nodo

Hola amigos,

Tengo una estructura de "padres e hijos", es decir, un grafo con nodos. Me gustaría saber cómo construir una lista ul-li (es decir HTML) con los datos que recojo de la base de datos, dado un id que será un nodo cualquiera del grafo.

A ver si me explico...

Tengo algo así:

Código:
1
|---2
     |--------3
|---4
     |--------5
     |--------6
                |------------7
                |------------8
     |--------9
Es decir, el 1 es el padre del nodo 2 y del 4.
El nodo 2 tiene un hijo, el 3
El nodo 4 tiene tres hijos, el 5, el 6 y el 9
Y por último en el nivel más bajo, el 6 tiene los hijos 7 y 8.

Mediante PHP me gustaría poder montar una estructura HTML con <ul> y <li> dado cualquier ID del grafo. Es decir, si por ejemplo tengo el ID 6, quiero sacar sus "padres" y todos sus hijos y nietos (si los tiene). El grafo resultante debería ser así:

Código:
1
|---4
     |--------6
                |------------7
                |------------8
Para entendernos, el grafo hacia arriba es una línea recta (podría decirse) y hacia abajo, solo los sucesores directos (lo dicho: hijos y nietos, no "sobrinos").

En HTML el resultado debería ser una cosa así:

Código HTML:
<ul>
  <li>
    1
    <ul>
      <li>
        4
        <ul>
          <li>
            6
            <ul>
              <li>
                7
              </li>
              <li>
                8
              </li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
</ul> 
Si tuviera el ID 4 como parámetro, el grafo resultante para cotruir el HTML sería este:

Código:
1
|---4
     |--------5
     |--------6
                |------------7
                |------------8
     |--------9
Con los datos que tengo en mi BD, puedo sacar quiénes son los padres y los hijos así que ese no es problema. El problema que tengo es cómo construir la estructura, que me está volviendo loco.

Muchísimas gracias de antemano, espero haber explicado bien todo.

PD: El objetivo de montar esta estructura es para poder montar un organigrama con el plugin de JQuery JOrgChart