pour compter tous les messages de forum d'un auteur dans une rubrique spécifique je viens de bricoler la boucle suivante :
<BOUCLE_messages(FORUMS){id_parent=0}{email_auteur=#ENV{email}}{tout}><BOUCLE_a(ARTICLES){id_article}{id_rubrique=48}> </BOUCLE_a></BOUCLE_messages>#TOTAL_BOUCLE</B_messages><//B_messages>
Le point essentiel dans cette construction est l'espace à l'intérieur de la boucle _a - le compteur est seulement incrémenté si quelque chose est affiché à l'intérieur de la boucle dont il doit compter les itérations.
Ce comportement exclut l'utilisation de la boucle suivante pour compter le nombre d'éléments dans la bdd :
pour compter tous les messages de forum d'un auteur dans une rubrique spécifique je viens de bricoler la boucle suivante :
<BOUCLE_messages(FORUMS){id_parent=0}{email_auteur=#ENV{email}}{tout}><BOUCLE_a(ARTICLES){id_article}{id_rubrique=48}> </BOUCLE_a></BOUCLE_messages>#TOTAL_BOUCLE</B_messages><//B_messages>
Le point essentiel dans cette construction est l'espace à l'intérieur de la boucle _a - le compteur est seulement incrémenté si quelque chose est affiché à l'intérieur de la boucle dont il doit compter les itérations.
Ce comportement exclut l'utilisation de la boucle suivante pour compter le nombre d'éléments dans la bdd :
J'ai fait une erreur de copier/coller
Je voulais dire
<BOUCLE_messages(FORUMS){id_parent=0}>
Si je te comprends bien, la boucle
<BOUCLE_messages(FORUMS){id_parent=0}></BOUCLE_messages>#TOTAL_BOUCLE<//BOUCLE_messages>
devrait bien retourner "50" s'il y a 50 messages dans la table spip_forum dont id-parent est 0.
J'ai testé encore une fois:
Je viens de réinstaller SPIP avec la dernière version svn \trac\spip\branches\spip-2.0 :
<BOUCLE_messages(FORUMS){tout}> </BOUCLE_messages>#TOTAL_BOUCLE </B_messages>
(avec espace) retourne 23824
<BOUCLE_messages(FORUMS){tout}></BOUCLE_messages>#TOTAL_BOUCLE</B_messages>
(sans espace) ne retourne rien
je partais du principe que dans les deux cas (avec ou sans espace) la quantité d'éléments dans la bdd était la même et qu'il fallait alors placer #TOTAL_BOUCLE entre </BOUCLE_messages>#TOTAL_BOUCLE</B_messages> dans les deux cas.
Ce que je n'avais pas compris c'est que ce n'est pas la quantité des éléments qui correspondent aux critères de recherche qui fait que le texte avant </B_messages> est affiché mais qu'il faut afficher au moins un de ces éléments à l'intérieur de la boucle pour déclencher l'exécution de cette partie du code (et l'inverse pour le code avant <//B_messages>).
Est-ce que c'est pareil pour les boucles avec le critère !doublons et pour les boucles TABLEAU ?
Pour toutes les boucles, le test se fait sur le nombre de caractères émis par le corps de la boucle, pas sur le nombre de "rows" trouvé par SQL. En particulier