Inscription2 et balises dédiées

Je viens d’installer la dernière version de ce plugin et il fonctionne parfaitement. Je vois que tous les soucis passés et erreurs qui plombaient le fonctionnement du plugin il y a encore deux mois en ce qui me concerne sont envolés ! Un grand merci à Booz, cmtmt et kent1 !

Une petite question pratique : si je veux reprendre une des données d’inscription2 dans une boucle auteur, cela fonctionne-t-il avec des balises du genre #PRENOM ? Et si oui, y a-t-il une liste de ces balises ?

Voici un exemple pour accueillir un membre dans la partie dédiée :

<code><div class="texte">Bienvenue<BOUCLE_auteurs(AUTEURS) {id_auteur=#SESSION{id_auteur}}>, [(#PRENOM)]</BOUCLE_auteurs> !</div></code>

Encore bravo :wink:

Bonjour,

Il me semble que tu peux utiliser les balises qui ont été introduites
par le plugin Auteurs Complets qui est l'ancêtre du plugin
Inscription2:

Cordialement,

Teddy Payet

Le 05/10/07, Christophe Danaux<info@sentiers.be> a écrit :

Je viens d'installer la dernière version de ce plugin et il fonctionne
parfaitement. Je vois que tous les soucis passés et erreurs qui
plombaient le fonctionnement du plugin il y a encore deux mois en ce qui
me concerne sont envolés ! Un grand merci à Booz, cmtmt et kent1 !

Une petite question pratique : si je veux reprendre une des données
d'inscription2 dans une boucle auteur, cela fonctionne-t-il avec des
balises du genre #PRENOM ? Et si oui, y a-t-il une liste de ces balises ?

Voici un exemple pour accueillir un membre dans la partie dédiée :

<code><div class="texte">Bienvenue<BOUCLE_auteurs(AUTEURS)
{id_auteur=#SESSION{id_auteur}}>, [(#PRENOM)]</BOUCLE_auteurs>
!</div></code>

Encore bravo :wink:

_______________________________________________
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

Hello,

En fait c'est du standard SPIP.

Ce n'est pas ininterressant d'en dire deux mots.

Comme vous le savez SPIP permet de boucler sur n'importe quelle table avec une <BOUCLE1(LA_TABLE)> et chacun des champs de la table est accessible via les balises #MON_CHAMP.

Par exemple, pour les auteurs, on a une une table spip_auteurs avec un champs email. Ce qui donne (le SPIP_ etant facultatif)

<BOUCLE1(AUTEURS){id_auteur =1}>
#EMAIL
</BOUCLE1>

Ensuite on veut aller chercher les infos supplémentaires de la table spip_auteurs_elargis, qui sont reliées à la table spip_auteurs par un champs id_auteur commun aux deux tables.

Donc rien de compliqué, on utilise la notation de "jointure" automatique des boucles SPIP.

<BOUCLE1(AUTEURS spip_auteurs_elargis){id_auteur =1}>
#EMAIL
#PRENOM
</BOUCLE1>

Ici le mail affiché est stocké dans la table spip_auteurs, et le prénom dans la table spip_auteurs_elargis.

Ce n'est pas un fonctionnement propre au plugin inscription2, c'est le fonctionnement du compilo de spip qui permet cela avec n'importe quelle table (et même avec des tables qui sont sur un autre serveur dans une autre bdd).

En bricolant un peu le plugin, on pourrait aussi inventer une nouvelle boucle, avec une couche virtuelle supplémentaire, qui permettrait d'écrire

<BOUCLE1(INSCRITS){id_auteur =1}>
#EMAIL
#PRENOM
</BOUCLE1>

BoOz

Christophe Danaux wrote:

Je viens d’installer la dernière version de ce plugin et il fonctionne parfaitement. Je vois que tous les soucis passés et erreurs qui plombaient le fonctionnement du plugin il y a encore deux mois en ce qui me concerne sont envolés ! Un grand merci à Booz, cmtmt et kent1 !

Une petite question pratique : si je veux reprendre une des données d’inscription2 dans une boucle auteur, cela fonctionne-t-il avec des balises du genre #PRENOM ? Et si oui, y a-t-il une liste de ces balises ?

Voici un exemple pour accueillir un membre dans la partie dédiée :

<code><div class="texte">Bienvenue<BOUCLE_auteurs(AUTEURS) {id_auteur=#SESSION{id_auteur}}>, [(#PRENOM)]</BOUCLE_auteurs> !</div></code>

Encore bravo :wink:

Bonjour,

C'est ce que j'ai fait, mais rien ne s'affiche...

Teddy Payet a écrit :

Bonjour,

Il me semble que tu peux utiliser les balises qui ont été introduites
par le plugin Auteurs Complets qui est l'ancêtre du plugin
Inscription2:
Plugin Auteurs Complets (obsolète) - SPIP-Contrib
Inscription2 - SPIP-Contrib

Cordialement,

Teddy Payet

Le 05/10/07, Christophe Danaux<info@sentiers.be> a écrit :

Je viens d'installer la dernière version de ce plugin et il fonctionne
parfaitement. Je vois que tous les soucis passés et erreurs qui
plombaient le fonctionnement du plugin il y a encore deux mois en ce qui
me concerne sont envolés ! Un grand merci à Booz, cmtmt et kent1 !

Une petite question pratique : si je veux reprendre une des données
d'inscription2 dans une boucle auteur, cela fonctionne-t-il avec des
balises du genre #PRENOM ? Et si oui, y a-t-il une liste de ces balises ?

Voici un exemple pour accueillir un membre dans la partie dédiée :

<code><div class="texte">Bienvenue<BOUCLE_auteurs(AUTEURS)
{id_auteur=#SESSION{id_auteur}}>, [(#PRENOM)]</BOUCLE_auteurs>
!</div></code>

Encore bravo :wink:

_______________________________________________
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

Bonjour,

J'ai essayé ça :

<BOUCLE1(AUTEURS) {id_auteur=#SESSION{id_auteur}}>, #NOM</BOUCLE1>

et ça marche, mais quand je fais ce que tu dis :

<BOUCLE1(AUTEURS spip_auteurs_elargis) {id_auteur=#SESSION{id_auteur}}>, #PRENOM</BOUCLE1>

rien ne va plus...

J'ai alors le message d'erreur suivant :

# Erreur(s) dans le squelette

     * <BOUCLE1>(auteurs)
       Erreur MySQL
       J0.prenom FROM spip_auteurs_elargis AS `J0`, spip_auteurs AS `auteurs`, spip_auteurs_articles AS `lien`, spip_articles AS `articles` WHERE (auteurs.id_auteur = '1') AND (auteurs.id = J0.id) AND (lien.id_auteur = auteurs.id_auteur) AND (lien.id_article = articles.id_article) AND (articles.statut = "publie") AND (auteurs.statut != "5poubelle") GROUP BY auteurs.id_auteur
       Unknown column 'auteurs.id' in 'where clause'
       </BOUCLE1>

BoOz a écrit :

Hello,

En fait c'est du standard SPIP.

Ce n'est pas ininterressant d'en dire deux mots.

Comme vous le savez SPIP permet de boucler sur n'importe quelle table avec une <BOUCLE1(LA_TABLE)> et chacun des champs de la table est accessible via les balises #MON_CHAMP.

Par exemple, pour les auteurs, on a une une table spip_auteurs avec un champs email. Ce qui donne (le SPIP_ etant facultatif)

<BOUCLE1(AUTEURS){id_auteur =1}>
#EMAIL
</BOUCLE1>

Ensuite on veut aller chercher les infos supplémentaires de la table spip_auteurs_elargis, qui sont reliées à la table spip_auteurs par un champs id_auteur commun aux deux tables.

Donc rien de compliqué, on utilise la notation de "jointure" automatique des boucles SPIP.

<BOUCLE1(AUTEURS spip_auteurs_elargis){id_auteur =1}>
#EMAIL
#PRENOM
</BOUCLE1>

Ici le mail affiché est stocké dans la table spip_auteurs, et le prénom dans la table spip_auteurs_elargis.

Ce n'est pas un fonctionnement propre au plugin inscription2, c'est le fonctionnement du compilo de spip qui permet cela avec n'importe quelle table (et même avec des tables qui sont sur un autre serveur dans une autre bdd).

En bricolant un peu le plugin, on pourrait aussi inventer une nouvelle boucle, avec une couche virtuelle supplémentaire, qui permettrait d'écrire

<BOUCLE1(INSCRITS){id_auteur =1}>
#EMAIL
#PRENOM
</BOUCLE1>

BoOz

Christophe Danaux wrote:

Je viens d’installer la dernière version de ce plugin et il fonctionne parfaitement. Je vois que tous les soucis passés et erreurs qui plombaient le fonctionnement du plugin il y a encore deux mois en ce qui me concerne sont envolés ! Un grand merci à Booz, cmtmt et kent1 !

Une petite question pratique : si je veux reprendre une des données d’inscription2 dans une boucle auteur, cela fonctionne-t-il avec des balises du genre #PRENOM ? Et si oui, y a-t-il une liste de ces balises ?

Voici un exemple pour accueillir un membre dans la partie dédiée :

<code><div class="texte">Bienvenue<BOUCLE_auteurs(AUTEURS) {id_auteur=#SESSION{id_auteur}}>, [(#PRENOM)]</BOUCLE_auteurs> !</div></code>

Encore bravo :wink:

Alors, premierement ce que tu veux faire est prévu par le plugin, il faut mettre dans un squelette la commande :

<INCLURE(inc/profil_adherent.php){id_auteur = #SESSION{id_auteur}}>

Bonus, le truc est éditable avec les crayons (si on est bien à jour).

J'utilise personnellement la commande suivante qui fonctionne, c'est mla meme que l'autre mais dans l'uatre sens en effet.

<BOUCLE_auteur(AUTEURS){id_auteur = #SESSION{id_auteur}}{tout}>
  <BOUCLE_auteur_elargi(AUTEURS_ELARGIS auteurs){id_auteur}>

BoOz

Christophe Danaux wrote:

Bonjour,

J'ai essayé ça :

<BOUCLE1(AUTEURS) {id_auteur=#SESSION{id_auteur}}>, #NOM</BOUCLE1>

et ça marche, mais quand je fais ce que tu dis :

<BOUCLE1(AUTEURS spip_auteurs_elargis) {id_auteur=#SESSION{id_auteur}}>, #PRENOM</BOUCLE1>

rien ne va plus...

J'ai alors le message d'erreur suivant :

# Erreur(s) dans le squelette

     * <BOUCLE1>(auteurs)
       Erreur MySQL
       J0.prenom FROM spip_auteurs_elargis AS `J0`, spip_auteurs AS `auteurs`, spip_auteurs_articles AS `lien`, spip_articles AS `articles` WHERE (auteurs.id_auteur = '1') AND (auteurs.id = J0.id) AND (lien.id_auteur = auteurs.id_auteur) AND (lien.id_article = articles.id_article) AND (articles.statut = "publie") AND (auteurs.statut != "5poubelle") GROUP BY auteurs.id_auteur
       Unknown column 'auteurs.id' in 'where clause'
       </BOUCLE1>

BoOz a écrit :

Hello,

En fait c'est du standard SPIP.

Ce n'est pas ininterressant d'en dire deux mots.

Comme vous le savez SPIP permet de boucler sur n'importe quelle table avec une <BOUCLE1(LA_TABLE)> et chacun des champs de la table est accessible via les balises #MON_CHAMP.

Par exemple, pour les auteurs, on a une une table spip_auteurs avec un champs email. Ce qui donne (le SPIP_ etant facultatif)

<BOUCLE1(AUTEURS){id_auteur =1}>
#EMAIL
</BOUCLE1>

Ensuite on veut aller chercher les infos supplémentaires de la table spip_auteurs_elargis, qui sont reliées à la table spip_auteurs par un champs id_auteur commun aux deux tables.

Donc rien de compliqué, on utilise la notation de "jointure" automatique des boucles SPIP.

<BOUCLE1(AUTEURS spip_auteurs_elargis){id_auteur =1}>
#EMAIL
#PRENOM
</BOUCLE1>

Ici le mail affiché est stocké dans la table spip_auteurs, et le prénom dans la table spip_auteurs_elargis.

Ce n'est pas un fonctionnement propre au plugin inscription2, c'est le fonctionnement du compilo de spip qui permet cela avec n'importe quelle table (et même avec des tables qui sont sur un autre serveur dans une autre bdd).

En bricolant un peu le plugin, on pourrait aussi inventer une nouvelle boucle, avec une couche virtuelle supplémentaire, qui permettrait d'écrire

<BOUCLE1(INSCRITS){id_auteur =1}>
#EMAIL
#PRENOM
</BOUCLE1>

BoOz

Christophe Danaux wrote:

Je viens d’installer la dernière version de ce plugin et il fonctionne parfaitement. Je vois que tous les soucis passés et erreurs qui plombaient le fonctionnement du plugin il y a encore deux mois en ce qui me concerne sont envolés ! Un grand merci à Booz, cmtmt et kent1 !

Une petite question pratique : si je veux reprendre une des données d’inscription2 dans une boucle auteur, cela fonctionne-t-il avec des balises du genre #PRENOM ? Et si oui, y a-t-il une liste de ces balises ?

Voici un exemple pour accueillir un membre dans la partie dédiée :

<code><div class="texte">Bienvenue<BOUCLE_auteurs(AUTEURS) {id_auteur=#SESSION{id_auteur}}>, [(#PRENOM)]</BOUCLE_auteurs> !</div></code>

Encore bravo :wink:

La boucle imbriquée fonctionne impeccablement ! Merci :wink:

Ca me permet de placer un message du genre "Bienvenue, #PRENOM !" dans la pemière page de la section réservée aux auteurs...

Par contre, pour quand je place le formulaire #FORMULAIRE_INSCRIPTION2 sur une page, rien ne s'affiche :frowning:

BoOz a écrit :

Alors, premierement ce que tu veux faire est prévu par le plugin, il faut mettre dans un squelette la commande :

<INCLURE(inc/profil_adherent.php){id_auteur = #SESSION{id_auteur}}>

Bonus, le truc est éditable avec les crayons (si on est bien à jour).

J'utilise personnellement la commande suivante qui fonctionne, c'est mla meme que l'autre mais dans l'uatre sens en effet.

<BOUCLE_auteur(AUTEURS){id_auteur = #SESSION{id_auteur}}{tout}>
  <BOUCLE_auteur_elargi(AUTEURS_ELARGIS auteurs){id_auteur}>

BoOz

Christophe Danaux wrote:

Bonjour,

J'ai essayé ça :

<BOUCLE1(AUTEURS) {id_auteur=#SESSION{id_auteur}}>, #NOM</BOUCLE1>

et ça marche, mais quand je fais ce que tu dis :

<BOUCLE1(AUTEURS spip_auteurs_elargis) {id_auteur=#SESSION{id_auteur}}>, #PRENOM</BOUCLE1>

rien ne va plus...

J'ai alors le message d'erreur suivant :

# Erreur(s) dans le squelette

     * <BOUCLE1>(auteurs)
       Erreur MySQL
       J0.prenom FROM spip_auteurs_elargis AS `J0`, spip_auteurs AS `auteurs`, spip_auteurs_articles AS `lien`, spip_articles AS `articles` WHERE (auteurs.id_auteur = '1') AND (auteurs.id = J0.id) AND (lien.id_auteur = auteurs.id_auteur) AND (lien.id_article = articles.id_article) AND (articles.statut = "publie") AND (auteurs.statut != "5poubelle") GROUP BY auteurs.id_auteur
       Unknown column 'auteurs.id' in 'where clause'
       </BOUCLE1>

BoOz a écrit :

Hello,

En fait c'est du standard SPIP.

Ce n'est pas ininterressant d'en dire deux mots.

Comme vous le savez SPIP permet de boucler sur n'importe quelle table avec une <BOUCLE1(LA_TABLE)> et chacun des champs de la table est accessible via les balises #MON_CHAMP.

Par exemple, pour les auteurs, on a une une table spip_auteurs avec un champs email. Ce qui donne (le SPIP_ etant facultatif)

<BOUCLE1(AUTEURS){id_auteur =1}>
#EMAIL
</BOUCLE1>

Ensuite on veut aller chercher les infos supplémentaires de la table spip_auteurs_elargis, qui sont reliées à la table spip_auteurs par un champs id_auteur commun aux deux tables.

Donc rien de compliqué, on utilise la notation de "jointure" automatique des boucles SPIP.

<BOUCLE1(AUTEURS spip_auteurs_elargis){id_auteur =1}>
#EMAIL
#PRENOM
</BOUCLE1>

Ici le mail affiché est stocké dans la table spip_auteurs, et le prénom dans la table spip_auteurs_elargis.

Ce n'est pas un fonctionnement propre au plugin inscription2, c'est le fonctionnement du compilo de spip qui permet cela avec n'importe quelle table (et même avec des tables qui sont sur un autre serveur dans une autre bdd).

En bricolant un peu le plugin, on pourrait aussi inventer une nouvelle boucle, avec une couche virtuelle supplémentaire, qui permettrait d'écrire

<BOUCLE1(INSCRITS){id_auteur =1}>
#EMAIL
#PRENOM
</BOUCLE1>

BoOz

Christophe Danaux wrote:

Je viens d’installer la dernière version de ce plugin et il fonctionne parfaitement. Je vois que tous les soucis passés et erreurs qui plombaient le fonctionnement du plugin il y a encore deux mois en ce qui me concerne sont envolés ! Un grand merci à Booz, cmtmt et kent1 !

Une petite question pratique : si je veux reprendre une des données d’inscription2 dans une boucle auteur, cela fonctionne-t-il avec des balises du genre #PRENOM ? Et si oui, y a-t-il une liste de ces balises ?

Voici un exemple pour accueillir un membre dans la partie dédiée :

<code><div class="texte">Bienvenue<BOUCLE_auteurs(AUTEURS) {id_auteur=#SESSION{id_auteur}}>, [(#PRENOM)]</BOUCLE_auteurs> !</div></code>

Encore bravo :wink:

BoOz a écrit :

Comme vous le savez SPIP permet de boucler sur n'importe quelle table avec une <BOUCLE1(LA_TABLE)> et chacun des champs de la table est accessible via les balises #MON_CHAMP.

C'est sympa cette description pédagogique,
merci Booz !

Mais si le nom de la table ne commence pas pas spip_,
ça ne marche pas ! Ou alors avec la 1.9.3 de dev ?

JLuc

BoOz a écrit :

Hello,

En fait c'est du standard SPIP.

Ce n'est pas ininterressant d'en dire deux mots.

merci Booz.

aller, soyons fous, j'en rajoute une couche !

Comme vous le savez SPIP permet de boucler sur n'importe quelle table avec une <BOUCLE1(LA_TABLE)> et chacun des champs de la table est accessible via les balises #MON_CHAMP.

Par exemple, pour les auteurs, on a une une table spip_auteurs avec un champs email. Ce qui donne (le SPIP_ etant facultatif)

en fait, pour bien comprendre, ce qu'on peut faire c'est :
<BOUCLE1(NOM_LOGIQUE)>
ou
<BOUCLE1(nom_physique)>

quand on utilise les majuscules, on dit à spip d'aller piocher dans son parametrage (la globale tables_des_tables, et en 1.9.3, les tables_auxiliaires sont egalement disponibles).
en minuscule, c'est le nom de la table qu'il faut passer (je crois que si ca commence par spip_, c'est remplacé par le prefixe mais je suis pas sur à 100%)

l'avantage de passer par des noms logiques, c'est qu'on peut avoir a un parametrage.
on peut "dire" à spip de faire une jointure, systematiquement ou si il rencontre un champ d'une table externe ou encore donner des noms logiques à des champs.
c'est ce qui permet de faire :
<BOUCLE1(ARTICLES){titre_mot}>
(la ca fait meme 2 jointures et on a un nom logique de champ, titre_mot etant titre dans la table spip_mots)

si tu fais <BOUCLE1(spip_articles){titre_mot}>, il va te jeter car titre_mot n'est pas un champ de la table spip_articles

<BOUCLE1(AUTEURS spip_auteurs_elargis){id_auteur =1}>
#EMAIL
#PRENOM
</BOUCLE1>

ca, ca devrait marcher, il faut juste declarer les jointures je pense.
d'un point de vue SQL, c'est mieux de faire ca que 2 requetes

<BOUCLE1(INSCRITS){id_auteur =1}>
#EMAIL
#PRENOM
</BOUCLE1>

ca c'est quand meme plus clean pour l'utilisateur

mais autant l'appeler :
<BOUCLE1(AUTEURS_ELARGIS){id_auteur =1}>
  #EMAIL
  #PRENOM
</BOUCLE1>

et declarer la table avec une jointure systematique vers AUTEURS
non ?
Ceci dit, ca n'est pas exactement la meme chose puisqu'ici, on ne récupèrera que ceux ayant un une fiche, pas les auteurs sans fiche.

une troisieme solution peut etre de faire un critere {auteur_elargi} et permettre comme ca de choisir entre jointure droite ou gauche, et meme pourquoi pas gerer le "not" (ceux qui n'ont pas de fiche).
En plus ce genre de critere pourrait s'utiliser sur n'importe quelle table ayant un id_auteur (forms_donnees par exemple)

mes 2 sous

PS : <BOUCLE1(SPIP_ARTICLES){titre_mot}>, je ne pense pas que ca marche

JLuc wrote:

BoOz a écrit :

Comme vous le savez SPIP permet de boucler sur n'importe quelle table avec une <BOUCLE1(LA_TABLE)> et chacun des champs de la table est accessible via les balises #MON_CHAMP.

C'est sympa cette description pédagogique,
merci Booz !

Mais si le nom de la table ne commence pas pas spip_,
ça ne marche pas ! Ou alors avec la 1.9.3 de dev ?

Si, mais alors c'est en minuscules

<BOUCLE1(ma_table){mon_champ=truc}>

BoOz

La réponse de booz est excellente mais comme il s'agit d'un how to je souhaite apporter une précision par rapport à mon expérience.

   1. En effet il faut que les noms de tables extérieures soient en
      minuscule.
   2. Ces tables ne doivent pas avoir obligatoirement un préfixe SPIP
   3. Et *surtout *pour qu'une jointure fonctionne l'ordre des tables
      dans la boucle a un rôle important. Pour moi en tout cas.

<BOUCLE1(ma_table1 ma_table2 ma_table3) {id_auteur={id_auteur}}>, #PRENOM</BOUCLE1>

ne sera pas interprétée comme

<BOUCLE1(ma_table3 ma_table2 ma_table1) {id_auteur={id_auteur}}>, #PRENOM</BOUCLE1>

je n'ai pas d'explication. Ce n'est que pratique. Je m'en suis aperçu avec la fonction ctrl-Z de mon éditeur. Dans un cas cela ne fonctionnait pas (le 1er) et après l'avoir reprogrammé cela fonctionnait et la différence n'était que l'ordre des tables. Une début d'explication serait peut être dans le préfixe JO pour jointure qui boucle sur lui même dans la requete SQL générée par SPIP.

Cordialement
Philippe

Christophe Danaux a écrit :

Bonjour,

J'ai essayé ça :

<BOUCLE1(AUTEURS) {id_auteur=#SESSION{id_auteur}}>, #NOM</BOUCLE1>

et ça marche, mais quand je fais ce que tu dis :

<BOUCLE1(AUTEURS spip_auteurs_elargis) {id_auteur=#SESSION{id_auteur}}>, #PRENOM</BOUCLE1>

rien ne va plus...

J'ai alors le message d'erreur suivant :

# Erreur(s) dans le squelette

     * <BOUCLE1>(auteurs)
       Erreur MySQL
       J0.prenom FROM spip_auteurs_elargis AS `J0`, spip_auteurs AS `auteurs`, spip_auteurs_articles AS `lien`, spip_articles AS `articles` WHERE (auteurs.id_auteur = '1') AND (auteurs.id = J0.id) AND (lien.id_auteur = auteurs.id_auteur) AND (lien.id_article = articles.id_article) AND (articles.statut = "publie") AND (auteurs.statut != "5poubelle") GROUP BY auteurs.id_auteur
       Unknown column 'auteurs.id' in 'where clause'
       </BOUCLE1>

BoOz a écrit :
  

Hello,

En fait c'est du standard SPIP.

Ce n'est pas ininterressant d'en dire deux mots.

Comme vous le savez SPIP permet de boucler sur n'importe quelle table avec une <BOUCLE1(LA_TABLE)> et chacun des champs de la table est accessible via les balises #MON_CHAMP.

Par exemple, pour les auteurs, on a une une table spip_auteurs avec un champs email. Ce qui donne (le SPIP_ etant facultatif)

<BOUCLE1(AUTEURS){id_auteur =1}>
#EMAIL
</BOUCLE1>

Ensuite on veut aller chercher les infos supplémentaires de la table spip_auteurs_elargis, qui sont reliées à la table spip_auteurs par un champs id_auteur commun aux deux tables.

Donc rien de compliqué, on utilise la notation de "jointure" automatique des boucles SPIP.

<BOUCLE1(AUTEURS spip_auteurs_elargis){id_auteur =1}>
#EMAIL
#PRENOM
</BOUCLE1>

Ici le mail affiché est stocké dans la table spip_auteurs, et le prénom dans la table spip_auteurs_elargis.

Ce n'est pas un fonctionnement propre au plugin inscription2, c'est le fonctionnement du compilo de spip qui permet cela avec n'importe quelle table (et même avec des tables qui sont sur un autre serveur dans une autre bdd).

En bricolant un peu le plugin, on pourrait aussi inventer une nouvelle boucle, avec une couche virtuelle supplémentaire, qui permettrait d'écrire

<BOUCLE1(INSCRITS){id_auteur =1}>
#EMAIL
#PRENOM
</BOUCLE1>

BoOz

Christophe Danaux wrote:
    

Je viens d’installer la dernière version de ce plugin et il fonctionne parfaitement. Je vois que tous les soucis passés et erreurs qui plombaient le fonctionnement du plugin il y a encore deux mois en ce qui me concerne sont envolés ! Un grand merci à Booz, cmtmt et kent1 !

Une petite question pratique : si je veux reprendre une des données d’inscription2 dans une boucle auteur, cela fonctionne-t-il avec des balises du genre #PRENOM ? Et si oui, y a-t-il une liste de ces balises ?

Voici un exemple pour accueillir un membre dans la partie dédiée :

<code><div class="texte">Bienvenue<BOUCLE_auteurs(AUTEURS) {id_auteur=#SESSION{id_auteur}}>, [(#PRENOM)]</BOUCLE_auteurs> !</div></code>

Encore bravo :wink:

_______________________________________________
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
---------------------------------------------------------------------------------------
Orange vous informe que cet e-mail a ete controle par l'anti-virus mail. Aucun virus connu a ce jour par nos services n'a ete detecte.

BoOz a écrit :

JLuc wrote:

Mais si le nom de la table ne commence pas pas spip_,
ça ne marche pas ! Ou alors avec la 1.9.3 de dev ?

Si, mais alors c'est en minuscules
<BOUCLE1(ma_table){mon_champ=truc}>

Merci pour cette lumineuse précision.
Ta réponse m'a redonné un immense espoir.
Je suis retourné à mes fourneaux et j'ai vu...
ben, que ben non, ça ne marchait pas !
Et puis je me suis aperçu
qu'il y avait une majuscule en initiale de ma table rebelle.

J'ai essayé avec une table sans majuscule dans le nom
et Oui, dans ce cas, ça marche !!!

Ne restent donc plus que les tables genre MesVideoX ou CaracteristiquesMateriaux
qui ne peuvent pas être interrogées.
(à moins que ?)

Au moins dans l'immédiat je sais que faire : renommer partout
pour utiliser spip avec cette table.

JLuc

PAvi a écrit :

<BOUCLE1(ma_table1 ma_table2 ma_table3) {id_auteur={id_auteur}}>, #PRENOM</BOUCLE1>

Quand tu écrit ={id_auteur}
les accolades ont elles un sens
et une nécessité particulière ?
une syntaxe particulière de spip dans ce cas?

ne sera pas interprétée comme

<BOUCLE1(ma_table3 ma_table2 ma_table1) {id_auteur={id_auteur}}>, #PRENOM</BOUCLE1>

Quand j'essaie, avec d'autres tables et critères {idannonce = id}
sans accolades, il prend le 2eme élément de comparaison du critère comme une constante
et avec accolades, pareil, mais avec accolade !
Dans un sens comme dans l'autres, ça ne passe pas,
les messages du debuguer indiquent qu'il entrave complètement à côté de la plaque.

JLuc

Il doit s'agir en fait de :

<BOUCLE1(ma_table1 ma_table2 ma_table3) {id_auteur=#ENV{id_auteur}}>
#PRENOM
</BOUCLE1>

Voire même

<BOUCLE1(ma_table1 ma_table2 ma_table3) {id_auteur}>
#PRENOM
</BOUCLE1>

la notation {id_auteur={id_auteur}} n'existe pas je crois.

BoOz

JLuc a écrit :

PAvi a écrit :

<BOUCLE1(ma_table1 ma_table2 ma_table3) {id_auteur={id_auteur}}>, #PRENOM</BOUCLE1>

Quand tu écrit ={id_auteur}
les accolades ont elles un sens
et une nécessité particulière ?
une syntaxe particulière de spip dans ce cas?

ne sera pas interprétée comme

<BOUCLE1(ma_table3 ma_table2 ma_table1) {id_auteur={id_auteur}}>, #PRENOM</BOUCLE1>

Quand j'essaie, avec d'autres tables et critères {idannonce = id}
sans accolades, il prend le 2eme élément de comparaison du critère comme une constante
et avec accolades, pareil, mais avec accolade !
Dans un sens comme dans l'autres, ça ne passe pas,
les messages du debuguer indiquent qu'il entrave complètement à côté de la plaque.

JLuc

BoOz a écrit :

Il doit s'agir en fait de :

<BOUCLE1(ma_table1 ma_table2 ma_table3) {id_auteur=#ENV{id_auteur}}>
#PRENOM
</BOUCLE1>

Voire même

<BOUCLE1(ma_table1 ma_table2 ma_table3) {id_auteur}>
#PRENOM
</BOUCLE1>

la notation {id_auteur={id_auteur}} n'existe pas je crois.

merci pour votre patience et vos explications.
la relecture de la doc indique élliptiquement
que la jointure automatique ne marche que pour des champs homonymes.
donc dans mon cas ça ne marche pas car ils ont des noms différents.

J'ai déjà réussi à interroger via spip les 2 tables externes,
après les avoir renommées sans majuscules,
maintenant j'explore la jointure
et pour cela donc je vais renommer les champs pour qu'ils soient homonymes...

JL

JLuc a écrit :

PAvi a écrit :
  

<BOUCLE1(ma_table1 ma_table2 ma_table3) {id_auteur={id_auteur}}>, #PRENOM</BOUCLE1>
    
Quand tu écrit ={id_auteur}
les accolades ont elles un sens
et une nécessité particulière ?
une syntaxe particulière de spip dans ce cas?

C'est inclus dans une boucle que ressort id_auteur

ne sera pas interprétée comme

<BOUCLE1(ma_table3 ma_table2 ma_table1) {id_auteur={id_auteur}}>, #PRENOM</BOUCLE1>
    
Quand j'essaie, avec d'autres tables et critères {idannonce = id}
sans accolades, il prend le 2eme élément de comparaison du critère comme une constante
et avec accolades, pareil, mais avec accolade !
Dans un sens comme dans l'autres, ça ne passe pas,
les messages du debuguer indiquent qu'il entrave complètement à côté de la plaque.

JLuc

id seul n'a pas vraiment de signification. Les critères dans les tables supplémentaires fonctionnent exactement comme dans les tables normales. Le spikini est intéressant à ce sujet mais je ne peux pas t'envoyer le lien car au moment ou j'écris il est inaccessible.
Philippe

_______________________________________________
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
---------------------------------------------------------------------------------------
Orange vous informe que cet e-mail a ete controle par l'anti-virus mail. Aucun virus connu a ce jour par nos services n'a ete detecte.

JLuc a écrit :

BoOz a écrit :

Il doit s'agir en fait de :

<BOUCLE1(ma_table1 ma_table2 ma_table3) {id_auteur=#ENV{id_auteur}}>
#PRENOM
</BOUCLE1>

Voire même

<BOUCLE1(ma_table1 ma_table2 ma_table3) {id_auteur}>
#PRENOM
</BOUCLE1>

la notation {id_auteur={id_auteur}} n'existe pas je crois.

merci pour votre patience et vos explications.
la relecture de la doc indique élliptiquement
que la jointure automatique ne marche que pour des champs homonymes.
donc dans mon cas ça ne marche pas car ils ont des noms différents.

il y a un mecanisme pour ca, mais je pense que ca ne concerne que les tables déclarée :

$exceptions_des_jointures['id_table1']= array('table2', 'id_table2');

tout cela doit etre remis à plat pour pouvoir declarer des jointures non-homonymes et des alias pour les noms des champs, mais je ne pense pas que ca sera dans la 1.9.3

@++

Stephane a écrit :

JLuc a écrit :

la jointure automatique ne marche que pour des champs homonymes.
donc dans mon cas ça ne marche pas car ils ont des noms différents.

il y a un mecanisme pour ca, mais je pense que ca ne concerne que les tables déclarée :

$exceptions_des_jointures['id_table1']= array('table2', 'id_table2');

ce que tu appelles "tables déclarées",
ce sont les tables qui sont déclarées explicitement en php
dans mes_fonctions.php
avec tables_principales [field] et [key]

(avec quelquechos du genre (issu d'un précédent post) :

global $tables_principales;
$tables_principales['spip_forums_documents']['field'] = array(
          "id_forum" => "BIGINT (21) DEFAULT '0' NOT NULL",
          "id_document" => "BIGINT (21) DEFAULT '0' NOT NULL");
$tables_principales['spip_forums_documents']['key'] = array(
          "KEY id_forum" => "id_forum",
          "KEY id_document" => "id_document");
)

??

JL

Oui, c'est ca.

Hehe JLuc, tu vas etre bon pour un tutorial sur le wiki avec toutes ces recherches que tu réalises en ce moment.

BoOz

JLuc wrote:

Stephane a écrit :

JLuc a écrit :

la jointure automatique ne marche que pour des champs homonymes.
donc dans mon cas ça ne marche pas car ils ont des noms différents.

il y a un mecanisme pour ca, mais je pense que ca ne concerne que les tables déclarée :

$exceptions_des_jointures['id_table1']= array('table2', 'id_table2');

ce que tu appelles "tables déclarées",
ce sont les tables qui sont déclarées explicitement en php
dans mes_fonctions.php
avec tables_principales [field] et [key]

(avec quelquechos du genre (issu d'un précédent post) :

global $tables_principales;
$tables_principales['spip_forums_documents']['field'] = array(
          "id_forum" => "BIGINT (21) DEFAULT '0' NOT NULL",
          "id_document" => "BIGINT (21) DEFAULT '0' NOT NULL");
$tables_principales['spip_forums_documents']['key'] = array(
          "KEY id_forum" => "id_forum",
          "KEY id_document" => "id_document");
)

??

JL

BoOz a écrit :

Oui, c'est ca.
Hehe JLuc, tu vas etre bon pour un tutorial sur le wiki avec toutes ces recherches que tu réalises en ce moment.

oui, je peux faire une compil de ce que j'ai sur le sujet
mais j'espère ne pas avoir besoin de déclarer explicitement des trucs en php
(1) pour ne pas avoir à tout refaire la prochaine fois que la structure interne bouge
et 2) car si php il y a, autant pas se tartiner l'exploration des méandres
des spécificités spipiennes)
alors sans expérience sur le sujet je ne peux faire que diffuser une rumeur
(ce ne sera pas du bouche à oreille, mais du newsgroup à wiki)
donc avec risques d'imprécisions voir erreurs.

Pour ce qui est possible sans php,
et que je met en oeuvre depuis quelques jours (merci à tous),
(et c'est le plus passionnant vu la facilité)
je trouverai dommage que ça ne soit pas dans la doc officielle.
(cf le message sur spipdev : ça tient en 6 lignes et demi
et ça ouvre des portes incommensurables...)

cecidit... oui...
JL

BoOz

JLuc wrote:

Stephane a écrit :

JLuc a écrit :

la jointure automatique ne marche que pour des champs homonymes.
donc dans mon cas ça ne marche pas car ils ont des noms différents.

il y a un mecanisme pour ca, mais je pense que ca ne concerne que les tables déclarée :

$exceptions_des_jointures['id_table1']= array('table2', 'id_table2');

ce que tu appelles "tables déclarées",
ce sont les tables qui sont déclarées explicitement en php
dans mes_fonctions.php
avec tables_principales [field] et [key]

(avec quelquechos du genre (issu d'un précédent post) :

global $tables_principales;
$tables_principales['spip_forums_documents']['field'] = array(
          "id_forum" => "BIGINT (21) DEFAULT '0' NOT NULL",
          "id_document" => "BIGINT (21) DEFAULT '0' NOT NULL");
$tables_principales['spip_forums_documents']['key'] = array(
          "KEY id_forum" => "id_forum",
          "KEY id_document" => "id_document");
)

??

JL