Foros del Web » Programando para Internet » PHP »

Estructura arbol en php

Estas en el tema de Estructura arbol en php en el foro de PHP en Foros del Web. Buenas, haver si me se explicar. Necesito crear un árbol genealógico, ya tengo la base de datos creados y la lista creada. Me muestra los ...
  #1 (permalink)  
Antiguo 23/07/2008, 03:18
Avatar de desendoll  
Fecha de Ingreso: mayo-2008
Mensajes: 340
Antigüedad: 11 años, 7 meses
Puntos: 3
Exclamación Estructura arbol en php

Buenas, haver si me se explicar. Necesito crear un árbol genealógico, ya tengo la base de datos creados y la lista creada.

Me muestra los datos correctamente, pero necesitaría que la lista obtubiera aspecto de "arbol". Es decir, ahora se lista un hijo y miro si tiene hijos si no tiene busca su hermano si tiene busca sus hijos.... y asi coninuamente. Programado de tal forma que cuando termina la lista de hermanos de un hijo vuelve a la lista de hermanos de su padre hasta que la termina, y asi continuamente.

Sabéis de alguna clase PHP o a lo mejor código CSS para generar el diagrama?

Gràcias

Pd: la otra idea que he contemplado es guardar los nombres en un array clasificado por niveles de generación...
__________________
Francesc Jimenez
  #2 (permalink)  
Antiguo 23/07/2008, 04:44
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 11 años, 7 meses
Puntos: 13
Respuesta: Estructura arbol en php

Se puede hacer fácilmente si trabajas con recursividad.

Tienes que crear una función que entre dentro de ella misma.

Por ejemplo:

Código PHP:
//En tu código, buscas la raíz del árbol y se la pasas a la función MostrarArbol();
$link=conexion_bbdd();
$consulta=mysql_query("SELECT info FROM arbol WHERE id=1"$link); // Me invento las consultas, eso ya hazlo tú bien como esté en tu BBDD
$resultado=mysql_fetch_row($consulta);
$padreRaiz=$resultado[0];
MostrarArbol($padreRaiz,$link);

// Función para mostrar
function MostrarArbol($raiz,$link){
     
$consulta=mysql_query("SELECT hijos FROM arbol WHERE Nombre_completo='".$raiz."' ");
     while(
$resultado=mysql_fetch_row($consulta)){
          
// Tiene hijos
          
MostrarArbol($resultado[0],$link);
          echo 
"Nombre_completo: ".$raiz."<br>"
     
}
     if(!
$resultado){
          
// No tiene hijos
          
echo "Nombre_completo: ".$raiz."<br>";
     }
     return 
1;

Creo que sería algo así, lo he puesto sin probar, igual hay algún error. A ver, como no sé tu estructura de tablas de la BBDD no sé bien como tendrás que hacerlo, pero tómalo como ejemplo y peléate un poco. Tal como está, mostraría primero el hijo de abajo del todo, luego su hermano, luego su otro hermano, luego su padre, luego los tíos, luego sus primos (hijos de cada tío), luego los abuelos... hasta llegar arriba del todo.

A partir de aquí, sólo con que juegues un poco en poner el printado de información antes o después, ya conseguirás cambiar el orden. Por ejemplo si lo pones antes de entrar recursivamente otra vez, harás que vaya de arriba a abajo en vez de abajo a arriba.

Espero que más o menos te haya servido de ayuda.
  #3 (permalink)  
Antiguo 23/07/2008, 05:13
Avatar de desendoll  
Fecha de Ingreso: mayo-2008
Mensajes: 340
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: Estructura arbol en php

el código ya lo tengo implementado y ya me funciona(listo toda la familia a diferentes niveles de generacion), el problema es que me queda mostrado como una linea... y me gustaría que quedase como un diagrama (desde el mas antiguo ir descendiendo)

Ya me peleare un poco mas con el código, supongo que sacando el código con div de diferentes niveles en vez de con ul como hago ahora encontrare la solución. gracias por el interés
__________________
Francesc Jimenez
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 00:23.