La saisie calcul

La saisie « calcul » prend automatiquement comme valeur le résultat d’un calcul dépendant des valeurs d’autres saisies.

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.

Configuration d’une saisie de calcul avec Formidable

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 ;
-  nombre entier ou décimal, la virgule ou le point pouvant ê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).

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 de calcul dans un formulaire

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és, nous indiquons, via l’affichage conditionnel, le tarif par personne (dégressif) sous forme de champ input en lecture seul (input_1, input_2 et input_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 ;
  • 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@.

Notes

[1On se méfiera toutefois, car les calculs informatiques sur les nombres décimaux peuvent parfois révéler des surprises à cause du changement entre l’écriture décimale et l’écriture binaire.

Dernière modification de cette page le 18 août 2019

Discussion

Aucune discussion

Ajouter un commentaire

Qui êtes-vous ?
  • [Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom