Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/08/2011, 03:57
dadam
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
crear arbol genealógico con php

Hola,
estoy intentando crear un árbol genealógico usando php y mysql. Creo que lo mejor para explicar mi problema, es empezar exponiendo el planteamiento:

la base de datos que he creado es así:

id,
nombre,
ancestro

En el campo id, se introduce el valor numérico autoincrementado, en el campo nombre..., y el campo ancestro, se introduce el id del ancestro, es decir:

1, antonio, 0
|
|---> 2, pepito, 1
|---> 3, juan, 1

Donde pepito y juan son hijos de antonio...


A la hora de hacer la consulta a la base de datos, la hago así:


Código PHP:
$mysql->query("SELECT id, nombre, ancestro FROM genealogico WHERE ancestro = '".$_GET["ancestro"]."' ORDER BY nombre ASC"); 
Donde defino $_GET["ancestro"] por defecto a 0, y en la primera consulta, me saca los primeros de la lista, hasta ahora, el problema lo había solucionado de la siguiente forma:
Código PHP:
$consulta $mysql->query("SELECT id, nombre, ancestro FROM genealogico WHERE ancestro = '".$_GET["ancestro"]."' ORDER BY nombre ASC");
while(
$lista $mysql->f_obj($consulta)){[INDENT]print $lista->nombre;         
$subconsulta $mysql->query("SELECT id, nombre, ancestro FROM genealogico WHERE ancestro = '".$lista->id."' ORDER BY nombre ASC");
while(
$lista2 $mysql->f_obj($subconsulta)){
print 
$lista2->nombre;   
}[/
INDENT]} 
Así solucionaba el problema cuando tenía solo un subnivel. El tema es que necesito hacer consultas recurrentes, hasta llegar al último nivel, y quiero que sean automáticas en funcion del número de subniveles, y no se me ocurre como plantearla, ¿alguna idea?

Por si no queda claro del todo, quiero hacer algo así:


1, antonio, 0
|
|---> 2, pepito, 1
|---> 3, juan, 1
|
|-> 4, luis, 3
|
|-> 5, maria, 4

Un saludo