Dynamische Webseiten mit PHP

Kontrollstrukturen

Vergleiche

Jetzt soll aber etwas mit den Daten passieren. Zum Beispiel soll bei einer Passwortabfrage die eingegebenen Daten mit dem richtigen Passwort verglichen werden. Darüf benötigen wir Kontrollstukturen. In diesem Fall eine bedingte Verzweigung, die das Programm verzweigt, also je nach Situation (Passwort richtig oder falsch) anders reagieren lässt.. Ist das Passwort richtig begrüße den Nutzer, ist es falsch gib eine Fehlermeldung aus.

Um überhaupt verzweigen zu können müssen wir erst einmal vergleichen können. Folgendes

$passwort = "geheim";

war ja eine Wertzuweisung und kein Vergleich oder gar Gleichung. Ein Vergleich in PHP wäre:

$passwort == "geheim"

Folgede Vergleichsoperatoren kennt PHP:

== ist gleich
!= ist ungleich
< ist kleiner als
> ist größer als
<= ist kleiner oder gleich
=> ist größer oder gleich

Das Ergebnis von Vergleichen ist immer ein boolscher Wert, kann also nur true oder false sein.

Die Vergleiche können auch aus mehreren Komponenten zusammengesetzt werden. Auch dann ist das Ergebnis jedoch immer ein boolscher Wert.

$nutzername == "meyer" && $passwort == "geheim"

Das Beispiel würde nur dann true werden, wenn Nutzername und (&&) Passwort übereinstimmen. Wenn auch nur eines nicht übereinstimmt, ergibt der Vergleich false. Die Vergleiche können also mit sogenannten logischen Opperatoren zusammengesetzt werden.

Folgede logische Opperatoren kennt PHP (nach ihrer Rangfolge):

&& und
|| oder
xor entweder oder
! nicht

|| ergibt bereits true wenn einer der beiden Verleiche stimmt. Hingegen verlangt xor, dass nur eines der beiden zustimmen darf.

Beispiel. Was ist das Ergebnis? (Auflösung am Ende der Seite)
$Beitrag1 = 501;
$Beitrag2 = 799;
$Beitrag3 = 400;
($Beitrag1 > 500) || ($Beitrag2 < 800) && !(Beitrag3 = = 400)

Hier ist die Rangfolge der Operatoren zu beachten!
&& immer vor ||


Bedingte Verzweigungen

IF

Mit der if Bedingung, kann man die Ausführung eines Programmcodes von dem Ergebnis eines Vergleiches abhängig machen. Die Vergleiche stehen hinter dem Schlüsselwort if in runden Klamern. Gefolgt wird dies durch einen Anweisungsblock aus geschweiften Klammern. Dieser Block wird dann ausgeführt, wenn wenn der Vergleich insgesamt true ergibt.

if ($wert < 0) {
...
}

Diese Anweisung kann erweitert werden um einen Anweisungsteil, der ausgeführt wird, wenn der Vergleich false ergibt.

else {…}

oder für weitere Fälle:

else if (vergleich){…}

IF-Bedingungen können auch ineinander geschachtelt werden.

Für einfache If-bedigungen gibt es eine Kurzform:
$erg = ($var1 < $var2) ? true : false;

Passwortabfrage:
if (($kennung == ”Paul”) && ($passwort == ”xxx”)) {
echo „Paul, bist Du es?“;
}

SWITCH

Die switch Anweisung kann eine ganze Reihe von if- und else if-Anweisungen recht komfortabel zusammenfassen. Switch funktioniert dabei wie ein Verteiler, der in Abhängigkeit einer Variablen einen von verschiedenen Anweisungsblöcken ausführt.
Nach dem Schlüsselwort switch wird zunächst in runden Klammern die Variable genannt, die Zahlen, Zeichen oder auch Strings enthalten kann. Darauf folgt mit dem Schlüsselwort case der Wert mit dem die Variable verglichen werden soll und ein Doppelpunkt. Bis zum nächsten case Befehl folgen dann die Anweisungen, die mit einer Anweisungszeile break; abgeschlossen werden. Switch kann mit einem default Block beendet werden, der jedesmal aufgerufen wird, wenn kein case Vergleich zutrifft.

switch (variable) {
case wert1:
anweisungen;
break;
case wert1:
anweisungen;
break;
case wert1:
anweisungen;
break;
default:
anweisungen;
break;
}


Auflösung:

Das Ergebnis ist: true ( 500) || ($Beitrag2 < 800) && !(Beitrag3 == 400); ?>)