Comment utiliser {fusion} ?

Bonjour,

Qui utilise déjà le critère {fusion} ?

Dans la doc. SPIP http://www.spip.net/fr_article3567.html on le mentionne seulement en passant.

En particulier, je veux savoir comment obtenir dans la boucle le COUNT sql du nombre de lignes trouvées, lorsque j'utilise par ex. {fusion lang}. Est-ce possible ?

merci,
Paolo

* Paolo tapuscrivait, le 07/05/2010 10:56:

Bonjour,

Qui utilise déjà le critère {fusion} ?

Dans la doc. SPIP SPIP 1.9.2 - SPIP on le
mentionne seulement en passant.

En particulier, je veux savoir comment obtenir dans la boucle le COUNT
sql du nombre de lignes trouvées, lorsque j'utilise par ex. {fusion
lang}. Est-ce possible ?

Un exemple pour afficher un menu de langues uniquement s'il y en a plus d'une utilisée dans le site :
<BOUCLE_PlusDuneLangue(ARTICLES){par lang}{fusion lang}{1,1}>
<div id="menulangue">
<a name="formulaire_menu_lang" id="formulaire_menu_lang"></a>
<BOUCLE_ArticlePrincipal(ARTICLES){id_article=#ENV{id_article}}>
<BOUCLE_Traductions(ARTICLES){traduction}{par lang}{" | "}>[<#EXPOSE{span class="languencours",a href="spip.php?action=converser&amp;var_lang=#LANG&amp;redirect=#URL_ARTICLE"}>(#LANG)</#EXPOSE{span ,a}> ]</BOUCLE_Traductions>
</BOUCLE_ArticlePrincipal>
<BOUCLE_ListeLangue(ARTICLES){par lang}{fusion lang}{" | "}>
[<#EXPOSE{span class="languencours",a href="spip.php?action=converser&amp;var_lang=#LANG&amp;redirect=#SELF"}>(#LANG)</#EXPOSE{span ,a}> ]
</BOUCLE_ListeLangue>
<//B_ArticlePrincipal>
</div>
</BOUCLE_PlusDuneLangue>

Critère aussi utilisé dans le plugin svn://zone.spip.org/spip-zone/_plugins_/menu_langues_liens

-- RealET

On 07/05/10 11:17, RealET wrote:

Un exemple pour afficher un menu de langues uniquement s'il y en a plus
d'une utilisée dans le site :
<BOUCLE_PlusDuneLangue(ARTICLES){par lang}{fusion lang}{1,1}>

Merci, RealET,

Oui j'arrive à faire tourner une boucle comme celle-ci sans problème :

<BOUCLE_bilan(trad_lang){status = ''}{fusion lang}>
#LANG<br>
</BOUCLE_bilan>

qui me donne une liste de langues. Mais mon problème, c'est que j'ai besoin de connaître le COUNT -- c'est souvent pour cela qu'on utilise un GROUP BY n'est-ce pas ?

C'est à dire j'ai besoin de traduire en SPIP la requête SQL :

SELECT COUNT(id), lang FROM `trad_lang` WHERE status = '' GROUP BY lang

et je ne sais pas obtenir le « COUNT(id) »

Paolo

* Paolo tapuscrivait, le 07/05/2010 11:28:

On 07/05/10 11:17, RealET wrote:

Un exemple pour afficher un menu de langues uniquement s'il y en a plus
d'une utilisée dans le site :
<BOUCLE_PlusDuneLangue(ARTICLES){par lang}{fusion lang}{1,1}>

Merci, RealET,

Oui j'arrive à faire tourner une boucle comme celle-ci sans problème :

<BOUCLE_bilan(trad_lang){status = ''}{fusion lang}>
#LANG<br>
</BOUCLE_bilan>

qui me donne une liste de langues. Mais mon problème, c'est que j'ai
besoin de connaître le COUNT -- c'est souvent pour cela qu'on utilise un
GROUP BY n'est-ce pas ?

C'est à dire j'ai besoin de traduire en SPIP la requête SQL :

SELECT COUNT(id), lang FROM `trad_lang` WHERE status = '' GROUP BY lang

et je ne sais pas obtenir le « COUNT(id) »

#TOTAL_BOUCLE - SPIP devrait faire l'affaire, non ?

-- RealET

On 07/05/10 11:48, RealET wrote:

#TOTAL_BOUCLE - SPIP devrait faire
l'affaire, non ?

Non, du moins si c'est le cas je ne vois pas comment.

Paolo

Comme ça ?
<BOUCLE_bilan(trad_lang){status = ‹  ›}{fusion lang}>

#LANG
<BOUCLE_count_bilan(trad_lang){status = ‹  ›}{lang=#LANG} />#TOTAL_BOUCLE<//B_count_bilan>
</BOUCLE_bilan>

2010/5/7 Paolo <paolo2@taize.fr>

On 07/05/10 11:48, RealET wrote:

http://www.spip.net/fr_article4334.html#TOTAL_BOUCLE devrait faire
l’affaire, non ?

Non, du moins si c’est le cas je ne vois pas comment.

Paolo


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

On 07/05/10 11:57, Guy Cesaro wrote:

Comme ça ?
<BOUCLE_bilan(trad_lang){status = ''}{fusion lang}>

    #LANG<br><BOUCLE_count_bilan(trad_lang){status = ''}{lang=#LANG}
    />#TOTAL_BOUCLE<//B_count_bilan>
    </BOUCLE_bilan>

Même pas :

cela me donne une liste comme :
----- ar
39 bg
39 bn
39 ca
39 cs
39 da
39 de
39 en
39 es
39 et (ou 39 est le nombre de langues)

et je veux ce qui me donne
SELECT COUNT(id), lang FROM `trad_lang` WHERE status = '' GROUP BY lang
c.à dire le nombre de traductions par langue :

COUNT(id) lang
97 ar
96 bg
11 bn
13 ca
92 cs
96 da
98 de
102 en
98 es
94 et

Paolo

?? tiens, et peut être faut préciser pour le total boucle :
<BOUCLE_count_bilan(trad_lang){status = ‹  ›}{lang=#LANG}/>
#_count_bilan:TOTAL_BOUCLE
<//B_count_bilan>

Le 7 mai 2010 12:23, Paolo <paolo2@taize.fr> a écrit :

On 07/05/10 11:57, Guy Cesaro wrote:

Comme ça ?
<BOUCLE_bilan(trad_lang){status = ‹  ›}{fusion lang}>

#LANG
<BOUCLE_count_bilan(trad_lang){status = ‹  ›}{lang=#LANG}
/>#TOTAL_BOUCLE<//B_count_bilan>
</BOUCLE_bilan>

Même pas :

cela me donne une liste comme :
----- ar
39 bg
39 bn
39 ca
39 cs
39 da
39 de
39 en
39 es
39 et (ou 39 est le nombre de langues)

et je veux ce qui me donne

SELECT COUNT(id), lang FROM trad_lang WHERE status = ‹  › GROUP BY lang

c.à dire le nombre de traductions par langue :

COUNT(id) lang
97 ar
96 bg
11 bn
13 ca
92 cs
96 da
98 de
102 en
98 es
94 et

Paolo


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

* Paolo tapuscrivait, le 07/05/2010 12:23:

On 07/05/10 11:57, Guy Cesaro wrote:

Comme ça ?
<BOUCLE_bilan(trad_lang){status = ''}{fusion lang}>

#LANG<br><BOUCLE_count_bilan(trad_lang){status = ''}{lang=#LANG}
/>#TOTAL_BOUCLE<//B_count_bilan>
</BOUCLE_bilan>

Même pas :

cela me donne une liste comme :
----- ar
39 bg
39 bn
39 ca
39 cs
39 da
39 de
39 en
39 es
39 et (ou 39 est le nombre de langues)

et je veux ce qui me donne
SELECT COUNT(id), lang FROM `trad_lang` WHERE status = '' GROUP BY lang
c.à dire le nombre de traductions par langue :

COUNT(id) lang
97 ar
96 bg
11 bn
13 ca
92 cs
96 da
98 de
102 en
98 es
94 et

trad_lang, j'ai pas pu tester car c'est une table d'un plugin.
Mais
<BOUCLE_bilan(ARTICLES){fusion lang}>
#LANG<BOUCLE_count_bilan(ARTICLES){lang=#LANG} /> #TOTAL_BOUCLE <br /><//B_count_bilan>
</BOUCLE_bilan>

me donne :
en 2
fr 46
he 1

-- RealET

On 07/05/10 13:27, RealET wrote:

<BOUCLE_bilan(ARTICLES){fusion lang}>
#LANG<BOUCLE_count_bilan(ARTICLES){lang=#LANG} /> #TOTAL_BOUCLE <br
/><//B_count_bilan>
</BOUCLE_bilan>

me donne :
en 2
fr 46
he 1

Guy, RealET,

Oui merci. Cela marche.
C'est à dire qu'il faut faire deux boucles.
Je pense que ce serait bien si SPIP se dotait d'un COUNT...

Paolo

* Paolo tapuscrivait, le 07/05/2010 14:49:

On 07/05/10 13:27, RealET wrote:

<BOUCLE_bilan(ARTICLES){fusion lang}>
#LANG<BOUCLE_count_bilan(ARTICLES){lang=#LANG} /> #TOTAL_BOUCLE <br
/><//B_count_bilan>
</BOUCLE_bilan>

me donne :
en 2
fr 46
he 1

Guy, RealET,

Oui merci. Cela marche.
C'est à dire qu'il faut faire deux boucles.
Je pense que ce serait bien si SPIP se dotait d'un COUNT...

Le count : compteur est dans Bonux :wink:

-- RealET

Le 07/05/10 16:15, RealET a écrit :

Le count : compteur est dans Bonux :wink:

pas *ce* COUNT là

On 07/05/10 17:07, denisb wrote:

pas *ce* COUNT là

Non, en effet. Je me demande si on ne pourrait pas « étendre » le critère {fusion} pour rendre dispo une balise de compteur.

Par ailleurs, je regardais la balise #TOTAL_UNIQUE

euh ... je crois que tu as écrit l'article :wink:

Mais je n'arrive absolument pas à la faire marcher.

Est-ce que

<BOUCLE_bilan(trad_lang){par lang}>
[(#LANG|unique) - #TOTAL_UNIQUE{lang}<br>]
</BOUCLE_bilan>

ne devrait pas marcher ? Ou est-ce que j'ai tout compris à travers ?

Paolo

Le 07/05/10 18:41, Paolo a écrit :

On 07/05/10 17:07, denisb wrote:

pas *ce* COUNT là

Non, en effet. Je me demande si on ne pourrait pas « étendre » le
critère {fusion} pour rendre dispo une balise de compteur.

en fait si. on peut (toutes mes excuses RealET et cerdic...)

<BOUCLE_a(ARTICLES) {tout} {compteur articles} {"<br />"} {fusion articles.lang}>
#LANG : #COMPTEUR{articles}
</BOUCLE_a>

on tripote le critère pour faire une 'auto'-jointure
(spip_articles->spip_articles) et on précise bien (à
cause des alias) le nom de la table du champ 'lang'

on obtient ainsi la requête :
   SELECT COUNT(L1.id_article) AS compteur_articles,
          articles.lang,
          articles.titre
     FROM spip_articles AS `articles`
          INNER JOIN spip_articles AS L1
                  ON L1.id_article = articles.id_article
    WHERE articles.statut = 'publie'
GROUP BY articles.lang

attention !
on remarquera que le critère {tout} n'est pas reconnu,
dans le sens où la condition WHERE articles.statut = 'publie'
est quand même ajoutée dans la requête.

On 07/05/10 18:59, denisb wrote:

<BOUCLE_a(ARTICLES) {tout} {compteur articles} {"<br />"} {fusion
articles.lang}>
#LANG : #COMPTEUR{articles}
</BOUCLE_a>

Hmm, ça marche pour une table native SPIP, même si le SQL résultant est assez tordu. Mais cela ne marche pas pour une autre table. J'essaie :

<BOUCLE_a(trad_lang){compteur id} {"<br />"} {fusion trad_lang.lang}>
#LANG : #COMPTEUR{id}
</BOUCLE_a>

et je reçois le message : « Unknown criterion fusion ? »

Paolo

Une #TOTAL_FUSION :slight_smile:

Pour #TOTAL_UNIQUE, c’est un total, donc :
<BOUCLE_bilan(trad_lang){par lang}>
[(#LANG|unique) - #TOTAL_UNIQUE{lang}
]
</BOUCLE_bilan>
#TOTAL_UNIQUE > comparer avec #TOTAL_BOUCLE
</B_bilan>

Sinon, à l’intérieur de la boucle t’auras un compteur boucle lourdo.

Le 7 mai 2010 18:41, Paolo <paolo2@taize.fr> a écrit :

On 07/05/10 17:07, denisb wrote:

pas ce COUNT là

Non, en effet. Je me demande si on ne pourrait pas « étendre » le critère {fusion} pour rendre dispo une balise de compteur.

Par ailleurs, je regardais la balise #TOTAL_UNIQUE
http://www.spip.net/fr_article4374.html
euh … je crois que tu as écrit l’article :wink:

Mais je n’arrive absolument pas à la faire marcher.

Est-ce que

<BOUCLE_bilan(trad_lang){par lang}>
[(#LANG|unique) - #TOTAL_UNIQUE{lang}
]
</BOUCLE_bilan>

ne devrait pas marcher ? Ou est-ce que j’ai tout compris à travers ?

Paolo


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

On 07/05/10 19:12, Guy Cesaro wrote:

...
</BOUCLE_bilan>
#TOTAL_UNIQUE > comparer avec #TOTAL_BOUCLE
</B_bilan>

Sinon, à l'intérieur de la boucle t'auras un compteur boucle lourdo.

Ah d'accord, je comprends maintenant ce qu fait la balise... et ce n'est pas ce que je cherche.

merci,
Paolo

Tu peux jouer sur le fait que tu classes par ce que tu affiches en unique, mais c’est pas top, puisque le total s’affiche dans le résultat suivant de la boucle :
<BOUCLE_maboucle(…){par balise}>
#SET{valeur_en_cours,#BALISE}

[
[(#GET{valeur_unique_en_cours}}|oui)[(#GET{valeur_en_couleur}|!={#GET{valeur_unique_en_cours}}|oui) #GET{mon_compteur} #SET{mon_compteur,0} ] ]

(#BALISE|unique)
#SET{valeur_unique_en_cours,#PAYS]

[(#SET{mon_compteur,[(#GET{mon_compteur}|plus{1})]})]
</BOUCLE_maboucle>

Le 7 mai 2010 19:30, Paolo <paolo2@taize.fr> a écrit :

On 07/05/10 19:12, Guy Cesaro wrote:

</BOUCLE_bilan>
#TOTAL_UNIQUE > comparer avec #TOTAL_BOUCLE
</B_bilan>

Sinon, à l’intérieur de la boucle t’auras un compteur boucle lourdo.

Ah d’accord, je comprends maintenant ce qu fait la balise… et ce n’est pas ce que je cherche.

merci,

Paolo


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Le 07/05/10 19:11, Paolo a écrit :

<BOUCLE_a(trad_lang){compteur id} {"<br />"} {fusion trad_lang.lang}>
#LANG : #COMPTEUR{id}
</BOUCLE_a>

le critère compteur doit porter sur une *table*, pas un champ...

<BOUCLE_a(trad_lang){compteur trad_lang} {"<br />"} {fusion trad_lang.lang}>
#LANG : #COMPTEUR{trad_lang}
</BOUCLE_a>

On 07/05/10 22:38, denisb wrote:

le critère compteur doit porter sur une *table*, pas un champ...

<BOUCLE_a(trad_lang){compteur trad_lang} {"<br />"} {fusion
trad_lang.lang}>
#LANG : #COMPTEUR{trad_lang}
</BOUCLE_a>

Ah oui - mon erreur.
Mais cela ne change pas le message d'erreur.

Paolo