Berechnung in php mit Checkboxen

Broesel01

Grünschnabel
Moin Moin zusammen,

da ich ein absoluter php-Neuling bin, und leider bei meinem Script nicht weiter komme, trotz unzähligen Versuchen, bitte ich hier mal um eure Hilfe.

Ich möchte mit meinem Formular folgendes berechnen.

ohne Checkbox = Anzahl * Tage * 70
mit Checkbox U5 = Anzahl * Tage * 40
mit Checkbox Minder = Anzahl * Tage * 80
mit Checkbox U5 und Minder = Anzahl * Tage * 110
mit Checkbox Bonus = Anzahl * Tage * 70 - 10%
mit Checkbox U5 und Bonus = Anzahl * Tage * 40 - 10%

Code:
<form name="form" action="berechnung_1.php" method="post"> 
	Anzahl: <input type="text" name="Anzahl" value="" size="20" maxlength="50" /> <br> 
	Tage: <input type="text" name="Tage" value="" size="20" maxlength="50" /> <br> 
	U5: <input type="checkbox" name="U5" value="1" /><br>
	Minder: <input type="checkbox" name="Minder" value="1" /><br>
	Bonus: <input type="checkbox" name="Bonus" value="1" /><br>

	<input type="submit" name="Rechnen" value="Berechnen"/>
</form>

Schon jetzt recht herzlichen Dank!

Gruss
- Broesel01 -
 
Hi Broesel01 und Willkommen hier im Forum,

wie sieht denn dein PHP-Code bis jetzt aus? Was passiert bis jetzt?
Die Aufgabe ist nicht so komplex, will dir aber jetzt nicht einfach nur ne Lösung her schreiben ;)

// Edit: Ich würde die "name" Attribute der Felder immer kleinschreiben, da eine gemischte Klein-/Gropschreibung bei PHP normal keinen Unterschied macht, bei $_POST / $_GET / $_REQUEST allerdings schon.

Grüße,
BK
 
Zuletzt bearbeitet:
Moin Moin,

ich habe Dank Google bald 15-20 Scripte durch, und nichts ging, sodass ich alles wieder gelöscht hatte.

Hatte mich dann am "Preisrechner" versucht (ebenfalls über Google gefunden), jedoch steh ich absolut auf dem Schlauch ;(

HTML:
<form method="POST" action="berechnung_3.php">
<b>Preisrechner:</b><br>
<br>
<input name="zahl1" size=6><br>
<input name="zahl2" size=6><br>

<input type="checkbox" name="mit" value="u5" /> u5<br>
<input type="checkbox" name="mit" value="minder" /> minder<br>
<input type="checkbox" name="mit" value="bonus" /> bonus<br>
<br>
<input type=submit name=submit value="Rechnen">
</form>

<?php
$zahl1 = $_GET["zahl1"];
$zahl2 = $_GET["zahl2"];

$flag = true; 
if(isset($_POST['mit']))  
	{
		switch($_POST['mit']) 
			{ 
				case u5: 
            		$summe = $zahl1*$zahl2*70;
           		$flag = false; 
            		break; 
        			case minder: 
            		echo'minder';
            		$flag = false; 
            		break; 
        		case bonus: 
            		echo'bonus';
            		$flag = false; 
            		break; 
    } 
} 

if ($flag) 
{ 
    echo'ohne checkbox';
}
?>
 
Hi,

in deinem Script rufst du die Zahlen mit $_GET ab, sendest das Formular aber mit POST weg.

// Edit: Ich würde es so lösen:
PHP:
<form name="formRechnen" method="post">
  Anzahl: <input type="text" name="anzahl" value="" size="20" maxlength="50" /> <br>
  Tage: <input type="text" name="tage" value="" size="20" maxlength="50" /> <br>
  U5: <input type="checkbox" name="u5" value="1" /><br>
  Minder: <input type="checkbox" name="minder" value="1" /><br>
  Bonus: <input type="checkbox" name="bonus" value="1" /><br>

  <input type="submit" name="rechnen" value="Berechnen"/>
</form>
<?php
  if(isset($_POST['anzahl'])) {
    // werte abrufen
    $anzahl = intval($_POST['anzahl']);
    $tage = intval($_POST['tage']);

    $u5 = isset($_POST['u5']);
    $minder = isset($_POST['minder']);
    $bonus = isset($_POST['bonus']);

    // hier dann rechnen
    $summe = $anzahl * $tage;
    if($u5 && $minder) {
      $summe *= 110;
    } elseif($u5 && !$minder) {
      $summe *= 40;
    } elseif(!$u5 && $minder) {
      $summe *= 80;
    } else {
      $summe *= 70;
    }

    if($bonus) {
      $summe *= 0.9;
    }

    echo "Summe=", $summe;
  }
?>

Grüße,
BK
 
Zuletzt bearbeitet:
Erstmal Danke für den Hinweis. Habe es in $_POST geändert.

Habe es getestet. Ohne Checkboxen bekomm ich das Echo ausgegeben.

Mit der Checkbox "u5" z.b. bekomme ich nur:

Notice: Use of undefined constant u5 - assumed 'u5' in /var/www/.../berechnung_3.php on line 23

[Tante Edit meint:]
Die Summe selbst von u5 bekomm ich schon mal ausgegeben, jedoch auch die Notice ;(
 
Zuletzt bearbeitet:
Hi,

Der Fehler liegt an dem "case xyz:". Hier versucht er "xyz" als Konstante zu interpretieren, findet aber keine, und nimmt daher dann den String "xyz". Strings gehören immer in Anführungszeichen.

Das mit dem Case funktioniert übrigens nicht für mehrere Werte. Laut deinem HTML Code kann nur maximal ein "mit" gesendet werden.

Grüße,
BK
 
Zuletzt bearbeitet:
Moin Moin,

in der Zwischenzeit kam noch eine Variable dazu ;(

Wenn die Checkbox "Minder" ausgewählt wurde, wird im Textfeld "minderanz" eine Anzahl angegeben.

Am Ende soll wie folgt berechnet werden.

anzahl - minderanz * 70 * tage = summe1
minderanz * 110 * tage = summe2
Summe = summe1 + summe2

Wie kann ich dies umsetzen?

Aktuelle Berechnung:
PHP:
  if(isset($_POST['anzahl'])) 
  	{
    	// werte abrufen
    		$anzahl = intval($_POST['anzahl']);
    		$tage = intval($_POST['tage']);
		$u5 = isset($_POST['u5']);
    		$minder = isset($_POST['minder']);
    		$minderanz = isset($_POST['minderanz']);
    		$bonus = isset($_POST['bonus']);

    // hier dann rechnen
    		$summe = $anzahl * $tage;
    		if($u5 && $minder) 
    			{
      			$summe *= 110;
    			} elseif($u5 && !$minder) {
      			$summe *= 40;
    			} elseif(!$u5 && $minder) {
      			$summe *= 80;
    			} else {
      			$summe *= 70;
    			}

    		if($bonus) 
    			{
      			$summe *= 0.9;
    			}
  	}
 
Zuletzt bearbeitet:
Hi,

dein Ansatz ist mal nicht so falsch, aber du verstehst anscheinend den Unterschied zwischen isset() und intval() noch nicht ganz.
Das isset() prüft, ob die gegebene Variable gesetzt ist, und liefert entweder false oder true zurück, quasi wahr oder falsch. Das intval() hingegen nimmt eine Variable, und wandelt diese in eine Zahl um.

Somit musst du $minderanz nicht mit isset(), sondern mit intval() abrufen.

Die Formeln kannst du dann entsprechend umsetzen.

Grüße,
BK
 
Zurück