Creation d'une table de jointure

Bonjour,

Je me trouve devant une petite difficulté. J'aimerais adjoindre à la table
SPIP_RUBRIQUES le champs id_genea sans pour autant l'ajouter à cette table.

J'ai lu la doc et j'ai vu que cela est possible avec $tables_relations
(remplacées par $tables_jointures depuis la version 1.9.2).

J'ai donc fait comme dans l'exemple, j'ai créé la table suivante :

$spip_genea = array(
     "id_genea" => "BIGINT(21) NOT NULL AUTO_INCREMENT",
     "id_rubrique" => "BIGINT(21) DEFAULT '0' NOT NULL");

$spip_genea_key = array(
   "PRIMARY KEY" => "id_genea, id_rubrique",
   "KEY id_rubrique" => "id_rubrique");

$tables_principales[$table_prefix.'_genea'] = array(
   'field' => &$spip_genea,
   'key' => &$spip_genea_key);

$table_des_tables['genea'] = "genea";
$table_primary['genea'] = "id_genea";

et j'ai inséré à la fin la déclaration suivante :
$tables_jointures['rubriques']['id_genea'] = 'genea';

Mais lorsque j'appelle la balise #ID_GENEA dans ma boucle RUBRIQUES rien ne se
passe.

Quelqu'un aurait-il une idée d'où j'ai merdé ?

Merci d'avance pour votre aide.

Cordialement,

Xavier BUROT
http://xebiaut.free.fr

Xavier BUROT wrote:

Bonjour,

Je me trouve devant une petite difficulté. J'aimerais adjoindre à la table
SPIP_RUBRIQUES le champs id_genea sans pour autant l'ajouter à cette table.

J'ai lu la doc et j'ai vu que cela est possible avec $tables_relations
(remplacées par $tables_jointures depuis la version 1.9.2).

J'ai donc fait comme dans l'exemple, j'ai créé la table suivante :

$spip_genea = array(
     "id_genea" => "BIGINT(21) NOT NULL AUTO_INCREMENT",
     "id_rubrique" => "BIGINT(21) DEFAULT '0' NOT NULL");

$spip_genea_key = array(
   "PRIMARY KEY" => "id_genea, id_rubrique",
   "KEY id_rubrique" => "id_rubrique");

$tables_principales[$table_prefix.'_genea'] = array(
   'field' => &$spip_genea,
   'key' => &$spip_genea_key);

$table_des_tables['genea'] = "genea";
$table_primary['genea'] = "id_genea";

et j'ai inséré à la fin la déclaration suivante :
$tables_jointures['rubriques']['id_genea'] = 'genea';

Mais lorsque j'appelle la balise #ID_GENEA dans ma boucle RUBRIQUES rien ne se
passe.

Quelqu'un aurait-il une idée d'où j'ai merdé ?

Merci d'avance pour votre aide.

Cordialement,

Xavier BUROT
http://xebiaut.free.fr

Heu je crois que pour la jointure il te faut aussi préciser avec quelle "table" tu veux la faire donc :

SOIT une <BOUCLE_toto_(RUBRIQUES GENEA)...>
SOIT une imbrication <BOUCLE_titi(RUBRIQUES)... > <BOUCLE_tutu(GENEA){id_rubrique}...>

Enfin j'avoue n'avoir pas creusé cette partie là de SPIP :confused:

--Chryjs

Xavier BUROT a écrit :

Bonjour,

Je me trouve devant une petite difficulté. J'aimerais adjoindre à la table
SPIP_RUBRIQUES le champs id_genea sans pour autant l'ajouter à cette table.

c'est une table de jointure vers une autre table, pour faire des relations n<->n, c'est ca ?

J'ai lu la doc et j'ai vu que cela est possible avec $tables_relations
(remplacées par $tables_jointures depuis la version 1.9.2).

J'ai donc fait comme dans l'exemple, j'ai créé la table suivante :

$spip_genea = array(
     "id_genea" => "BIGINT(21) NOT NULL AUTO_INCREMENT",
     "id_rubrique" => "BIGINT(21) DEFAULT '0' NOT NULL");

oui

$spip_genea_key = array(
   "PRIMARY KEY" => "id_genea, id_rubrique",
   "KEY id_rubrique" => "id_rubrique");

oui

$tables_principales[$table_prefix.'_genea'] = array(
   'field' => &$spip_genea,
   'key' => &$spip_genea_key);

je le metterais plutot en table auxiliaire (sauf si le but est de faire une boucle(GENEA)

d'ailleurs, par convention de nommage, elle devrait plutot s'appeler spip_geneas_rubriques

On ne s'occupe pas du prefixe à ce stade

$table_des_tables['genea'] = "genea";
$table_primary['genea'] = "id_genea";

oui

=====================================
et j'ai inséré à la fin la déclaration suivante :
$tables_jointures['rubriques']['id_genea'] = 'genea';

c'est plutot $tables_jointures['spip_rubriques'] = 'geneas_rubriques';

et sans doute sa reciproque : $tables_jointures['spip_geneas'] = 'geneas_rubriques';

Mais lorsque j'appelle la balise #ID_GENEA dans ma boucle RUBRIQUES rien ne se
passe.

avec $tables_jointures['spip_rubriques'] au lieu de $tables_jointures['rubriques'] ca devrait marcher

@++

Je connais très bien cette forme de jointure pour l'utiliser souvent dans mes
squelettes. Mais ce que je voudrais c'est faire un truc comme pour le
référencement des documents dans un article, ou même un auteur.

Et j'amerais surtout une fonction qui soit transparente pour les utilisateurs de
mon plugins.

Cordialement,

Xavier BUROT

Selon chryjs <chryjs@free.fr>:

Xavier BUROT wrote:
> Bonjour,
>
> Je me trouve devant une petite difficulté. J'aimerais adjoindre à la table
> SPIP_RUBRIQUES le champs id_genea sans pour autant l'ajouter à cette table.
>
> J'ai lu la doc et j'ai vu que cela est possible avec $tables_relations
> (remplacées par $tables_jointures depuis la version 1.9.2).
>
> J'ai donc fait comme dans l'exemple, j'ai créé la table suivante :
> =====================================
> $spip_genea = array(
> "id_genea" => "BIGINT(21) NOT NULL AUTO_INCREMENT",
> "id_rubrique" => "BIGINT(21) DEFAULT '0' NOT NULL");
>
> $spip_genea_key = array(
> "PRIMARY KEY" => "id_genea, id_rubrique",
> "KEY id_rubrique" => "id_rubrique");
>
> $tables_principales[$table_prefix.'_genea'] = array(
> 'field' => &$spip_genea,
> 'key' => &$spip_genea_key);
>
> $table_des_tables['genea'] = "genea";
> $table_primary['genea'] = "id_genea";
> =====================================
> et j'ai inséré à la fin la déclaration suivante :
> $tables_jointures['rubriques']['id_genea'] = 'genea';
>
> Mais lorsque j'appelle la balise #ID_GENEA dans ma boucle RUBRIQUES rien ne
se
> passe.
>
> Quelqu'un aurait-il une idée d'où j'ai merdé ?
>
> Merci d'avance pour votre aide.
>
> Cordialement,
>
> Xavier BUROT
> http://xebiaut.free.fr
>
>
>

Heu je crois que pour la jointure il te faut aussi préciser avec quelle
"table" tu veux la faire donc :

SOIT une <BOUCLE_toto_(RUBRIQUES GENEA)...>
SOIT une imbrication <BOUCLE_titi(RUBRIQUES)... >
<BOUCLE_tutu(GENEA){id_rubrique}...>

Enfin j'avoue n'avoir pas creusé cette partie là de SPIP :confused:

--Chryjs

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : FAQ webmestre - SPIP

Selon Stephane <stephane@rezo.net>:

Xavier BUROT a écrit :
> Bonjour,
>
> Je me trouve devant une petite difficulté. J'aimerais adjoindre à la table
> SPIP_RUBRIQUES le champs id_genea sans pour autant l'ajouter à cette table.

c'est une table de jointure vers une autre table, pour faire des
relations n<->n, c'est ca ?

>
> J'ai lu la doc et j'ai vu que cela est possible avec $tables_relations
> (remplacées par $tables_jointures depuis la version 1.9.2).
>
> J'ai donc fait comme dans l'exemple, j'ai créé la table suivante :
> =====================================
> $spip_genea = array(
> "id_genea" => "BIGINT(21) NOT NULL AUTO_INCREMENT",
> "id_rubrique" => "BIGINT(21) DEFAULT '0' NOT NULL");
>

oui

> $spip_genea_key = array(
> "PRIMARY KEY" => "id_genea, id_rubrique",
> "KEY id_rubrique" => "id_rubrique");

oui

>
> $tables_principales[$table_prefix.'_genea'] = array(
> 'field' => &$spip_genea,
> 'key' => &$spip_genea_key);

je le metterais plutot en table auxiliaire (sauf si le but est de faire
une boucle(GENEA)

d'ailleurs, par convention de nommage, elle devrait plutot s'appeler
spip_geneas_rubriques

On ne s'occupe pas du prefixe à ce stade

J'ai donc modifier le nom de ma table en spip_geneas_rubriques et transformer
$tables_principales en $tables_auxilliaires.

>
> $table_des_tables['genea'] = "genea";
> $table_primary['genea'] = "id_genea";

oui

> =====================================
> et j'ai inséré à la fin la déclaration suivante :
> $tables_jointures['rubriques']['id_genea'] = 'genea';

c'est plutot $tables_jointures['spip_rubriques'] = 'geneas_rubriques';

et sans doute sa reciproque : $tables_jointures['spip_geneas'] =
'geneas_rubriques';

Il n'y a pas de reciproque car la table spip_geneas_rubriques est là pour faire
l'interface entre une rubrique et les différentes tables qui composent l'arbre
généalogique.

>
> Mais lorsque j'appelle la balise #ID_GENEA dans ma boucle RUBRIQUES rien ne
se
> passe.

avec $tables_jointures['spip_rubriques'] au lieu de
$tables_jointures['rubriques'] ca devrait marcher

J'ai essayé et cela ne fonctionne pas. Une autre idée ?

@++
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : FAQ webmestre - SPIP