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