PHP 4.3

4.8.1 Fehler abfangen

 <?php

   if (isset($HTTP_GET_VARS["preis"])) {
     echo "Sie haben den Artikel <b>" . $HTTP_GET_VARS["artikel"] . "</b> " . $HTTP_GET_VARS["menge"] . 
" mal zum Gesamtpreis von " . ($HTTP_GET_VARS["menge"] * $HTTP_GET_VARS["preis"]) . " Euro gekauft.";

   } else {
     echo "Geben Sie einen beliebigen Artikel mit der gewünschten Bestellmenge ein und klicken Sie anschließend 
auf Kaufen.<br><br>";
   }

 ?>

Die erste Erweiterung ist damit gegeben.
Die zweite Aufgabe können wir erfüllen, indem wir weitere if-Anweisungen einbetten, welche die übertragenen Daten der Eingabefelder prüfen und dann je nach Zustand eine Fehlermeldung ausgeben.
Dazu prüfen wir zuerst mit einer logischen OR-Verknüpfung, ob eines der Felder nicht korrekt ausgefüllt wurde. Andersherum könnten wir genauso mit einer AND-Verknüpfung prüfen, ob beide korrekt ausgefüllt wurden.
Wenn mindestens eine Angabe fehlt, prüfen die zwei folgenden if-Anweisungen, welche Angabe fehlerhaft oder nicht getätigt wurde. Natürlich können auch in beiden Feldern die Angaben fehlen.
Waren hingegen alle Angaben richtig, erfolgt die Berechnung und Ausgabe des Gesamtpreises.

Fehler abfangen
<?php

  $menge = (int) $HTTP_GET_VARS["menge"];
  if (isset($HTTP_GET_VARS["preis"])) {
    if (empty($HTTP_GET_VARS["artikel"]) || $menge < 1) {
      echo "Bitte tätigen Sie noch folgende Angabe(n):<br>";
      if (empty($HTTP_GET_VARS["artikel"])) {
        echo "- Artikel<br>";
      }
      if ($menge < 1) {
        echo "- Menge<br>";
      }
    } else {
      echo "Sie haben den Artikel <b>" . $HTTP_GET_VARS["artikel"] . "</b> " . $menge . 
" mal zum Gesamtpreis von " . ($menge * $HTTP_GET_VARS["preis"]) . " Euro gekauft.";
    }
  } else {
    echo "Geben Sie einen beliebigen Artikel mit der gewünschten Bestellmenge ein und 
klicken Sie anschließend auf Kaufen.<br><br>";
  }
?>

Wie Sie sehen, wandeln wir $HTTP_GET_VARS["menge"] am Anfang des Skripts in einen Integer $menge um. Dies ist notwendig, da PHP alle Parameter aus Formularen als Strings ansieht. Würde ein Benutzer aus Versehen die beiden Eingabefelder verwechseln, und beispielsweise "Äpfel" in das Feld "Menge" eintragen, würde der Wert nach der Umwandlung 0 betragen.

Da wir gleichzeitig verhindern müssen, dass ein Benutzer Zahlenwerte kleiner oder gleich 0 eingibt - negative Einkaufsmengen lassen sich schlecht realisieren, und nichts zu kaufen lohnt den Aufwand nicht - prüfen wir zudem nicht mit den Funktionen isset() oder empty(), sondern durch den einfachen Vergleichsoperator <.

Falls einer der Zustände nicht zutrifft, also $menge kleiner oder gleich 0 ist, wird die Gesamtbedingung nicht erfüllt und eine Fehlermeldung ausgeben.

Kommentare (0)

Ihr Kommentar

Name