Boucler sur un tableau, un compteur, les langues, une condition ... - commentairesspip_recursions2008-04-17T15:00:56Zhttps://files.spip.net/Boucler-sur-un-tableau-un-compteur#comment4052042008-04-17T15:00:56Z<p>J'ai enlevé la 2<sup class="typo_exposants">e</sup> boucle imbriquée dans la boucle tableau :</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><B_pays_tableau> <h2>Liste des pays cochés</h2> <ul> <BOUCLE_pays_tableau(TABLEAU){var=pays}> <li>Clé : #CLE | Valeur : #VALEUR</li> </BOUCLE_pays_tableau> </ul> </B_pays_tableau> <h2>Aucun pays n'est sélectionné...</h2> <//B_pays_tableau></code></pre></div>
<p>Mais j'obtiens toujours cette ligne de résultats en trop :</p>
<h2>Liste des pays cochés</h2> <ul> <li>Clé : 0 | Valeur : 7</li> <li>Clé : 1 | Valeur : 89</li> <li>Clé : 2 | Valeur : 14</li> <li>Clé : 3 | Valeur : 92</li> <li>Clé : spip_recursions | Valeur : 1</li> </ul>
<p>Quand aux noms de variables, je n'ai aucune idée de là où je peux agir.</p>spip_recursions2008-04-14T19:26:00Zhttps://files.spip.net/Boucler-sur-un-tableau-un-compteur#comment4051252008-04-14T19:26:00Z<p>Ça ressemble à un conflit entre variables de même nom, mais je n'ai jamais constaté ça.<br class="manualbr">Par contre, j'ai déjà eu des comportements louches quand il y a des boucles « normales » imbriquées dans des boucles tableau. ça ressemble bien à ton problème.<br class="manualbr">Sans être devant ce code exact, avec la même version de spip, c'est pas évident d'en dire plus, désolé</p>Boucler sur un tableau, un compteur, les langues, une condition ...2008-04-14T18:21:25Zhttps://files.spip.net/Boucler-sur-un-tableau-un-compteur#comment4051162008-04-14T18:21:25Z<p>Merci pour ces codes, notamment la boucle_tableau que j'utilise sur un site que je ne peux pas passer en 1.9<small class="fine d-inline"> </small>!</p>
<p>Je note cependant un comportement assez étrange : la boucle tableau me retourne un élément dont la clé, au lieu de porter une valeur numérique, porte la valeur 'spip_recursions'... du coup j'ai un enregistrement de trop dans mes résultats, que j'ai beaucoup de mal à filtrer (car je fais une autre boucle derrière...)</p>
<p>une boucle de ce type :</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code> <B_pays_tableau> <h2>Liste des pays cochés</h2> <ul> <BOUCLE_pays_tableau(TABLEAU){var=pays}> <li>Clé : #CLE | Valeur : #VALEUR | Nom : <BOUCLE_nom_pays(MOTS){id_mot=#VALEUR}>#TITRE</BOUCLE_nom_pays></li> </BOUCLE_pays_tableau> </ul> </B_pays_tableau> <h2>Aucun pays n'est sélectionné...</h2> <//B_pays_tableau></code></pre></div>
<p>Me donne le résultat suivant :</p>
<h2>Liste des pays cochés</h2>
<ul> <li>Clé : 0 | Valeur : 137 | Nom : Austria</li> <li>Clé : 1 | Valeur : 7 | Nom : Cyprus</li> <li>Clé : 2 | Valeur : 89 | Nom : Estonia</li> <li>Clé : 3 | Valeur : 10 | Nom : France</li> <li>Clé : spip_recursions | Valeur : 1 | Nom : Titre n'ayant rien à voir</li>
</ul>
<p>Comment se débarrasser de cet enregistrement plutôt gênant<small class="fine d-inline"> </small>?</p>
<p>Merci<small class="fine d-inline"> </small>!</p>Boucler sur un tableau, un compteur, les langues, une condition ...2008-03-28T12:17:52Zhttps://files.spip.net/Boucler-sur-un-tableau-un-compteur#comment4044702008-03-28T12:17:52Z<p>Oui, on peut mettre plusieurs conditions, mais la syntaxe est assez ésotérique, du fait qu'on mixe du spip et du php.<br class="autobr">
Voici un exemple :</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><BOUCLE_si(IF){condition (#ENV{machin}|=={#MACHIN}|?{1,0}) && #ENV{truc}|=={#TRUC}|?{1,0})}>...</code></pre></div>
<p>on a donc 2 conditions avec un <code class="spip_code spip_code_inline" dir="ltr">&&</code> pour faire un ET entre les 2.<br class="autobr">
chacune d'elle effectue un <code class="spip_code spip_code_inline" dir="ltr">|==</code> pour comparer à quelquechose, mais comme ce filtre ne retourne rien si la condition est fausse, il faut enchainer sur un <code class="spip_code spip_code_inline" dir="ltr">|?</code> pour avoir 0 ou 1 explicitement.</p>
<p>La syntaxe <code class="spip_code spip_code_inline" dir="ltr">#ENV{machin}==#MACHIN && #ENV{truc}==#TRUC</code> nécessite de mettre des apostrophes ou des guillemets, mais dans ce cas, le parseur spip se paume. Je n'ai donc pas trouvé de solution plus simple.</p>Boucler sur un tableau, un compteur, les langues, une condition ...2008-03-28T10:34:15Zhttps://files.spip.net/Boucler-sur-un-tableau-un-compteur#comment4044662008-03-28T10:34:15Z<p>est ce que la boucle if accepte plusieurs conditions<small class="fine d-inline"> </small>? Je cherche à n'afficher un bloc dans un boucle article que si une des balises que je veux afficher dans le bloc est présente et sinon ne pas afficher le bloc</p>les exemples2006-08-08T06:49:14Zhttps://files.spip.net/Boucler-sur-un-tableau-un-compteur#comment3869392006-08-08T06:49:14Z<p>Je viens de rapatrier le tar.gz et il contient bien les fichiers. Problème de transfert lors de votre download<small class="fine d-inline"> </small>?</p>
<p>Sinon, ce code existe désormais sous forme de plugins pour 1.9, <a href="http://trac.rezo.net/trac/spip-zone/browser/_plugins_/_boucles_/Boucles_sans_tables" class="spip_out" rel='nofollow external'>ici</a></p>Les exemples2006-08-07T20:27:19Zhttps://files.spip.net/Boucler-sur-un-tableau-un-compteur#comment3869362006-08-07T20:27:19Z<p>Bonjour,</p>
<p>Je ne trouve rien dans le fichier d'archive, il semble vide. Y a-t-il une autre façon d'obtenir les exemples<small class="fine d-inline"> </small>?</p>
<p>Merci d'avances</p>