Tutorial: Formularberechnungen

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

Tutorial: Formularberechnungen

Post by santscho »

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: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Tutorial: Formularberechnungen

Post by update »

Ay Ay Danke!
Das fängt ja gut an :D :D
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
User avatar
santscho
Posts: 1442
Joined: Mon 2. Apr 2007, 08:56
Location: Schweiz

Re: Tutorial: Formularberechnungen

Post by santscho »

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: 9919
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Tutorial: Formularberechnungen

Post by Oliver Georgi »

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