While-Schleife
In manchen Fällen ist es notwendig, eine Anweisung so lange auszuführen, bis ein bestimmtes Ergebnis eintritt. So möchte ich jetzt zB bis zu einer bestimmten Zahl zählen. Die Zahl soll allerdings nicht voher bestimmt werden, sondern soll vom Benutzer angegeben werden können. Wer sich das einmal ansehen möchte, klickt doch bitte mal hier.
Mittels eines Formulars wird die Variable zahl an die darauffolgende Datei (form4.php) übergeben. In der Datei steht folgendes:
$zahl = $HTTP_POST_VARS["zahl"];
if($zahl > 25)
{
$zahl = 25;
}
?>
Zunächst wird die über das Formular übermittelte Variable wieder in ihren "kurzen Namen" umgeschrieben. Dann wird überprüft, ob die Zahl wirklich kleiner als 25 ist (ich könnte auch weiter zählen lassen, aber das ist ja nicht notwendig und zum Schluss kommt jemand auf die Idee und zählt bis 1.000.000 oder so). Dazu lautet die Bedingung der if-Anweisung $zahl > $25 - also Wenn die Variable zahl größer als 25 ist, dann .... Anschließend erfolgt die Anweisung, die bewirkt, dass die Variable zahl auf 25 gesetzt wird, aber nur dann, wenn sie eben vorher größer als 25 war - ... setze die Variable zahl auf 25..
Der nächste Schritt ist jetzt die while-Schleife.
Bei while-Schleifen arbeitet man meistens mit einem "internen Counter", der zunächst initialisiert wird - in diesem Fall mit dem Wert 1.
$count = 1;
?>
Dabei wird einfach einer beliebigen Variable - in diesem Fall der Variable count - ein Wert zugewiesen. Das ist deswegen notwendig, weil die while-Schleife solange ausgeführt wird, wie eine bestimmte Bedingung zutrifft. Um so eine Bedingung zu schaffen, legen wir diese Variable count fest und zählen diese dann in der Schleife jeweils um 1 hoch (Du erinnerst dich an $count++;?).
Das klingt zunächst verwirrend ... aber schauen wir uns doch einfach mal die Schleife an ...
while($count < $zahl)
{
echo $count,", ";
$count++;
}
?>
Gehen wir davon aus, dass unsere Variable zahl den Wert 5 erhalten hat. Sie kommt damit unbeschadet durch die if-Anweisung (diese greift ja nur, wenn der Wert größer als 25 ist). Jetzt kommt unsere while-Schleife.
Direkt nach dem einleitenden while wird innerhalb einer runden Klammer die Bedingung geschrieben (genauso, wie bei einer if-Anweisung). Solange diese Bedingung zutrifft, wird jetzt die Anweisung, die in geschwungenen Klammern geschrieben wird ausgeführt.
Bei uns lautet die Bedingung $count < $zahl. Die Variable count muss also kleiner als die Variable zahl sein. Momentan ist count auf 1 und zahl auf 5, das heißt, die Bedingung ist wahr - also erfüllt und die Schleifenanweisung wird durchlaufen.
In der steht jetzt echo $count,", ";. Es wird also der Inhalt der Variable count (momentan 1) ausgegeben und danach werden ein Komma und ein Leerzeichen gesetzt.
Die zweite Anweisung lautet nun so, dass die Variable count um 1 erhöht werden soll. Diese Anweisung ist absolut wichtig, da es sich sonst um eine Endlosschleife handelt und der Computer dabei abstürzt!!
Durch die Erhöhung um 1 hat die Variable count jetzt den Wert 2. Die Anweisung ist damit beendet und die while-Schleife wird erneut getestet.
Da 2 noch immer kleiner ist als der Inhalt der Variable zahl (5) wird die Schleife wieder durchlaufen. Jetzt wird die Zahl 2 ausgegeben und danach wird die Variable count auf 3 erhöht.
Das gleiche erfolgt jetzt solange, bis die Variable count auf 5 erhöht wurde. Wird jetzt die Schleifenbedingung überprüft, ist sie nicht mehr erfüllt, da 5 nicht kleiner als 5 ist. Daher wird jetzt nicht mehr die Schleife durchlaufen.
Unsere Zählung ist aber noch nicht beendet - bis jetzt steht nämlich nur 1, 2, 3, 4 hier - es soll aber bis 5 gezählt werden.
Aus dem Grund erfolgt jetzt der letzte Teil der PHP-Anweisung:
echo $zahl;
?>
Die Variable zahl wird ausgegeben. Da die Variable count den gleichen Wert hat, könnte alternativ auch sie ausgegeben werden.
Du wunderst dich, warum wir das so kompliziert machen und zum Schluss die Zahl extra ausgeben? Nun, das liegt an der Formatierung.
Durch die Anweisung in der while-Schleife schreiben wir ja nach jeder Zahl ein Komma Leerzeichen. Das ist aber bei der letzten Zahl nicht erwünscht. Daher lassen wir die while-Schleife nur solange ausführen, bis der Wert 4 angezeigt wird und schreiben an das Ende nur noch die höchste Zahl.
Es ist ganz wichtig, dass du bei while-Schleifen, die eine Bedingung im Stil von $count < Zahl beinhalten nicht vergisst, die Variable count (oder wie du sie eben nennen möchtest) durch $count++; hoch zu zählen!!
Wirklich oft verwenden werden wir diese Schleife bei mySQL.
|