Calculer avec spip

Re-bonjour,

Je voudrais effectuer des calculs à l'aide de contenu de balises, mais n'ai pas trouvé ce sujet dans les différents sites spipiens ... En effet, sur je fais #VALEUR1*#VALEUR2, je n'obtiens que la concaténation des deux balises ...

Comment faire dans spip ? Merci
----
Marc VALLETEAU de MOULLIAC
assfor
Imaginons votre image
06 61 79 17 31
http://www.assfor.com
----------------------------------------------
P Merci de respecter l'environnement - n'imprimez ce message que si c'est véritablement nécessaire !

"L'intégrité de ce message n'étant pas assurée sur Internet, assfor ne peut être tenu pour responsable de son contenu. Si vous n'êtes pas destinataire de ce message, merci de le détruire et d'avertir l'expéditeur."

Marc VALLETEAU de MOULLIAC a écrit :

Re-bonjour,

Je voudrais effectuer des calculs à l'aide de contenu de balises,
mais n'ai pas trouvé ce sujet dans les différents sites spipiens ...
En effet, sur je fais #VALEUR1*#VALEUR2, je n'obtiens que la
concaténation des deux balises ...

Bonjour

Il faut utiliser les filtres.

La plupart (toutes?) des fonctions php peuvent directement être
ainsi appelées.

Je ne sais pas à partir de quelle version de Spip c'est ainsi.

Pour la doc, voir la page concernant les filtres de Spip.

A bientôt
Grégoire

Le 19/11/07, Marc VALLETEAU de MOULLIAC a écrit :

Re-bonjour,

Je voudrais effectuer des calculs à l'aide de contenu de balises,
mais n'ai pas trouvé ce sujet dans les différents sites spipiens ...
En effet, sur je fais #VALEUR1*#VALEUR2, je n'obtiens que la
concaténation des deux balises ...

Comment faire dans spip ? Merci

Regarde Les filtres mathématiques de spip

--
@plus

Jacques

Pour les lyonnais++ spip-lyon@rezo.net http://spip-party.net/-Lyon-
Plugins zippés Téléchargement : http://spip.jermer.fr/?Liste-des-zip-produits
Remercier Spip et les plugins (Crédits) :

http://spip.jermer.fr/?Plugins-actifs-6-plugin-sauvegarde

Merci à toi et à Grégoire, mais, effectivement, j'ai essayé les filtres de calcul de spip qui ne répondent pas à mon souci ... En effet, comment faire pour faire ça (par exemple) :

(#PRIX1*#NOMBRE1+#PRIX2*#NOMBRE2)*(1+#TVA)

le résultat étant formaté "0 000,00" : il m'a été impossible de trouver comment écrire ça en spip.

Alors j'ai pris le pb à l'envers, j'ai mis chaque balise spip dans une variable php, et là, super, je fais tout ce que je veux !!

Je pense que spip a atteint sa limite, là ... mais je peux me tromper, hein, il y a tellement de nouveaux trucs mis dans spip par les développeurs dont personne ne parle et que l'on découvre par hasard !!!

A+
----
Marc

Le 19 nov. 07 à 17:25, Jacques J. a écrit :

Le 19/11/07, Marc VALLETEAU de MOULLIAC a écrit :

Re-bonjour,

Je voudrais effectuer des calculs à l'aide de contenu de balises,
mais n'ai pas trouvé ce sujet dans les différents sites spipiens ...
En effet, sur je fais #VALEUR1*#VALEUR2, je n'obtiens que la
concaténation des deux balises ...

Comment faire dans spip ? Merci

Regarde Les filtres mathématiques de spip
Les filtres de SPIP - SPIP

--
@plus

Jacques

Pour les lyonnais++ spip-lyon@rezo.net http://spip-party.net/-Lyon-
Plugins zippés Téléchargement : http://spip.jermer.fr/?Liste-des-zip-produits
Remercier Spip et les plugins (Crédits) :

http://spip.jermer.fr/?Plugins-actifs-6-plugin-sauvegarde
_______________________________________________
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

Marc VALLETEAU de MOULLIAC a écrit :

Merci à toi et à Grégoire, mais, effectivement, j'ai essayé les filtres de calcul de spip qui ne répondent pas à mon souci ... En effet, comment faire pour faire ça (par exemple) :

(#PRIX1*#NOMBRE1+#PRIX2*#NOMBRE2)*(1+#TVA)

le résultat étant formaté "0 000,00" : il m'a été impossible de trouver comment écrire ça en spip.

Alors j'ai pris le pb à l'envers, j'ai mis chaque balise spip dans une variable php, et là, super, je fais tout ce que je veux !!

Je pense que spip a atteint sa limite, là ...

hahaha, mieux vaut lire ca que d'etre aveugle, mais quand meme...
Non, la c'est toi qui atteint ta limite et pourtant je connais bon nombre de non informaticiens, comprenant à peine le HTML, ne parlant pas un mot de PHP, mais ayant compris le fonctionnement des filtres.
Peut etre ont ils lu la doc ?
peut etre ne se croient-ils pas supérieurement intelligent au point de remettre en cause le programme (ou ses développeurs) quand ils n'arrivent pas à faire qqchose avec ?

Combien de fois faudra-t-il l'expliquer : ce que tu peux faire en PHP, tu peux le faire avec Spip, ca s'appelle un filtre.

le seul truc super compliqué à comprendre, c'est qu'il faut faire une fonction, qu'on appelera "filtre", qui prendra en premier paramètre la valeur de la balise à laquelle il est appliqué.
Les paramètres passés au filtre seront donc les 2eme, 3eme... paramètres de la fonction.

Après tu fais ce que tu veux, c'est du PHP.

Maintenant tu peux ecrire directement ta succession de filtres puisque spip fournit les filtres correspondant aux operations de base et que tu peux appeler n'importe quelle fonction PHP en filtre.
Mais la, ca va etre vraiment barbare comme syntaxe...

mais je peux me

tromper, hein, il y a tellement de nouveaux trucs mis dans spip par les développeurs dont personne ne parle et que l'on découvre par hasard !!!

l'article sur les filtres date de 2001, en tapant dans google "filtre spip" on tombe directement dessus...

Remarque, toi, au moins, on ne découvre pas ta mauvaise foi, ca fait longtemps que tu est dans la catégorie des consommateurs pas content.

@++

Marc VALLETEAU de MOULLIAC a écrit :

Merci à toi et à Grégoire, mais, effectivement, j'ai essayé les filtres de calcul de spip qui ne répondent pas à mon souci ... En effet, comment faire pour faire ça (par exemple) :

(#PRIX1*#NOMBRE1+#PRIX2*#NOMBRE2)*(1+#TVA)

le résultat étant formaté "0 000,00" : il m'a été impossible de trouver comment écrire ça en spip.

Alors j'ai pris le pb à l'envers, j'ai mis chaque balise spip dans une variable php, et là, super, je fais tout ce que je veux !!

Je pense que spip a atteint sa limite, là ... mais je peux me tromper, hein, il y a tellement de nouveaux trucs mis dans spip par les développeurs dont personne ne parle et que l'on découvre par hasard !!!

A+
----
Marc

Le 19 nov. 07 à 17:25, Jacques J. a écrit :

Le 19/11/07, Marc VALLETEAU de MOULLIAC a écrit :

Re-bonjour,

Je voudrais effectuer des calculs à l'aide de contenu de balises,
mais n'ai pas trouvé ce sujet dans les différents sites spipiens ...
En effet, sur je fais #VALEUR1*#VALEUR2, je n'obtiens que la
concaténation des deux balises ...

Comment faire dans spip ? Merci

Regarde Les filtres mathématiques de spip
Les filtres de SPIP - SPIP

--
@plus

Jacques

Pour les lyonnais++ spip-lyon@rezo.net http://spip-party.net/-Lyon-
Plugins zippés Téléchargement : http://spip.jermer.fr/?Liste-des- zip-produits
Remercier Spip et les plugins (Crédits) :

http://spip.jermer.fr/?Plugins-actifs-6-plugin-sauvegarde
_______________________________________________
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

Il me semble qu'il existe une balise #EVAL{expression php} qui pourrait peut-être servir.

Ceci dit, j'ai déjà testé les fonctions mathématiques de spip en combinaison avec des balises #SET et #GET dans des calculs compliqués sans problèmes.

FDM

Marc VALLETEAU de MOULLIAC <assfor@assfor.com> wrote:

(#PRIX1*#NOMBRE1+#PRIX2*#NOMBRE2)*(1+#TVA)

le résultat étant formaté "0 000,00" : il m'a été impossible de
trouver comment écrire ça en spip.

Le formater en spip peut-être et encore
mais tu pourrais te faire un filtre maison que tu déclares dans
mes_fonctions.php et pour la peine en lui passant des tableaux de prix
et de nombre en paramètres cela pourrait permettre de généraliser le
process

function mon_calcul ($prix, $nombres, $tva) {
        $nbre_elements = count($prix);
        $result = 0;
        for ($i = 0, $i < $nbre_elements, $i++) {
                $result = $result + $prix($i)*$nombres($i)
        }
        // formatage peut-être à revoir
        return sprintf('%01.2f', $result);
}

utilisation

#SET{prix,#ARRAY{0,....}}
#SET{nombres,#ARRAY{0,......}}
appel
[(#GET{prix}|mon_calcul{#GET{nombres}, #TVA})]

peut-être à affiner mais l'intéret pour moi c'est que c'est
généralisable à des claculs sur 3 prix, 4 prix, ...n prix et nombres et
que les variables spip prix et nombres peuvent être initialisées dans
des boucles...

--
http://wojylac.free.fr
Un proverbe chinois dit que lorsqu'on a rien à dire
on cite généralement un proverbe chinois.

Marc VALLETEAU de MOULLIAC a écrit :

Mais c'est parfois pour comprendre la doc qu'il faut être super intelligent !!! ce que je suis évidemment pas, puisque je pose la question !!

mais la doc est une intelligence collective, il ne tient qu'à toi de l'améliorer si tu ne la trouve pas assez claire.

peut etre ne se croient-ils pas supérieurement intelligent au point de
remettre en cause le programme (ou ses développeurs) quand ils
n'arrivent pas à faire qqchose avec ?

Je ne comprends pas cette remarque de niveau école primaire

heu, dans le genre terreur des bacs à sables, je crois que tu es ceinture noir...
c'est quand meme toi qui, n'arrivant pas à faire 3 multiplications et 2 additions avec spip nous balance que tu as atteint les limites de Spip !
Met une poule devant une calculatrice, elle ne fera pas mieux.
Faut-il dire pour autant qu'une calculatrice ne sait pas faire une addition ?

: personne, et moi le dernier, ne met en cause la superbe intelligence des développeurs de spip

j'ai dit remettre en cause le programme ou ses développeurs (je parle de spip et des plugins).
Hors dire que "spip a atteint sa limite", c'est remettre en cause le programme.
Quant aux développeurs, si tu apparais d'une autre couleurs sur mon lecteur de news, il y a une raison (vous n'êtes que 4 dans ce cas) : les consommateurs ne sont pas les bienvenus, encore moins quand ils se permettent en plus de critiquer la qualité d'un code qu'ils ne sont meme pas capables de comprendre.

(dont tu fais sûrement partie, hein !!)

j'ai effectivement un droit de commit, mais ca ne fait pas de moi un "developpeur de Spip".
par contre, je suis "developpeur de plugins pour Spip", et tu as le meme comportement vis à vis de cette catégorie : tu prends sans jamais rien donner et tu te permets de raler en plus.

... Mais tu semble vouloir dire que spip peut TOUT faire, et là, pardonne-moi, mais je te sens bien prétentieux ...

déjà je ne vois pas en quoi ca ferait de moi un prétentieux, c'est pas moi qui l'ai développé.
ensuite je dis qu'on peut faire en spip tout ce qu'on peut faire en PHP, et ca, c'est un fait, c'est le principe des filtres.
enfin, le prétentieux, c'est celui qui, quand il a un problème, ne se remet pas en cause.
moi, quand je n'arrive pas à faire un truc, je pars du principe que c'est moi qui ait atteint ma limite...

Maintenant tu peux ecrire directement ta succession de filtres puisque
spip fournit les filtres correspondant aux operations de base et que tu
peux appeler n'importe quelle fonction PHP en filtre.
Mais la, ca va etre vraiment barbare comme syntaxe...

Précisément ...

et donc ?
soit tu fais ton propre filtre, et ta syntaxe sera celle que tu veux.
soit la syntaxe barbare ne te fait pas peur, tu ne veux pas réutiliser le code, ... et tu le fais par une succession de filtres.
sachant qu'en plus, il existe une balise #EVAL (mais qui n'est pas la bonne solution dans ton cas), c'est bien toi qui devrait te remettre en cause au lieu de dire que "spip a atteint sa limite"

mais je peux me

tromper, hein, il y a tellement de nouveaux trucs mis dans spip par
les développeurs dont personne ne parle et que l'on découvre par
hasard !!!

l'article sur les filtres date de 2001, en tapant dans google "filtre
spip" on tombe directement dessus...

C'est justement après avoir lu et relu, et re-relu cet article, et essayé d'appliquer ce que j'ai lu, que je suis venu poser la question ici : il faudrait aussi que certains articles ne soient pas écrits par ceux qui savent uniquement pour ceux qui savent ...

just do it...

Remarque, toi, au moins, on ne découvre pas ta mauvaise foi, ca fait
longtemps que tu est dans la catégorie des consommateurs pas content.

Contrairement à ce que tu penses, je ne suis absolument pas de la catégorie des mécontents, sinon, je ne serais plus ici depuis longtemps, et surtout, je n'utiliserais plus spip - je ne suis pas maso !

Je ne comprendrai décidément pas pourquoi tu te sens si épidermiquement sensible, alors qu'une 'bête' question est posée : mais peut-être est-il ici interdit pour certain d'exprimer une opinion ?

entre dire des conneries et exprimer une opinion, il y a une différence.
les archives de la liste servent aussi de documentation, alors comprend qu'on ne puisse pas laisser dire que spip n'est pas capable de faire une addition.
si tu penses avoir une meilleure syntaxe pour les filtres à proposer, n'hésites pas à venir en debattre sur spip-dev.
si tu penses que la doc nécessite des précisions, n'hésites pas à proposer des modifications.

Ceci étant, dieu merci, j'ai aussi des réponses constructives à ma question, comme ça, au moins, je me sens un peu moins bête, n'est ce pas !!

visiblement, il y a encore des marges de progression.
Tu devrais d'ailleurs reprendre à la base : utilisation d'une mailinglist => on repond à la liste, pas en direct.

pour ton besoin, la bonne reponse est sans doute du genre :
[(#TVA|tonfiltresupercomplexe{#PRIX1,#NOMBRE1,#PRIX2,#NOMBRE2})]

avec function tonfiltresupercomplexe($tva,$p1,$n1,$p2,$n2){
  return ($tva+1)*($p1*$n1+$p2*$n2);
}

c'est vrai que c'est hors de porté...

maintenant si tu veux faire ca intelligemment, dans un esprit de partage et de réutilisabilité, tu peux aussi faire

[(#TVA|somme_ttc{(#PRIX1|mult{#NOMBRE1}),(#PRIX2|mult{#NOMBRE2})})]

avec une fonction tout aussi compliquée :
function somme_ttc($tva,$nb1,$nb2){
return ($tva+1)*($nb1,$nb2);
}
ou un truc un peu plus sioux qui ne se limite pas à 2 arguments

Alors, elle est ou la limite ?

@++