======Programme mit Bedingungen steuern====== **Eine kleine Anmerkung bevor es los geht: Manche denken immer noch, dass IF eine Schleife ist. Ich weiß nicht wieso, eventuell weil das Wissen falsch vermittelt wird. Aber IF ist __auf keinen Fall__ eine Schleife, IF ist eine __Bedingung__**\\ Genauso wie eines der Vorbilder, die Programmiersprache [[c:start|C]], beherrscht PHP die if-Bedingung. Diese Form der Bedingung ist sehr effektiv und kurz. Sie setzt sich aus dem Befehl ''if'' und einem nachfolgenden, in Klammern stehenden logischen Ausdruck, der [[php:operators|Bedingung]], zusammen. Danach beginnt ein Block von Anweisungen, der durch geschweifte Klammern begrenzt wird. \\ Trifft die Bedingung zu (True), erfolgt der Einstieg in den Anweisungsblock, der dann abgearbeitet wird. Bleibt die Bedingung unerfüllt (False), so wird der Anweisungsblock unbearbeitet ignoriert, bis das durch die geschweifte Klammer } bezeichnete Ende erreicht ist. \\ \\ Mit dieser einfachen [[php:syntax#bloecke_und_strukturen|Struktur]] und Deinen schon erlangten Kenntnissen, lässt sich bereits eine einfache Passwortabfrage programmieren (Als Hilfe siehe dir [[php:operators#vergleichsoperatoren| die Vergleichsoperatoren]] nochmals an). **Ausgabe:** ''Du darfst eintreten.'' In diesem Beispiel besitzen zwei Bedingungen die gleiche Kontrollfunktion. Ihre Zielsetzung ist aber verschieden. Die erste ''if''-Bedingung prüft, ob der Wert der Variablen $input übereinstimmt und vom gleichen Datentyp ist. Die zweite ''if''-Bedingung prüft, ob die beiden Variablen verschieden sind. Der Anweisungsblock der ersten ''if''-Bedingung wird ausgeführt, der der zweiten nicht.\\ Diese zwei Strukturen lass sich durch else((»sonst«)) zu einer Struktur zusammenlegen. **Ausgabe:** ''Gandalf sagt: DU...KOMMST...HIER....NICHT...VOOORBEIII!'' Auf den Befehl ''else'' folgt keine Bedingung, sondern gleich der Anweisungsblock. Der Anweisungsblock nach ''else'' wird ausgeführt, wenn keine vorhergehende Bedingung durch ''if'' oder ''elseif'' erfüllt wurde. Dieser Anweisungsblock ist gleichzeitig der Abschluss der Struktur. \\ Sind mehr Bedingungen in einer Struktur zu vereinen, muss ''elseif'' genutzt werden. Dieser Befehl steht immer im Zusammenhang mit einer vorhergehenden Bedingung. __Das ! Zeichen bedeutet, dass geprüft wird, ob die Variable leer ist (False) oder nicht (True). So kann man sich einiges an Tipperei sparen ;-) __\\ **Ausgabe:** ''Bitte gib dein Passwort ein'' Die ''elseif'' Anweisung kann beliebig oft hintereinander benutzt werden, muss aber immer vor der ''else'' Anweisung stehen. Bei der Deklaration wird immer diese Struktur beibehalten: Wenn in dem Fall, dass keine Bedingung zutrifft, nichts ausgeführt werden soll, kann ''else'' entfallen. ====Alternative Schreibweise===== Anstelle der geschweiften Klammern wird der Anweisungsblock im folgenden Beispiel durch einen Doppelpunkt eingeleitet. Die letzte Klammer entfällt. Das Ende eines Blocks wird durch eine neue Bedingung angegeben. Der Befehl ''endif'' beendet die gesamte Struktur.
Die Ausführung des Skripts lässt sich sehr bequem an jeder Stelle im Quelltext kurzzeitig pausieren.
**Ausgabe:** Du musst ein Passwort eingeben. Die Ausführung des Skripts lässt sich sehr bequem an jeder Stelle im Quelltext kurzzeitig pausieren. ====Kurzschreibweise==== Besteht Deine Struktur aus * einer Bedingung, * einer Anweisung für den Fall, dass die Bedingung zutrifft und * einer Anweisung für das Gegenteil. So lässt sich auch die folgende Kurzschreibweise nutzen: = 9 ? $Variable1 = "Variable1 ist größer als 9." : print("Variable1 ist kleiner als 9.
Variable1 ist "); echo $Variable1; ?>
**Ausgabe:** Variable1 ist kleiner als 9. Variable1 ist 8 Die Struktur sieht im Allgemeinen immer so aus: ''Überprüfende Bedingung ? Der Wenn True Fall : Der wenn False Fall''. Dabei ist es wichtig, dass jeder dieser Fälle **nur einen** Funktionsaufruf beinhaltet. Natürlich ist es auch möglich, mehrere Funktionen ineinander zu verschachteln. In diesem Fall sollte aber die Variante mit den Klammern bevorzugt werden, um den Überblick nicht zu verlieren. ======Entscheidungen mit ''switch''====== Muss eine Variable mehrfach getestet werden, so wie im Passwort-Beispiel, so gibt es auch hier in PHP eine elegantere Lösung als if-else Anweisungen. Durch die Verwendung der Struktur ''switch'' ergibt sich folgende Syntax: **Ausgabe:** Du darfst eintreten In der Klammer nach dem ''switch''-Befehl wird die zu untersuchende Variable übergeben. Jetzt werden nacheinander die gewünschten Fälle mit ''case''-Anweisungen abgearbeitet. Nach dem Doppelpunkt beginnt der Anweisungsblock, welcher durch ein neues ''case'' oder die geschweifte Klammer beendet wird. Ein Anweisungsblock, der unabhängig von einer Bedingung ist, wird einmalig mit ''default'' angegeben und sollte am Ende stehen.\\ \\ Aus dieser Struktur kann vorzeitig mit dem Befehl ''break'' ausgetreten werden. Wird der Austritt weggelassen, werden zwar alle folgenden case-Werte ignoriert, deren Anweisungsblöcke aber nicht. So eröffnen sich komplett neue Möglichkeiten: **Ausgabe:** Dieses Restaurant wurde mit **** Sternen bewertet. Kann ein Anweisungsblock auf mehrere Fälle angewendet werden, so dürfen auch mehrere ''case''-Befehle vor diesem Block stehen. **Ausgabe:** Das Restaurant ist in der oberen Preisklasse. Beachte bei dieser Schreibweise, dass nach jeder case-Anweisung ein Doppelpunkt steht. ====Formatierung der ''switch'' Anweisung==== Wie man in den Beispielen sieht, wurde die Abfrage als Tabelle aufgebaut, um eine übersichtliche Darstellung zu bieten. Da PHP, wie viele andere Programmiersprachen auch, Leerzeichen ignoriert, kann man seinen Quelltext in solchen Fällen übersichtlicher gestalten, wenn man ihn tabellarisch aufbaut. Je nachdem ist es bei großen und komplizierten (langen) Abfragen nicht mehr sinnvoll möglich, die Anweisungen schön zu gestalten, doch man sollte immer Wert darauf legen, die Darstellung so zu wählen, dass man die Funktion schnell überschauen kann. Im nächsten Kapitel geht es nun um [[php:loop|Schleifen (Wiederholungen)]].