Table of contents
La présente documentation est valable à partir de la version 2.0,0 du plugin,
Installation
Cette saisie est distribuée sous forme de plugin à part. Il n’y a rien d’autre à régler une fois le plugin installé.
Ce pourquoi la saisie est prévue
La saisie est prévue pour faire des calculs simples. Elle permet par exemple, pour un formulaire d’inscription à un évènement, de calculer le prix total.
Elle n’a pas vocation à remplacer un vrai système de panier / boutique, mais peut venir en complément à un site centré essentiellement sur des formulaires d’inscription.
Fonctionnement
Configuration de la saisie
La saisie prend un paramètre calcul
. Ce paramètre peut être configuré lorsqu’on construit un formulaire avec Formidable ou autre plugin de construction de formulaire.

Dans ce paramètre, on indique le calcul à effectuer, en utilisant les éléments suivants :
- opérateurs mathématiques de base : +-*/
;
- parenthèses ()
;
- nom d’un champ entre @
: par exemple @input_1@
;
- ROUND()
pour arrondir à l’entier le plus proche ; il est possible de mettre un deuxième argument, séparé du premier par une virgule, pour arrondir à un certain nombre de décimal, par exemple ROUND(3.33, 1)
=> 3.3
;
- nombre entier ou décimal, seul le point peut être accepté [1];
- espaces et retour lignes.
Si le calcul contient autre chose que l’un de ces éléments, le calcul sera tout simplement ignoré par sécurité (afin d’éviter la mise en place d’un code javascript arbitraire).
Par ailleurs, s’appuyant [2] sur la saisie nombre
, la saisie calcul
possède des options de formatages :
- nombre de chiffres dans la partie décimales;
- séparateur de la partie décimale et de la partie entière;
- séparateur des milliers.
Résultat dans un formulaire
Le plugin intègre un script javascript qui effectue les calculs dès lors qu’un champ de formulaire est modifié (.change()
en jQuery).
Utilisation avec afficher_si
Si vous utilisez l’affichage conditionnel des saisies voici comment se comporte la saisie :
- les calculs sont toujours effectués après l’affichage/masquage des saisies;
- si une saisie est masquée, elle est considérée comme valant 0 pour le calcul;
- lorsque le calcul est fait, si le résultat a changé, alors les tests d’affichage conditionnel sont ré-exécutés.
Il est donc possible d’avoir une saisie de calcul dont le résultat est conditionné par l’affichage d’une autre saisie et dont le résultat conditionne lui-même l’affichage de la saisie. Attention à ne pas faire des renvois mutuels, sinon votre javascript tournera en rond.
Vérification en PHP
Si nous demandons au formulaire que seules les valeurs autorisées puissent être postée (option globale de configuration de formulaire Formidable), alors on vérifiera que le résultat posté correspond bien au résultat du calcul. Il s’agit d’une sécurité pour éviter que des internautes “fraudent” en modifiant après coup, via l’inspecteur web, le résultat du calcul.
Exemple de démonstration
Le fichier .yaml
ci-joint est un exemple de formulaire (inutile) utilisant cette saisie.
On demande dans un premier temps si on veut afficher un champ dizaine
et/ou un champ unité
. On affiche le résultat de l’addition des dizaine et des unités. Si ce résultat dépasse 50, alors on affiche un commentaire.
Exemple d’utilisation en cas réel
Dans un formulaire d’inscription à une activité d’astronomie :
- nous demandons le nombre de nuits passées (
select_1
) ; - en fonction du nombre de nuits passées, nous indiquons, via l’affichage conditionnel, le tarif par personne (dégressif) sous forme de champ
input
en lecture seul (input_1
,input_2
etinput_3
); - dans un autre champ nous demandons le nombre de personnes (
input_4
); - dans une saisie de type
calcul
(calcul_1
), on affiche le prix total :- le calcul est
(@input_1@+@input_2@+@input_3@)*@input_4@
- comme seul un des trois inputs entre parenthèses est affiché en même temps, le résultat correspond toujours au prix effectif pour le nombre de nuits, multiplié par le nombre de personnes;
- le calcul est
- si le montant dépasse
100
, alors nous affichons deux autres champs calculés :- les arrhes (
calcul_2
), correspondant à un tiers du prix, arrondi :ROUND(@calcul_1@/3)
; - le solde à verser à la fin :
calcul_2
: prix total moins arrhes :@calcul_1@ - @calcul_2@
.
- les arrhes (
Notes de version
Le passage à la version 2.x implique par rapport à la version 1.x :
- changement du chemin du javascript, passant de js
à javascript
;
- utilisation de la saisie nombre.
Si donc vous avez surchargé la saisie ou le javascript, il faut adapter votre code.
Discussions par date d’activité
5 discussions
Bonjour,
Sur ce formulaire : https://www.compagnie-skowies.com/-La-Boutique-des-Marionnettes-60-.html quand on passe au bouton valider, la saisie calcul se vide.
Résultat : quoi qu’on veuille commander, le total est de 0.
Une idée ?
PS :
La version 2.0.1 de la saisie calcul, et la saisie nombre qui va avec, ne sont pas encore pleinement dévellopé.
Il faudrait que tu reprenne la version 1.x.x de calcul, et que tu désactive la saisie nombre (ainsi que le plugin autonumeric).
Merci, ça corrige effectivement le problème.
Reply to this message
Bonjour,
Peut-on faire un calcul avec les sélections effectuées sur des champs de type @radio_x@ et/ou @checkbox_x@ ?
À savoir : j’ai 3 boutons radios de choix, avec les valeurs 2|Premier choix, 4|Second choix, 7|Dernier choix : comment récupérer la valeur sélectionnée avec @radio_1@ ? Idem avec Sélection multiple.
Merci pour votre aide,
françois
De memoire, cela marche pour les raidos, pas encore pour les cases à cocher.
Après plusieurs tests (SPIP 3.2.7 et SPIP 3.3.0), je n’arrive à faire un calcul qu’avec :
Les champs suivants ne sont pas calculés :
oui c’est assez logique. honnetement j’aurais pas le temps de m’en occuper. Ouvre un ticket pour mémoire.
Bien sûr :
https://git.spip.net/spip-contrib-extensions/saisie_calcul/issues/2
et merci pour ta réactivité ;-)
Reply to this message
Bonjour,
Le crayon “configurer” ne donne rien pour les champs “Nombre” et “Résultat d’un calcul” dans les interfaces de “Formidable” et “Champs Extras”.
En SPIP 3.2.7
Saisie de calcul 2.0.1
Saisie de nombre 1.0.0
Les autres champs de saisie de configuration fonctionnent bien.
Comme je vois une mise à jour récente de “Saisie de calcul”, il y a peut-être un réglage à faire ?
Cordialement.
Je ne suis pas sur de comprendre ce que voulez dire par “ne donne rien” :)
Cela étant, la saisie nombre a des souci, et j’aurais du dépublier la mise à jour de la saisie calcul. Il faut encore que je réécrive la saisie nombre dans les prochaines semaines.
Le petit crayon “déplie” normalement une interface de configuration à onglets : “ne donne rien” veut dire que cette interface n’apparaît pas.
Je peux patienter pour une nouvelle mise à jour.
Merci pour votre réponse rapide.
Quelles versions avez vous du plugin saisies ? il n’y a aucune raison que cela ne donne rien en fait.
Vous avez des onglets mais pas les champs précis ? je pourrais avoir une capture d’écran.
+ la liste exacte des plugins
Version saisie de calcul : 2.0.1
Je n’obtiens pas les onglets
Je demandais la version du plugins Saisies. Pas saisies calcul.
Vous avez la fameuse version fantome 4.0.0, qui n’aurai jamais exister et qui est très veille.
- Désactiver puis effacer cette saisies
- Aller dans la page des depots, puis reinitialiser le depot en effacant/recreéant
- Installer ensuite saisies v 3.38.0
(je suis étonné soit dit en passant que vous ayez pas eu plus tot de bug avec la version fantome de saisies)
Un GRAND MERCI !
Tout fonctionne !
Aucune idée qu’il pouvait y avoir un version fantôme...
oui c’est un peu un tru penible. Mais l’avantage c’est que maintenant c’est connnu et facilement reperable.
Reply to this message
\o/ \o/ \o/ M.E.R.C.I. !
Pour info, une v2 vient de sortir. Elle apporte de nouvelles fonctionnalité mais nécessite désormais la saisie “nombre” + casse le chemin javascript (mais a priori on s’en fiche normalement).
Reply to this message
Merci beaucoup pour ce plugin.
Peut-on avoir le cas suivant :
Je veux effectuer des calculs sur des champs conditionnels, ayant tous comme réponses possibles par exemple : Oui, Parfois, Non.
J’affecte un coefficient 4 pour Oui, 2 pour Parfois et 0 pour Non
Comment écrire alors la formule de calcul, si c’est possible ?
Merci par avance.
Je ne suis pas sur d’avoir compris le besoin. J’ai pas l’impression que nous ayons la même définition de “champ conditionnel”. Pour moi un “champ conditionnel” est un champ qui est affiché dans certaine condition (afficher_si), pour vous c’est un champ qui propose plusieurs choix (type select). Ou bien je me trompe?
Mais supposons une saisie de type selection avec les entrées suivantes:
Alors dans une saisie calcul, le calcul sera le suivant
(ou similaire, car je ne capte pas le besoin).
Reply to this message
Ajouter un commentaire
Follow the comments:
|
