Tutorial: Formularberechnungen

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
Post Reply
User avatar
santscho
Posts: 1368
Joined: Mon 2. Apr 2007, 08:56
Location: Singapore
Contact:

Tutorial: Formularberechnungen

Post by santscho » Mon 20. Jan 2014, 08:40

Hier ein paar Formular-Berechnungen

Zuerst eine leere php-Datei "kalkulation.php" erstellen in template/inc_script/frontend_init

Beispiel 1: Formular-Felder addieren.
5 Felder: wert1, wert2, wert3, wert4, wert5
1 Feld hidden: total

Kalkulation.php:

Code: Select all

<?php
if(isset($_POST)) {
$ans1 = $_POST['wert1'];
$ans2 = $_POST['wert2'];
$ans3 = $_POST['wert3'];
$ans4 = $_POST['wert4'];
$ans5 = $_POST['wert5'];
$_POST['total'] = $ans1 + $ans2 + $ans3 + $ans4 + $ans5;
}
?>

Beispiel 2: Formularfelder multiplizieren
1 Feld (unbedingt sicherstellen dass nur Zahlen akzeptiert werden): anzahl_fotos
1 Feld hidden (hier den Preis pro Stueck als default eingeben): preis_foto
1 Feld hidden: total

Kalkulation.php:

Code: Select all

<?php
// Formular was sent
if(isset($_POST['anzahl_fotos'])) {
  // Calculation here...
    $_POST['total'] = xss_clean($_POST['anzahl_fotos']) * xss_clean($_POST['preis_foto']);
}
?>
Schon Konfuzius sagte: "Sei kein YAML-Lappen". YAML-phpwcms-Integration auf http://www.yaml.phpwcms.org

User avatar
update
Moderator
Posts: 6394
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Tutorial: Formularberechnungen

Post by update » Mon 20. Jan 2014, 08:52

Ay Ay Danke!
Das fängt ja gut an :D :D
It's mostly all about webdesign, logo design, new and old pages refresh, print BUT slowly switching to be supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.

User avatar
santscho
Posts: 1368
Joined: Mon 2. Apr 2007, 08:56
Location: Singapore
Contact:

Re: Tutorial: Formularberechnungen

Post by santscho » Mon 20. Jan 2014, 09:23

Im Beispiel 2 moechte ich nun noch halben Preis pro foto berechenen wenn die Checkbox "Member" angetickt wird. Werte fuer die Checkbox: 1 (nicht member) und 2 (member)
Etwa so...

Code: Select all

<?php
// Formular was sent
if(isset($_POST['anzahl_fotos'])) {
  // Calculation here...
    $_POST['preis_foto_member'] = xss_clean($_POST['preis_foto']) / xss_clean($_POST['member']);
    $_POST['total'] = xss_clean($_POST['anzahl_fotos']) * xss_clean($_POST['preis_foto_member']);
}
?>
Schon Konfuzius sagte: "Sei kein YAML-Lappen". YAML-phpwcms-Integration auf http://www.yaml.phpwcms.org

User avatar
Oliver Georgi
Site Admin
Posts: 9577
Joined: Fri 3. Oct 2003, 22:22
Location: Moscow, Russia
Contact:

Re: Tutorial: Formularberechnungen

Post by Oliver Georgi » Mon 20. Jan 2014, 10:01

Nie nur auf $_POST testen — das ist immer gesetzt, da Superglobale. Immer konkret. Und Typprüfung bzw. Umwandlung nicht vergessen!

Code: Select all

<?php
if(isset($_POST['wert1])) {
$ans1 = (int) $_POST['wert1'];
$ans2 = (int) $_POST['wert2'];
$ans3 = (int) $_POST['wert3'];
$ans4 = (int) $_POST['wert4'];
$ans5 = (int) $_POST['wert5'];
$_POST['total'] = $ans1 + $ans2 + $ans3 + $ans4 + $ans5;
}
?>
Und Obacht mit dem xss_clean, das ist nicht nötig hier. Wenn dort Zahlen erwartet werden, einfach Typumwandlung vornehmen.

Code: Select all

<?php
// Formular was sent
if(isset($_POST['anzahl_fotos'])) {
  // Calculation here...
    $_POST['member'] = floatval($_POST['member']);
    $_POST['preis_foto'] = floatval($_POST['preis_foto']);
    $_POST['anzahl_fotos'] = intval($_POST['anzahl_fotos']);
    // attention division / 0 
    if($_POST['member'] && $_POST['preis_foto'] && $_POST['anzahl_fotos']) {
        $_POST['preis_foto_member'] =  $_POST['preis_foto'] / $_POST['member'];
        $_POST['total'] = $_POST['anzahl_fotos'] * $_POST['preis_foto_member'];
    } else {
        $_POST['preis_foto_member'] = 0; // This cannot be!!! 
        $_POST['total'] = 0;
        // ERROR Handling
    }
}
?>
Ich weiß nicht, warum Du hier intern mit $_POST arbeitest, also sinnvoller wäre, dass die Preise NICHT über Post kommen! Sonst kann ich das einfach manipulieren.
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон

Post Reply