4.4.5 Kontrollstrukturen (if, else, for, include etc.)
-
1 Allgemein
Workshops und Tutorials
PHP.net:
phpbox:
-
Bedingte bzw. wiederholte Ausführung (Schleifen) von Code, Beendigung
des Skripts...
PHP-Kurs.com:
Video Tutorial:
-
2 if
a) Prinzip
if
-
Mit if kann überprüfet werdem, ob bestimmte Bedingungen erfüllt
bzw. nicht erfüllt sind.
-
Wenn ... dann
b) Beispiel 1: Nur eine Bedingung
<?php
$benutzername = "Hans";
if($benutzername == "Hans")
{
echo "Lieber Hans";
}
?>
b) Beispiel 2: Mit einem logischen Operator and
⇒ Siehe "Operatoren/Logische Operatoren (and, or, xor etc.)
<?php
$benutzername = "Hans";
$passwort = "1234";
if($benutzername == "Hans" and $passwort == "1234")
{
echo "Zugriff erlaubt";
}
?>
c) Beispiel 3: Gästebuch "Speichern"
1) Kontrolle ob das Spam-Feld leer ist:
-
if ($gb_spam == "") {
$x_spam = true;} else {$x_spam = false;}
Fall a) Das Spam-Feld ist leer:
-
$x_spam = true; Es kann im nächsten Schritt
weiterverarbeitet werden.
Fall b) Im Spam-Feld befindet sich ein Eintrag:
-
$x_spam = false; Die Verarbeitung im nächsten Schritt
wird nicht durchgeführt.
2) Mitteilung bei einem Eintrag im Spamfeld:
Bedingung: $x_spam = false
-
if ( !$x_spam) {
echo '<h2>Achtung Fehler!</h2>
<p>Bitte den Webmaster informieren</p>';
// Kontrolle des Spamfeldes
if ($gb_spam == "") {
$x_spam = true;} else {$x_spam = false;}
// Mitteilung bei einem Eintrag im Spamfeld
if ( !$x_spam) {
echo '<h2>Achtung Fehler!</h2>
<p>Bitte den Webmaster informieren</p>';
}
3) Weiterverarbeitung wenn das Spamfeld leer ist :
Bedingung: $x_spam = true
Kontrolle ob gespeichert werden kann
-
if ( $x_spam ){
// in die Datenbank schreiben (hier nicht gezeigt)
...
-
Wenn die Bedingung erfüllt ist, kann weitere Ablauf mit der
Speicherung durchgeführt werden.
-
Wenn die Bedingung nicht erfüllt ist, wird der Vorgang abgebrochen.
<!-- Kontrolle und speichern -->
<?php
// Kontrolle ob das Spam-Feld leer ist
if ( $x_spam ){
// in die Datenbank schreiben (hier nicht gezeigt)
...
Link zur Anzeige der Einträge
-
Wenn alle bisherigen Schritte erfolgreich waren wird ein Link auf dem
Bildschirm gezeigt, mit dem die Einträge ins Gästebuch
eingesehen werden können.
Code: echo'...';
Link: <a href="../gaestebuch#eintraege">...</a>
Anzeige ...: Gästebuch mit den neuen Einträgen
// Link zu den Einträgen im Gästebuch zeigen
echo '
<h3> <br><br><br><br>
<a href="../gaestebuch#eintraege">
Gästebuch mit den neuen Einträgen
</a></h3>';
}
?>
d) PHP.net
<?php if (ausdr) Anweisung ?>
-
Wie im Abschnitt über Ausdrücke beschrieben, wird ausdr auf seinen
boolschen Wertinhalt ausgewertet. Wenn ausdr als TRUE ausgewertet wird,
führt PHP die Anweisung aus. Falls die Auswertung FALSE ergibt, wird die
Anweisung übergangen. Mehr Informationen darüber welche Werte als FALSE
ausgewertet werden finden Sie im Abschnitt 'Umwandlung nach boolean'.
e) Video Tutorial
-
3 else/elseif
a) Prinzip
else
-
Wenn ... dann .. sonst ...
b) PHP.net
<?php if ($a > $b) {print "a ist grösser als b";
} else { print "a ist NICHT grösser als b"; }?>
-
Häufig möchten Sie eine Anweisung auszuführen, wenn eine bestimmte
Bedingung erfüllt ist und eine andere Anweisung, falls sie nicht erfüllt
ist. Dafür gibt es else. else erweitert eine if-Anweisung um die
Ausführung von Anweisungen, sobald der Ausdruck der if-Anweisung als
FALSE ausgewertet wird. Der folgende Code wird z.B. a ist grösser als b
ausgeben, wenn $a grösser als $b ist, anderenfalls a ist NICHT grösser als b:
c) DSP/Reeg
d) Video Tutorial
-
4 for
a) Prinzip
for
-
5 foreach (Kontrollstruktur nur für Arrays)
⇒ Siehe "Arrays"
foreach (Kontrollstruktur nur für Arrays)
-
Das
foreach Konstrukt ermöglicht es, auf einfache Weise ein
Array zu durchlaufen.
-
foreach funktioniert nur in Verbindung mit Arrays.
-
6 while
a) Prinzip
while
b) PHP.net
while (ausdr) Anweisung
-
Die while-Schleifen sind die einfachste Form von Schleifen in PHP.
-
Die Bedeutung einer while-Anweisung ist einfach. Sie weist PHP an,
einen in ihr eingebetteten Befehl so lange zu wiederholen, wie die
while-Bedingung als TRUE ausgewertet wird. Der Wert der Bedingung wird
immer am Anfang der Schleife geprüft. Wird der Wert während der
Ausführung der Anweisungen innerhalb der while-Schleife verändert,
endet die Ausführung dieses Anweisungsblocks erst mit dem Ende der
Iteration (Jeder Schleifendurchlauf ist eine Iteration).
Falls die while-Bedingung bereits beim ersten Mal FALSE ist, werden die
Anweisungen der while-Schleife nicht ein einziges Mal durchlaufen.
c) phpbox
while(Bedingung) {zu wiederholender Code}
-
Mit der Funktion while wird eine Schleife gebildet, die solange
ausgeführt wird, solange die im Parameter "Bedingung" angegebene
Bedingung erfüllt (bzw. wahr) ist. Die Bedingung muss von runden
Klammern eingefasst sein, der zu wiederholende Code -sofern dieser sich
über mehrere Zeilen erstreckt- von geschweiften Klammern.
-
Die Bedingung wird mit Vergleichsoperatoren formuliert
(z. Bsp. $a=0). Wird die Bedingung während der Abarbeitung des zu
wiederholenden Codes unwahr (z. Bsp. $a bekommt den Wert 0),
so wird die Schleife nicht abgebrochen, denn anders als bei der
Funktion do...while wird die Bedingung stets vor der Ausführung des
Codes geprüft. Die Bedingung sollte stets gut bedacht sein, damit
Endloschleifen vermieden werden.
-
Die Schleife kann auch vorzeitig (d.h. ohne dass die Bedingung unwahr ist)
verlassen werden, indem eine mit if bedingte break-Anweisung eingebaut wird.
d) DSP/Reeg
-
7 do while
a) Prinzip
do while
b) PHP.net
-
<?php $i = 0; do {echo $i; } while ($i>); ?>>
-
do..while-Schleifen sind den while -Schleifen sehr ähnlich, ausser dass
der Wahrheitsgehalt des Ausdrucks erst am Ende jedes Durchlaufs geprüft
wird, statt am Anfang. Der Hauptunterschied zu gewöhnlichen
while-Schleifen ist der, dass die Schleife bei do..while in jeden Fall
einmal durchlaufen wird (die Bedingung wird erst am Ende eines Durchlaufs
geprüft).Bei while-Schleifen hingegen kann es durchaus passieren, dass
die Schleife nie durchlaufen wird (die Bedingung wird immer am Anfang
eines Durchlaufs überprüft. Wird diese Bedingung von Anfang an als FALSE
ausgewertet endet die Ausführung der Schleife sofort).
c) phpbox
-
do {zu wiederholender Code} while(Bedingung)
-
Mit der Funktion do...while wird eine Schleife gebildet, die solange
wiederholt wird, solange die im Parameter "Bedingung" angegebene Bedingung
erfüllt (bzw. wahr) ist. Die Bedingung muss von runden Klammern eingefasst
sein, der zu wiederholende Code -sofern dieser sich über mehrere Zeilen
erstreckt- von geschweiften Klammern.
-
Die Bedingung wird mit Vergleichsoperatoren formuliert (z. Bsp. $a=0).
Anders als bei der Funktion while wird die Bedingung erst nach Abarbeitung
des zu wiederholenden Codes geprüft, so dass dieser in jedem Fall
zumindest einmal ausgeführt wird.
-
Die Schleife kann auch vorzeitig (d.h. ohne dass die Bedingung unwahr ist)
verlassen werden, indem eine mit if bedingte break-Anweisung eingebaut wird.
d) DSP/Reeg
-
8 include Einbinden und Auswerten einer Datei
a) Prinzip
include()
-
Die
include() Anweisung bindet die angegebene Datei ein und
wertet diese aus.
b) Beispiel 1: Suche in PHP.net
1) Einlesen mit "include"
<?php
include "../include/suche/phpnet.php";
?>
2) Quelltext der "Include-Datei":
<form method="post" action="http://www.php.net/search.php">
<p> Suche in PHP.net
<input type="text" name="pattern" value="" size="30">
<input type="image"
src="http://static.php.net/www.php.net/images/small_submit_white.gif"
class="submit" alt="search">
<input type="submit" value="Suchen">
</p>
</form>
3) Anzeige im Dokument
c) Beispiel 2: Anzeige des Eingabeformulars des Gästebuches
1) Codes in der HTML-Datei zum Einlesen der Include-Datei
-
<?php Anfangs-Tag des PHP-Befehles.
-
include "../include/gb/formular.php"; Einlesen des Formulars.
-
?> End-Tag des PHP-Befehles.
<?php
include "$punkte/include/gb/formular.php";
?>
2) Anzeige des Formular:
3) Bemerkungen zur Anzeige:
Formatierung:
-
Dieses Formular ist in der Anzeige in diesem Dokument nicht
formatiert, da das entsprechende Stylesheet nicht in dieses Dokument
eingelesen wurde.
-
Dies zeigt aber, dass die Formatierung nicht in der Include-Datei,
sondern im HTML-Dokument enthalten sein muss.
Spezielle Bemerkung zum Spamfeld (nach dem Feld der E-Mail Adresse):
-
Da in diesem Dokument das Stylesheet nicht aktiv ist, ist das durch das
Stylesheet unsichtbar gemachte Spamfeld nun sichtbar.
↑