Der Feldtyp Berechnung

Der Feldtyp Berechnung

Hinweis: Diese Feature sind 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 “Berechnung” geben Ihnen die Möglichkeit eine Berechnungs-Formel zu erstellen, deren Ergebnis direkt im Formular angezeigt wird. Die Formel wird in der Feldkonfiguration in einer Textarea eingeben. Sehen Sie dazu auch den Screenshot.

Die Formel kann Platzhalter enthalten, die andere Felder im Formular repräsentieren. Bei der Berechnung des Ergebnisses werden die Platzhalter ersetzt mit den Werten, die der Benutzer für dieses Formularfeld eingibt. Weiterhin kann die Formel Zahlen, mathematische Operatoren und mathematische Funktionen enthalten.

Einige konkrete Beispiel-Formeln finden Sie im nächsten Abschnitt: Anleitung Verkaufsformular.

Konfigurationseinstellungen für den Feldtyp “Berechnung”

Feldtyp Berechnung Konfiguration

Feldtyp Berechnung im Frontend

Feld Berechnung im Formular

Das Ergebnis der Berechnung wird im Formular automatisch aktualisiert und immer als “readonly-Wert"angezeigt. Sobald der Benutzer eine Eingabe in einem Formularfeld geändert hat, das in die Berechnung eingeht, wird die Berechnung neu durchgeführt und das Ergebnis im Formular aktualisiert.

Platzhalter

Alle Felder der folgenden Typen können in einer Berechnung als Platzhalter verwendet werden:

  • Berechnung,
  • Listbox,
  • Zahl,
  • Text,
  • Versteckt,
  • Checkbox,
  • Radio Button,
  • Select SQL,
  • Radio SQL,
  • Datum.

Syntax für einen Platzhalter

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.

Platzhalter müssen einen Zahlenwert ergeben

Hinweis: Wenn Sie Benutzereingaben aus einem Feld in einer Berechnung verwenden wollen, dann müssen Sie sicherstellen, dass dieses Feld immer einen Zahlenwert enthält. Ansonsten kann die Berechnung nicht korrekt durchgeführt werden.

Besonders zu beachten

  • Die Werte aller Optionen, die Sie für Listboxen anlegen, müssen numerisch sein (Zahlenwerte).
  • Feste Zahlenwerte müssen einen Punkt als Dezimaltrenner haben.
  • Feste Zahlenwerte dürfen kein Tausendertrennzeichen verwenden.
  • Hinterlegen Sie für alle Felder, die in einer Berechnung verwendet werden, in der Option “Fallbackwert für Berechnung” einen sinnvollen Zahlenwert.
    Standardmäßig ist hier der Wert 0 gesetzt.

Mathematische Operatoren

Sie können in der Formel im Feld vom Typ “Berechnung” folgende Operatoren verwenden:

  • +
  • -
  • *
  • /

Mathematische Funktionen

Sie können in der Formel im Feld vom Typ “Berechnung” folgende PHP-Funktionen verwenden:

  • Absolutwert: abs()
  • Sinusfunktionen: sin(), asin(), asinh()
  • Cosinusfunktionen: cos(), acos(), acosh()
  • Tangensfunktionen: tan(), atan(), atanh()
  • Rundungsfunktionen: ceil(), floor(), round()
  • Exponential-/Potenzfunktionen: exp(), pow()
  • Logarithmusfunktionen: log(), log10(), log1p()
  • Wurzelfunktion: sqrt()
  • Statistische Funktionen: max(), min()

Funktionen, die hier nicht aufgelistet sind, werden in Feldern vom Typ “Berechnung” nicht unterstützt und führen zu einem Fehler in der Berechnung.

Hinweis: Bitte konsultieren Sie eine PHP-Dokumentation, um zu erfahren, was die Funktionen im einzelnen Berechnen und welche Parameter sie erwarten.

Wie funktionieren Felder vom Typ Berechnung

Im Formular

Visforms berechnet beim ersten Anzeigen des Formulars im Frontend automatisch das Ergebnis der Formel und zeigt das Ergebnis als Wert der Formularfeldes an.

Visforms berücksichtigt dabei

  • die Formel, die Sie in im Feld vom Typ Berechnung eingegeben haben und
  • die Defaultwerte, die Sie für alle Platzhalterfelder in der Formel festgelegt haben.

Wenn der Benutzer einen Wert in einem Platzhalterfeld ändert, wird das Ergebnis aller Formeln, die dieses Platzhalterfeld verwenden, neu berechnet. Der Benutzer sieht 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, ob alle übermittelten Formulardaten valide sind. Anschließend wird serverseitig das Ergebnis aller Felder vom Typ Berechnung unter Verwendung der übermittelten Benutzereingaben berechnet. Diese zweite serverseitige Berechnung erfolgt in PHP und stimmt mit den clientseitigen Berechnungen in JavaScript durch den Web-Browser überein. Die Ergebnisse der serverseitigen Berechnung werden in der Datenbank gespeichert, sofern Sie diese Option im Formular aktiviert haben. Die Ergebnisse werden auch in den Ergebnismails verwendet.

Hinweis: Die Trennung zwischen der Berechnung der Ergebnisse im Frontend mittels JavaScript und der hiervon unabhängigen zweiten Berechnung der Ergebnisse serverseitig mit PHP bietet Ihnen maximalen Schutz bei der Verwendung von Feldern vom Typ Berechnung.

Bein einer umfangreichen komplexen Formel empfehlen wir Ihnen, das Formular gut zu testen. Überprüfen Sie, dass die Berechnung im Frontend als auch die serverseitige Berechnung im Backend die erwarteten gleichen Ergebnisse liefern. Bei eher einfachen Formeln ist das aber nicht unbedingt notwendig.

Das müssen Sie befolgen

Die 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. Sie können auch Felder, die selbst vom Typ “Berechnung” sind, in einer anderen Berechnung einbinden.

Hinweis: Deshalb ist es leider auch möglich, dass Sie eine Formel erstellen, die fehlerhaft ist.

Sie müssen beim Erstellen der Formel folgendes selbst sicherstellen:

  • Alle Platzhalter müssen immer valide Zahlenwerte enthalten, auch wenn der Benutzer keine Auswahl triff.
    Sie müssen daher Felder, die als Platzhalter verwendet werden, mit einem sinnvollen Defaultwert belegen, etwa dem Wert 0 oder 1.
    Visforms unterstützt Sie hierbei, indem es nur die Verwendung bestimmter Feldtypen als Platzhalterfelder zulässt und die zusätzliche Option “Fallbackwert für Berechnung” anbietet. Bei Checkboxen ist dies die zusätzliche Option “Unchecked Wert für Berechnung”. In dieser zusätzlichen Option können Sie einen Defaultwert festlegen, der in der Berechnung verwendet wird, falls das Feld im Formular keinen Wert enthält.
  • Es dürfen keine mathematisch ungültigen Ausdrücke entstehen können, etwa die berühmte Division durch 0.
  • Es dürfen keine Endlosschleifen erzeugt werden.
    Dies kann leicht passieren, etwa weil Feld A als Platzhalter in Feld B verwendet wird und gleichzeitig Feld B als Platzhalter in Feld A.
  • Es dürfen keine anderweitig invalide Formeln entstehen.

Trennzeichen für Nachkommastellen und Tausender-Trennzeichen

Alle Zahlen, die im Feld Berechnung verwendet werden, müssen einen Punkt als Dezimaltrenner enthalten, also 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 durch Platzhalter kommen, dürfen kein Tausendertrennzeichen enthalten.

Hinweis: Auch wenn in der Berechnung Punkte als Dezimaltrenner geschrieben werden müssen, ist es leicht möglich das Formular so einzurichten, dass der Benutzer die Ergebnisse mit einem Komma als Dezimaltrenner sieht.

Über die Option “Dezimaltrenner” haben Sie die Möglichkeit festzulegen, welcher Dezimaltrenner für die Darstellung verwendet werden soll.

Die Einstellung der Option “Dezimaltrenner” für das Ergebnis der Berechnung betrifft:

  • die Darstellung im Formular,
  • das Speichern der Werte in der Datenbank und
  • die Datenanzeige etwa in den verschickten Mails.

Nachkommastellen und Genauigkeit

Mithilfe des Parameter Genauigkeit können Sie festlegen, auf wie viele Nachkommastellen das Ergebnis der Berechnung 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 folgenden Abschnitt der Dokumentation, wenn Sie dieses Feature verwenden wollen: Rechnen mit Datumsfeldern.

Alle Felder und Formeln für das Beispielformular

Im folgenden Abschnitt zeigen wir Ihnen konkret, welche Felder und Formeln wir verwendet haben, um das Beispielformular zu erstellen: Anleitung Verkaufsformular.