Encore une variable dans une boucle

Stephane a écrit :

Stephane a écrit :

Merci beaucoup Stéphane pour ton aide précieuse.
Je vais suivre ta proposition et tout ira bien.
Pour les calculs, voici comment j'ai procédé pour ne pas que la variable s'incrémente à chaque tour de la seconde boucle :

heu, non, dans ce cas, tu fais :
<BOUCLE_A(XXXX){...}></BOUCLE_A>#SET{lalimite,#TOTAL_BOUCLE}<//B_A>
<BOUCLE_A(XXXX){...}></BOUCLE_A>#SET{lalimite,[(#GET{lalimite}|plus{#TOTAL_BOUCLE})]}<//B_A>

heu, plutot :

<BOUCLE_B(XXXX){...}></BOUCLE_B>#SET{lalimite,[(#GET{lalimite}|plus{#TOTAL_BOUCLE})]}<//B_B>

deux fois _A, il va pas etre d'accord...

<INCLURE{fond=inc/xxx}{lalimite=#GET{lalimite}}>
<INCLURE{fond=inc/yyy}{lalimite=#GET{lalimite}}>
....

Pfttttttt et dire que j'étais assez content de moi...
je savais bien que j'avais encore des choses à apprendre.
J'essaye la syntaxe que tu me proposes.
Je te tiens au courant plus tard du résultat
car je dois m'absenter pour quelques heures.
A+

heu, non, dans ce cas, tu fais :
<BOUCLE_A(XXXX){...}></BOUCLE_A>#SET{lalimite,#TOTAL_BOUCLE}<//B_A>
<BOUCLE_A(XXXX){...}></BOUCLE_A>#SET{lalimite,[(#GET{lalimite}|plus{#TOTAL_BOUCLE})]}<//B_A>

heu, plutot :

<BOUCLE_B(XXXX){...}></BOUCLE_B>#SET{lalimite,[(#GET{lalimite}|plus{#TOTAL_BOUCLE})]}<//B_B>

Je viens d'essayer ta proposition.
ça ne marche pas car si la boucle contient quelque chose, le code ne s'exécute pas car il est placé dans la partie alternative avec //B_...

Stephane a écrit :

Attention, ce systeme est bien pratique mais il faut comprendre ce que l'on fait.
Le squelette compilé contient du code PHP appelant la fonction de stockage / récupération.
Mais si l'appelle est bien fait à chaque hit, les argument eux ne sont renouvelés qu'à chaque rechargement du cache.
Donc jouer d'un <INCLURE> à l'autre peut poser des probleme, un des cache etant par exemple rechargé mais pas les autres...

par contre, avec des #INCLURE, la, il ne doit pas y avoir de problemes puisque tout se recalcul en meme temps.

euh, je suis pas spécialiste du dedans de là dessus,
mais c'est pas le contraire ?

JL

Alain HUSSON a écrit :

Merci JLuc, j'ai testé dans tous les sens...
j'ai aussi cherché des contributions à ce propos.
aucun résultat positif, cette balise ne semble pas reconnue.

excuse moi, je crois finalement que c'est dans la partie privée,
de spip-contrib, en cours de validation.

JLuc

JLuc a écrit :

Alain HUSSON a écrit :

Merci JLuc, j'ai testé dans tous les sens...
j'ai aussi cherché des contributions à ce propos.
aucun résultat positif, cette balise ne semble pas reconnue.

excuse moi, je crois finalement que c'est dans la partie privée,
de spip-contrib, en cours de validation.

JLuc

Merci Jean Luc, avec l'aide active de Stéphane, j'arrive à quelque chose de positif. Je ferai un petit résumé pour la communauté quand tout sera au point.

JLuc a écrit :

Stephane a écrit :

Attention, ce systeme est bien pratique mais il faut comprendre ce que l'on fait.
Le squelette compilé contient du code PHP appelant la fonction de stockage / récupération.
Mais si l'appelle est bien fait à chaque hit, les argument eux ne sont renouvelés qu'à chaque rechargement du cache.
Donc jouer d'un <INCLURE> à l'autre peut poser des probleme, un des cache etant par exemple rechargé mais pas les autres...

par contre, avec des #INCLURE, la, il ne doit pas y avoir de problemes puisque tout se recalcul en meme temps.

euh, je suis pas spécialiste du dedans de là dessus,
mais c'est pas le contraire ?

non, non, c'est bien ca : un #INCLURE est recalculé en meme temps que le squelette appelant alors qu'un <INCLURE> a son propre cache recalculé à son rythme.
La, pour que ca marche, il faut que tout soit recalculé en meme temps.

Alain HUSSON a écrit :

heu, non, dans ce cas, tu fais :
<BOUCLE_A(XXXX){...}></BOUCLE_A>#SET{lalimite,#TOTAL_BOUCLE}<//B_A>
<BOUCLE_A(XXXX){...}></BOUCLE_A>#SET{lalimite,[(#GET{lalimite}|plus{#TOTAL_BOUCLE})]}<//B_A>

heu, plutot :

<BOUCLE_B(XXXX){...}></BOUCLE_B>#SET{lalimite,[(#GET{lalimite}|plus{#TOTAL_BOUCLE})]}<//B_B>

Je viens d'essayer ta proposition.
ça ne marche pas car si la boucle contient quelque chose, le code ne s'exécute pas car il est placé dans la partie alternative avec //B_...

mais c'est la l'astuce : la boucle ne contient jamais rien qu'elle renvoie des elements ou non (attention à ne rien mettre, pas meme un espace, dans la boucle)
En svn, je crois qu'on peut maintenant ecrire : <BOUCLE_B(XXXX){...}/>

par contre, il faut peut etre faire
<BOUCLE_A(XXXX){...}></BOUCLE_A>#SET{lalimite,[(#TOTAL_BOUCLE|sinon{0})]}<//B_A>
<BOUCLE_A(XXXX){...}></BOUCLE_A>#SET{lalimite,[(#GET{lalimite}|plus{[(#TOTAL_BOUCLE|sinon{0})]})]}<//B_A>
ou quelque chose du genre