cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013
-
6 mai 2006 à 18:37
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013
-
11 mai 2006 à 20:15
j'essaye de generer un arbre genealogique ascendant d'une personne $id
comment je pourrais faire pour faire la meme chose que le script d'en bas mais sous forme de fonction ou de boucle.
Le script plus bas cherche les parents de $id puis les parents des parents etc..
ici c'est un exemple sur 4 generations mais je souhaiterais un script qui chercher les parents puis les parents des parents, etc. jusqu'a qu'il n'y en ai plus ($id_pere '0' et $id_mere'0'), puis que ca ma l'affiche des plus anciens jusqu'a $id organisé comme un vrai arbre genealogique, et que ca affiche toutes les generations enregistrées au-dessus de $id (qu'il y en ai 2 ou 8 ou x)
Voila si qqn peux m'aider ca serait cool car la je sui svraiment pret a me jeter par la fenetre; j'ai essayé avec une fonction qui cherche tout les personnes de l'arbre elle fonctionne mais elle me les met pas dans l'ordre et apres j'arrive pas a faire un affichage correct voici la fonction :
function SelectByID($id_search) {
$sql = mysql_query("SELECT * FROM FA_personne WHERE num='$id_search'");
cs_spyro666
Messages postés137Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention28 août 2007 8 mai 2006 à 10:45
En fait il te faut une table dans laquelle sont stockés toutes les personne avec les champs suivants :
ID
Nom
Prenom
ID_Pere
ID_Mere
Les valeurs de champs ID_Pere et ID_Mere proviennent de la même table. Je crois qu'on appel ça des ID recursifs(corrigés moi si j'ai tort).
Avec ça tu peux rescenser autant de monde que tu veux et afficher, avec une fonction récursive, tous les parents, grand parent, etc... en une seule fonction (du moment que, pour des raisons de processeur, ça ne s'étend pas sur plus de 32 générations).
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 8 mai 2006 à 14:51
c'est ce que j'ai deja, j'avais meme fait une deuxieme table où etait enregistré les personnes composant l'arbre souhaité uniquement pour pouvoir mieux les traiter ensuite, mais c'est pas mieux !
cs_spyro666
Messages postés137Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention28 août 2007 8 mai 2006 à 15:17
En fait ta solution n'est pas toute fausse. Je me suis pencher sur le problème des arbres généalogiques cet après midi(j'ai même créer un script qui permet de remplir la table pour les test) pour pouvoir t'aider.
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 8 mai 2006 à 16:47
Interessant ton script même si je ne comprends rien du tout !!
Enfin, disons que j'en comprends 55% ! c'est deja pas mal, lol !!
Ton script est interessant car il affiche tout les champs de la table sans avoir a se les taper, je connaissais pas comme ça c'est super pratique.
Par contre tu obtiens le mem resultat qu'avec ma fonction SelectByID à savoir tu cherches d'abord tout les peres puis toutes les meres, ce qui fait qu'il ne sont pas dans l'ordre !!! (je suis chiant !)
je m'explique
Voici comment l'affichage procede :
id--> Dede Junior Juniorette
son pere --> Dede Junior
son pere --> Dede Patriarche
sa mere --> Josephine Majorette
sa mere --> Mathurine Juniorette
son pere --> Marcel Juniorette
sa mere --> Berthe Pouet
cs_spyro666
Messages postés137Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention28 août 2007 9 mai 2006 à 10:04
Oui effectivement mon print_r ne sert plus a grand chose mais pendant la phase de développement ça me servait a voir combien un individu à de parents et combien d'enfant et petits enfant.
En fait comme mon script est construit il construit l'arbre en partant avec le père, ensuite le sien, ensuite celui de celui-ci. Quand y en a plus il prend la mère du père du père et ainsi de suite. Ensuite pour le classer, si tu a le sexe dans ta base de donnée tu peux essayer de les trier comme ça.
En attendant je vais essayer de créer un système qui te fait une image du tout. Je poste ça dès que c'est fait.
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 9 mai 2006 à 18:21
dans ma bdd j'ai
num (auto_increment)
nom
prenom
age
sexe
id_pere
id_mere
id_conjoint
.....
au debut j'avais essayé de retravailler ma fonction Select By Id() en prenant en compte l'id_conjoint,
par exemple je cherchais $id_pere de la personne $id en boucleet j'affichais $id_pere et $id_conjoint a côté, mais l'inconvenient c'est que je n'ai pas les parents des meres et que si $id_mere !'' et que $id_pere '' ca ne m'affichait pas $id_mere, donc du coup j'ai laissé tomber les conjoints !!
Ensuite j'ai créé une deuxieme table où ma fonction Select By Id enregistre tout les membres qu'elle trouve avec
id
nom
prenom
id_pere
id_mere
id_conjoint
et
id_enfant qui est l'id de l'enfant_parent de l'arbre
et
$niveau qui le niveau de generation (pour affichage) id 0 parents de id 1 ...
puis j'affiche le tout !!
mais c'est un peu le bordel !!!!!
et en plus ça fonctionne qu'a moitié !
cs_spyro666
Messages postés137Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention28 août 2007 9 mai 2006 à 19:27
En fait il te faudrait encore un champ génération qui s'incrémente pour le passer. Comme ça en partant depuis le dernier né, tu devrais pouvoir trouver les parents (en incrémentant la fameuse génération), leurs parents, les parents de ceux-ci et ainsi de suite.