PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 02-08-2012 15:16:05

Theo17
Membre
Inscription : 05-01-2012
Messages : 16

Recherche dans tableau

Bonjour,

J'ai 2 tables constitués comme suit (elles sont beaucoup plus importantes mais elles sont réduites ici pour cette demande) :

table des individus
Array (
[4173I] => Array ( [prenom] => Patrick        [nom] => LAPORTE     [ancetres] => 6604U )
[4174I] => Array ( [prenom] => Françoise     [nom] => MORAUD          [ancetres] => )
[4177I] => Array ( [prenom] => Delphine     [nom] => LAPORTE     [ancetres] => 6625U )
[4179I] => Array ( [prenom] => Gaston         [nom] => LAPORTE     [ancetres] => )
[4187I] => Array ( [prenom] => Rolande         [nom] => VINCENT     [ancetres] => )
[5349I] => Array ( [prenom] => Alex         [nom] => PINOT         [ancetres] => 6632U )
[5350I] => Array ( [prenom] => Kévin        [nom] => PINOT         [ancetres] => )
)

table des familles
Array (
[6604U] => Array ( [MARI] => 4179I [FEMME] => 4187I )
[6625U] => Array ( [MARI] => 4173I [FEMME] => 4174I )
[6632U] => Array ( [MARI] => 5350I [FEMME] => 4177I )
)   

Le but est de rechercher les parents de chaque individu grâce au code ancetres de la table individu pour aller chercher dans la table des familles les parents donc le mari et la femme.
Une fois trouvé le mari ou la femme, son code permet de repartir dans la table individu et ainsi de suite.

Donc par exemple en ayant au départ le code 5349I dans la table individu, j'y trouve le code ancetres 6632U qui me donne dans la table des familles le MARI 5350I et la FEMME 4177I.
De là je vais dans la table individus avec le code 4177I qui me donne Delphine LAPORTE avec son code ancetres 6625U et je repars dans la table des familles avec ce code et ainsi de suite.

Faire une boucle pour rechercher serait facile mais mes tables comportent près de 5000 individus, donc très long.
J'ai voulu essayer avec array_search ($key = array_search('6625U', $infos_indi);) qui ne trouve rien et différents autres essais ne me donnent rien, je n'arrive pas à m'en sortir car je pense que çà ne marche pas vu que c'est un tableau à plusieurs dimensions.
J'ai essayé aussi avec des boucles imbriquées, première boucle sur la clé et array_search sur le reste, sans résultat non plus.

Que faut il que j'emploie et de quelle manière pour arriver directemet sur un élément de chaque table ???

Merci beaucoup de vos réponses.
Cordialement.
Théo

Hors ligne

#2 02-08-2012 16:58:59

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Recherche dans tableau

Saluton,
D'où proviennent ces données dans tes tables ?
Si elles proviennent d'une base de données tu ferais mieux de faire cela en relationnel avec SQL.
D'autant que, comme te le démontrera cet excellent article de SQLPro, il existe, en SQL, des pratiques et des techniques spécifiques à la gestion des arborescences.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 02-08-2012 17:54:59

Theo17
Membre
Inscription : 05-01-2012
Messages : 16

Re : Recherche dans tableau

Elles proviennent d'un fichier texte (gedcom) et non d'une table sql et je ne peux remplir des tables chaque fois que j'utilise le script !!

Hors ligne

#4 02-08-2012 21:28:30

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Recherche dans tableau

Bonjour,

Etant moi même l'auteur d'un logiciel de généalogie, et même si cela fait un certain temps que je ne me tiens pas informé des dernières fonctionnalités des logiciels les plus courants, il faut importer votre fichier gedcom pour en faire les extractions simplement. Certains logiciels vous en font même des extractions à la volée en mémoire (ce que faisait le mien il y a déjà 12 ans). Normalement il doit toujours exister en distribution gratuite un reader pour les fichiers gedcom que vous devrez trouver sur familyorg (le site de généalogie des mormons), il sera en mesure de faire ce que vous souhaitez. Après si votre but est de développer vous même une telle application, je vous invite à télécharger toutes les informations relatives au standard gedcom avant toute implémentation.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#5 03-08-2012 07:55:57

Theo17
Membre
Inscription : 05-01-2012
Messages : 16

Re : Recherche dans tableau

Bonjour,
J'ai déjà toutes les infos sur le gedcom et j'ai déjà réalisé quelques scripts d'affichage d'infos de ces gedcom.
Mais ce que je veux faire je ne l'ai jamais encore trouvé nulle part, d'après un numéro sosa saisi on a toute la descendance sosa par sosa jusqu'au sosa 1.
Et le seul moyen, à ma connaissance, de circuler facilement dans un gedcom, est de le faire dans une table, que je rempli en début de script, car créer des tables sql pour chaque lancement du programme est un peu lourd.
Cordialement.
Théo

Hors ligne

#6 03-08-2012 08:58:21

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Recherche dans tableau

Bonjour,

Bien déjà avec les ordis de l'époque sans vouloir persister le fichier dans une base access, de façon à simplement lire un gedcom "étranger" à notre généalogie, en le stockant dans une fabrique de classe, un fichier gedcom de 20Mo mettait environ 1min à charger avec une toute petite config et tout était instantané à la consultation ou presque. Cette fabrique de classe me permettait de travailler en format natif gedcom et me servait en même temps de brouillard de saisie. Si je voulais persister je sauvegardais dans ma base access via une routine d'importation (de sauvegarde pour l'utilisateur). Une fois sauvegardé, tout se faisait en JetSQL.

Mais c'est clair qu'il faut du code pour tout cela... ça prends du temps à écrire wink

Pour un affichage en numérotation de sosa-stradonitz, tous l'on de base, sinon il ne peuvent s'appeler logiciel de généalogie.^^

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#7 03-08-2012 10:32:19

Theo17
Membre
Inscription : 05-01-2012
Messages : 16

Re : Recherche dans tableau

Merci de votre réponse, ce n'est pas un logiciel de généalogie que je cherche à faire, mais quelques petits scripts qui me rendent service et sont vite appelés sans lancer un logiciel complet.
Et comme un gedcom évolue tout le temps, créer à chaque fois de nouvelles tables sql ne me semble pas la solution.
Mais çà y est j'ai trouvé, ce n'est pas un search qu'il me fallait, puisque la clé indi est l'indice principal de ma table, donc avec mes clés trouvées sur les éléments des tables, j'accède directement à un autre élément, comment n'y avais je pas pensé plus tôt ??
Bonne journée.
Cordialement.
Théo

Hors ligne

#8 03-08-2012 11:59:32

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Recherche dans tableau

Et comme un gedcom évolue tout le temps, créer à chaque fois de nouvelles tables sql ne me semble pas la solution.

Si le standard est implémenté correctement, rien ne bouge, la structure du standard étant fixe. Je suis certains que mes algos d'imports de l'époque fonctionnent toujours aussi bien et qu'aucune mise à jour sur l'algo même n'est à faire, sauf changement de techno pour l'optimiser.

Note: Il faut en effet travailler sur les RIN et MRIN en clé primaire. Le plus long à faire c'est la gestion de l'affichage pour avoir quelque chose à regarder de compréhensible et de productif.

Dernière modification par Jc (03-08-2012 12:01:43)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums