Der Feldtyp Berechnung
Dieses Feature ist Teil der Visforms Subscription und in der freien Visforms Version nicht enthalten..
Für ein besseres Verständnis empfehlen wir die Dokumentation vollständig durchzulesen und mit dem Abschnitt Einleitung zu beginnen. Zusammenhänge, die in früheren Abschnitten der Dokumentation erklärt wurden, werden hier nicht wiederholt.
Felder vom Typ "Berechung" geben Ihnen die Möglichkeit eine Berechnungs-Formel zu erstellen, deren Ergebnis im Formular angezeigt wird. Die Formel wird in der Feldkonfiguration direkt in einer Textarea eingeben (siehe Screenshot). Die Formel kann Platzhalter enthalten, die andere Felder im Formular repräsentieren. Bei der Berechung des Ergebnisses werden die Platzhalter mit den Werten, die der Benutzer für dieses Formularfeld eingegeben hat, ersetzt. Weiterhin kann die Formel Zahlen, mathematische Operatoren und mathematische Funktionen enthalten.
Einige konkrete Beispiel-Fomeln finden Sie im nächsten Abschnitt.
Konfigurationseinstellungen für den Feldtype Berechnung
Feldtype Berechung im Frontend
Das Ergebnis der Berechung wird im Formular automatisch als "readonly-Wert"angezeigt und aktualisiert, sobald der Benutzer eine Eingabe in einem Formularfeld, das in die Berechnung eingeht, ändert.
Platzhalter
Alle Felder vom Typ "Listbox", "Zahl" oder "Berechnung", "Text", "Versteckt", "Checkbox", "Radio Button" und "Datum" können in einer Berechnung als Platzhalter verwendet werden.
Die Syntax für einen Platzhalter lautet: Feldname in Großbuchstaben, umschlossen von eckigen Klammern. Haben Sie in Ihrem Formular beispielsweise ein Feld vom Typ "Zahl" mit dem Namen "anzahl", so fügen Sie als Platzhalter [ANZAHL] in die Formel ein.
Wenn Sie Benutzereingaben aus einem Feld in einer Berechnung verwenden wollen müssen Sie sicherstellen, dass dieses Feld immer einen Zahlenwert enthält. Ansonsten kann die Berechnung nicht korrekt durchgeführt werden. Dies bedeutet:
- Stellen Sie sicher dass die Werte aller Optionen, die Sie für Listboxen anlegen, numerisch (Zahlenwerte) sind.
- Bitte beachten Sie auch, dass Zahlen immer einen Punkt als Dezimaltrenner haben müssen und kein Tausendertrennzeichen verwendet werden darf.
- Stellen Sie sicher, dass Sie bei Listboxen den Parameter "Pflichtfeld" aktiviert haben.
- Stellen Sie sicher, dass Sie bei Listboxen eine Option als Standardoption vorausgewählt haben, so dass das entsprechende Feld im Formular immer einen Wert enthält.
- Stellen Sie bei Feldern vom Typ "Zahl" sicher, dass diese "Pflichtfelder" sind und dass Sie einen Defaultwert vergeben haben, so dass das entsprechende Feld im Formular immer einen Wert enthält.
- Stellen Sie bei Feldern vom Typ "Versteckt" sicher, dass diese einen numerischen Defaultwert haben.
Immer wenn der Benutzer die Eingabe in einem Formularfeld, dass in einer Berechnung als Platzhalter verwendet wird, ändert, wird die Berechnung automatisch durchgeführt und das Ergebnis im Formular aktualisiert.
Mathmatische Operatoren
Sie können in der Formel im Feld vom Typ "Berechnung" folgende Operatoren verwenden:
- +
- -
- *
- /
Mathmatische Funktionen
Sie können in der Formel im Feld vom Typ "Berechnung" folgende Funktionen verwenden:
- Absolutwert: abs()
- Sinusfunktionen: sin(), asin(), asinh()
- Cosinusfunktionen: cos(), acos(), acosh()
- Tangensfunktionen: tan(), atan(), athanh()
- Rundungsfunktionen: ceil(), floor(), round()
- Exponential-/Potzenzfunktionen: exp(), pow()
- Logarithmusfunktionen: log(), log10(), log1p()
- Wurzelfunktion: sqrt()
- Statistische Funktionen: max(), min()
Bitte konsultieren Sie eine PHP-Dokumentation, um zu erfahren, was die Funktionen im einzelnen berechnen und welche Parameter sie erwarten. Funktionen, die hier nicht aufgelistet sind, werden in Feldern vom Typ "Berechnung" nicht unterstützt und führen zu einem Fehler in der Berechnung!
Wie funktionieren Felder vom Typ Berechnung
Im Formular
Ausgehend von der Formel, die Sie in einem Feld vom Typ Berechnung eingegeben haben und den Defaultwerten, die Sie für alle Platzhalterfelder in der Formel festgelegt haben, berechnet Visforms beim ersten Anzeigen des Formulars im Frontend automatisch das Ergebnis der Formel und zeigt dieses als Wert der Formularfeldes an. Immer dann, wenn der Benutzer einen Wert in einem Platzhalterfeld ändert, wird das Ergebnis aller Formeln, die dieses Platzhalterfeld verwenden, automatisch neu berechnet. Der Benutzer sieht also immer das aktuelle Ergebnis. Dies geschieht mit Hilfe von Javascript.
Nach dem Absenden des Formulars
Sendet der Benutzer das Formular ab, so wird serverseitig zuerst geprüft, dass alle übermittelten Formulardaten valide sind. Erst anschließend wird serverseitig das Ergebnis aller Felder vom Typ Berechnung unter Verwendung der übermittelten Benutzereingaben berechnet. Die Ergebnisse der serverseitigen Berechnung werden in der Datenbank gespeichert (sofern Sie diese Option im Formular aktiviert haben) und in den Ergebnismails verwendet.
Diese Trennung zwischen der Berechnung der Ergebnisse im Frontend mittels Javascript und der hiervon komplett unabhängigen Berechung der Ergebenisse serverseitig mit php bietet Ihnen maximalen Schutz bei der Verwendung von Feldern vom Typ Berechnung. Gleichzeitig bedeutet dies aber, dass Sie beim Erstellen von Formularen, die Felder vom Typ Berechnung enthalten, immer sorgfältig testen müssen, dass sowohl die Berechnung im Frontend als auch die serverseitge Berechnung die erwarteten Ergebnisse liefern.
Das müssen Sie beachten
Formeln werden manuell in einer Textarea eingeben. Bei der manuellen Eingabe der Formel können Sie theoretisch alles in das Formelfeld schreiben, was Ihnen in den Sinn kommt. Sie können einen Platzhalter mehrfach in einer Formel verwenden oder z.B. auch Felder, die selbst vom Typ "Berechnung" sind, in einer anderen Berechnung einbinden. Deshalb ist es leider auch möglich, dass Sie eine Formel erstellen, die fehlerhaft ist. Sie müssen beim Erstellen der Formel selbst sicherstellen, dass:
- Alle Platzhalter immer valide Zahlenwerte enthalten, auch wenn der Benutzer keine Auswahl triff. Sie müssen also Felder, die als Platzhalter verwendet werden, mit einem sinnvollen Defaultwert belegen (z.B. dem Wert 0 oder 1) Visforms unterstützt Sie hierbei, indem es nur die Verwendung bestimmter Feldtypen als Platzhalterfelder zulässt und für Checkboxen eine zusätzliche Option "Unchecked Wert für Berechnung" anbietet, in der Sie einen Defaultwert festlegen können, der in der Berechnung verwendet wird, falls die Checkbox nicht angehakt ist..
- Keine mathematisch ungültigen Ausdrücke (z.B. Division durch 0) entstehen können
- Keine Endlosschleifen erzeugt werden (weil Feld A als Platzhalter in Feld B verwendet wird und gleichzeitig Feld B als Platzhalter in Feld A)
- oder anderweitig invalide Formeln entstehen
Trennzeichen
Alle Zahlen, die im Feld Berechung verwendet werden, müssen als Dezimaltrenner einen Punkt enhalten (nicht wie im deutschen Sprachraum üblich ein Komma). Alle Werte die in die Berechnung einfließen, sei es aus dem String im Feld Berechnung selbst oder aus Werten, die aus anderen Feldern kommen (Platzhalter), dürfen niemals ein Tausendertrennzeichen enthalten!!!
Über die Option "Dezimaltrenner" haben Sie die Möglichkeit festzulegen, welcher Dezimaltrenner für die Darstellung das Ergebnis der Berechnung im Formular, beim Speichern der Werte in der Datenbank und bei der Datenanzeige z.B. in den Mails verwendet wird. D.h. auch wenn in der Berechnung überall Punkte als Dezimaltrenner geschrieben werden müssen, ist es doch möglich das Formular so einzurichten, dass der Benutzer die Ergebnisse mit einem Komma als Dezimaltrenner sieht.
Nachkommastellen und Genauigkeit
Mit Hilfe des Parameter "Genauigkeit" können Sie festlegen, auf wie viele Nachkommastellen das Ergebenis der Berechung gerundet werden soll. Bei einem Währungsbetrag würden Sie hier beispielsweise "2" eingeben.
Den Parameter "Nachkommastellen fix" können Sie verwenden um zu erzwingen, dass das Ergebnis bis zur durch den Parameter "Genauigkeit" festgelegten Anzahl Nachkommastellen mit Nullen aufgefüllt wird. Setzen Sie diesen Parameter auf "ja", wenn Sie mit Währungsbeträgen arbeiten.
Rechnen mit Datumsfeldern
Da Datumsfelder im engeren Sinn keine Zahlen enthalten, funktioniert das Rechnen mit Datumsfeldern etwas anders. Bitte lesen Sie den entsprechenden Dokumentationsbeitrag - Rechnen mit Datumsfeldern durch, wenn Sie dieses Feature verwenden wollen.
Im folgenden Abschnitt zeigen wir Ihnen konkret, welche Felder und Formeln wir verwendet haben, um das Beispielformular zu erstellen.