Creation d'un critere specifique pour une boucle

Je bute sur un petit problème dans la création d’un plugin de généalogie.

Je m’explique, j’ai une table (SPIP_GENEA_FAMILLES) qui contient deux champs appelés : ID_EPOUX et ID_EPOUSE. Tous les deux contiennent un lien vers l’ID_INDIVIDU concerné.

Ce que je recherche à faire c’est de pouvoir afficher les enfants et le conjoint d’un individu à partir de son ID_INDIVIDU que celui-ci se trouve stocké dans ID_EPOUX ou ID_EPOUSE.

J’ai essayé avec une boucle de type <BOUCLE_fam(GENEA_FAMILLES) {id_epoux ?} {id_epouse ?}> mais cela m’affiche toutes les fiches contenues dans la table.

Alors j’ai eu l’idée de créer une fonction critère appelé conjointe et est appelé de la façon suivante : <BOUCLE_fam(GENEA_FAMILLES) {conjointe=#ID_INDIVIDU}> et dont le code est :

function critere_conjoint($idb, &$boucles, $crit){

global $table_prefix;

$op=’’;

$boucle = &$boucles[$idb];

$params = $crit->param;

$type = array_shift($params);

$type = $type[0]->texte;

if(preg_match(’,^(\w+)([<>=])([0-9]+)$,’,$type,$r)){

$type=$r[1];

$op=$r[2];

$op_val=$r[3];

}

$boucle->where[] = ‹ ( ›’. $boucle->id_table .’.id_epoux’=’.$op_val.’ OR ‹  ›. $boucle->id_table .’.id_epouse’=’.$op_val.’)’;

}

Mais cela engendre l’erreur suivante : <BOUCLE_descendant>(genea_familles)
**Erreur MySQL**
genea_familles.id_epoux, genea_familles.id_epouse FROM spip_genea_familles AS genea_familles WHERE (conjoint = '1')
**Unknown column 'conjoint' in 'where clause'**
</BOUCLE_descendant>

Voila quelqu’un aurait-il une idée pour m’aider ?

Merci d’avance.

Xavier BUROT

http://xebiaut.free.fr/

Xavier BUROT a écrit :

Je bute sur un petit problème dans la création d’un plugin de généalogie.

Excellente idée ! J'étais en train de me demander comment adapter un de mes SPIP à ce genre de sport...

Voila quelqu’un aurait-il une idée pour m’aider ?

Je suis en train de me plonger dans les jointures - une page web qui
pourrait t'intéresser est

  Jonctions Entre Tables

('and references therein' comme dit l'expression consacrée). Mais je
n'en suis pas là encore, je ne te garantis pas que la méthode proposée
fonctionne (il est indiqué 1.8.2 comme version de référence) ...

  /v

--
Vincent Beffara
UMPA - ENS-Lyon
46 allée d'Italie
69364 Lyon Cedex 07
Tél : 04 72 72 85 25

Ce n'est pas une jonction de table que je veux faire, mais simplement tester
si une valeur est présente dans l'un ou l'autre des champs d'une table.

Ma table SPIP_GENEA_FAMILLES contient ID_EPOUX et ID_EPOUSE qui eux même
contienne l'identifiant ID_INDIVIDU de l'époux et de l'épouse (donc deux
ID_INDIVIDU différents) qui compose la famille.

Est-ce plus clair maintenant ?

-----Message d'origine-----
De : Vincent Beffara [mailto:vbeffara+ml@gmail.com]
Envoyé : dimanche 9 mars 2008 18:22
À : Xavier BUROT
Cc : 'spip rezo rezo'; spip-zone@rezo.net
Objet : Re: [Spip] Creation d'un critere specifique pour une boucle

Voila quelqu’un aurait-il une idée pour m’aider ?

Je suis en train de me plonger dans les jointures - une page web qui
pourrait t'intéresser est

  Jonctions Entre Tables

('and references therein' comme dit l'expression consacrée). Mais je
n'en suis pas là encore, je ne te garantis pas que la méthode proposée
fonctionne (il est indiqué 1.8.2 comme version de référence) ...

  /v

--
Vincent Beffara
UMPA - ENS-Lyon
46 allée d'Italie
69364 Lyon Cedex 07
Tél : 04 72 72 85 25

Ce n'est pas une jonction de table que je veux faire, mais simplement tester
si une valeur est présente dans l'un ou l'autre des champs d'une table.

Ma table SPIP_GENEA_FAMILLES contient ID_EPOUX et ID_EPOUSE qui eux même
contienne l'identifiant ID_INDIVIDU de l'époux et de l'épouse (donc deux
ID_INDIVIDU différents) qui compose la famille.

Est-ce plus clair maintenant ?

Oups, lu trop vite ! Je vois des jonctions partout ! Aaargh !

Désolé,

  /v

--
Vincent Beffara
UMPA - ENS-Lyon
46 allée d'Italie
69364 Lyon Cedex 07
Tél : 04 72 72 85 25