/tutorial-if_abfragen.html PHP If Abfrage - Wenn a = b dann ... Bedingung
  PHP Kurs Logo  
 
Buttons PHP Kurs - Kapitel Trennlinie Downloads Trennlinie Was brauche ich ? Trennlinie Entwickler Jobs Trennlinie Kontakt Trennlinie Impressum Buttons
 
 
Menu
Allererste PHP Schritte
- Webserver Installation
- PHP Editor Installation

PHP Grundlagen
- PHP Grundwissen
- Mein erstes Programm
- Kommentare einfügen
- Variablen
- PHP+HTML mischen
- If Abfragen
- Rechenarten
- Arrays
- Schleifen
- Funktionen
- Klassen
- Includes
- Sessions und Cookies
- Login mit Sessions
- Login mit Datenbank
- Referer auslesen
- Wert aus Datenbank
- Variablen übergeben

MySQL Grundlagen
- Was ist das ?
- Erste Schritte
- Verbindung herstellen
- Einfache SQL Befehle
- SQL Injection

Häufig gefragt
- Was ist Adwords ?
- Interessante Links
- Wasserzeichen mod_rewrite
- Thumbnails erstellen
- PHP Gästebuch
- PHP Header
- Webseiten auslesen
- Socket Verbindungen
- E-Mail Adressen prüfen
- E-Mails versenden
- $_GET & $_POST
- Datenbank sichern
- Server DDOS Angriffe Abwehren
- Webhosting - Worauf ist zu achten ?
- Fachübersetzungen

Interessante Artikel
- Soft-Skill-Zertifizierung
- Sicherheits Workshops


IF Abfragen, auf Ereignisse reagieren

Jetzt haben wir gelernt wie man in Variablen Werte speichert. Jetzt wollen wir nicht nur speichern, sondern auch auf die Ergebnisse reagieren. Um auf ein Ereignis zu reagieren gibt es viele Möglichkeiten. Wir widmen uns jetzt der php if Abfrage.

Beispiel:

<?php
    $a 
10;
    
$b 7;

    if (
$a $b)
        {
        echo 
"$a ist größer als $b.";
        }

    if (
$a $b)
        {
        echo 
"$a ist kleiner als $b.";
        }

    if (
$a != $b)
        {
        echo 
"$a ist nicht genauso groß wie $b.";
        }

    if (
$a == $b)
        {
        echo 
"$a ist genauso groß wie $b.";
        }
?>

Das if erwartet in runden Klammern die Bedingung die Eintreten soll. if bedeutet im deutschen WENN. Als erstes haben wir $a den Wert 10 und $b den Wert 7 gegeben.

Die erste WENN (if) Abfrage:
Wenn $a größer als $b , dann soll er die Befehle ausführen, die in den geschwungenen Klammern danach kommen. Trifft diese Bedingung nicht ein, dann werden die Befehle in den geschwungenen Klammern nicht ausgeführt.

Das zweite WENN (if):
Wenn $a kleiner als $b ist, dann führe die Befehle in den geschwungenen Klammern aus.

Das dritte WENN (if):
Wenn $a ungleich $b ist, dann führe die Befehle in den geschwungenen Klammern aus.

Das vierte WENN (if):
Wenn $a gleich $b ist, dann führe die Befehle in den geschwungenen Klammern aus. Ihr werdet merken, dass dort nicht ein Gleichheitszeichen steht sondern zwei. Ihr werdet euch fragen: "Warum ?". Ganz einfach:

Merke: Wenn ich nur ein Gleichheitszeichen = verwende, dann weise ich der linken Variable den Wert von dem zu, was auf der rechten Seite vom Gleichheitszeichen steht. Ein einfaches Gleichheitszeichen ist also eine Zuweisung. Will ich wissen ob der linke Wert vom Gleichheitszeichen mit dem vom rechten Wert neben dem Gleichheitszeichen identisch ist, dann muss ich zwei == Gleichheitszeichen verwenden. Dies ist eine häufige Fehlerquelle ! Es gibt sogar noch Abfragen mit drei Gleichheitszeichen. Das solltet Ihr schonmal gehört haben, muss euch am Anfang aber nicht interessieren.

Schreibe ich zum Beispiel:

<?php
    
if ($a $b)
        {
        echo 
"Test";
        }
?>

... dann prüfe ich in der WENN Bedingung nicht, ob die Werte identisch sind. In diesem Fall enthält $a hinterher das selbe wie $b und IF überprüft nur ob diese Zuweisung geklappt hat. Natürlich hat es klappt. In $a ist nun dasselbe gespeichert wie in $b, also hat es geklappt und IF führt die Befehle in den geschwungenen Klammern aus, auch wenn $a vorher 10 war und $b zum Beispiel 7 war ! 10 ist nicht genauso groß wie 7 , aber genau das haben wir ja nicht abgefragt sondern nur aus der gespeicherten 10 (in $a) eine 7 (gespeichert in $b) gemacht ! Solche "dummen" Fehler können passieren und eine regelrechte Suchaktion auslösen. Dies kann nämlich der Beginn einer Kettenreaktion sein, wenn wir selber in $a und $b andere Werte erwarten, diese aber mittlerweile anders sind und in späteren Programmteilen weiterverarbeitet werden und "natürlich" nicht das erwartete liefern.

WENN $a == $b DANN { } ANDERNFALLS MACHE { }

Manchmal will man etwas vergleichen und darauf AUCH reagieren wenn die Bedingung NICHT zutrifft. Wir könnten zum Beispiel fragen WENN $a == $b dann mache das was in den geschwungenen Klammern steht. WENN dies aber NICHT zutrifft dann mache was anderes. Dies schafft man mit else.

Beispiel:

<?php
    $a 
2;
    
$b 5;

    if (
$a $b)
        {
        echo 
"$a ist größer als $b.";
        }
    else
        {
        echo 
"$a ist nicht größer als $b.";
        }
?>

Wir fragen PHP ob $a größer als $b ist. Dies ist in diesem Fall nicht so, also wird der Code in den ersten geschwungenen Klammern NICHT ausgeführt. Dann kommt else, was dem PHP Programm sagt dass wenn dies nicht zutrifft, dann führe das aus was JETZT in den geschwungenen Klammern kommt.

Eine Anmerkung zur Lesbarkeit von PHP Code

Man muss PHP Befehle nicht zwangsweise pro Zeile nur einmal schreiben. Man könnte in einer einzigen Zeile auch mehrere PHP Befehle schreiben.

Beispiel:

<?php
    $a 
10$b 7$ergebnis $a $b;
?>

Dieses Beispiel würde funktionieren. Wir haben nach jedem PHP Befehl brav ein Semikolon gesetzt. Es trägt aber nicht unbedingt später zur Lesbarkeit eines großen Programms bei. Genauso wie die PHP Befehle kann man auch bei if() Anweisungen direkt nach den runden Klammern mit der geschwungenen Klammer anfangen. Viele Programmierer machen das und einige PHP Programmierprogramme machen dies automatisch. Die Zeilen werden zwar weniger, aber ich persönlich finde es überhaupt nicht leserlich. Gerade wenn plötzlich viele if() Bedingungen verschachtelt werden, sollte man den Code der zusammengehört in einer horizontalen Höhe schreiben.

Unleserliches Beispiel:

<?php
    
if ($a == $b){
    if (
$c $d){
    if (
$e != $f){
    echo 
"Ausgabe 1";
    
$x $y $z;
    }
    }
    else
    {
    echo 
"Ausgabe 2";
    
$x $y $t;
    }
    echo 
"Ausgabe 3";
    }
?>


Leserliches Beispiel (macht genau das gleiche):

<?php
    
if ($a == $b)
        {
        if (
$c $d)
            {
            if (
$e != $f)
                {
                echo 
"Ausgabe 1";
                
$x $y $z;
                }
            }
        else
            {
            echo 
"Ausgabe 2";
            
$x $y $t;
            }

        echo 
"Ausgabe 3";
        }
?>


Entscheidet selbst - wo würdet Ihr eher sehen, was zu welcher geschwungenen if() Anweisung gehört. Welcher Programmteil gehört zu welcher WENN Bedingung ? Ich glaube es ist klar worauf ich hinaus will. Jeder hat hier seinen eigenen Stil, aber man sollte sich schon Gedanken darüber machen auch seinen Code klar zu strukturieren.





<<<< zurück Kapitelauswahl vorwärts >>>>




Kommentare: (absteigend sortiert)

Hier stehen noch alte Kommentare, die direkt über die Webseite gemacht wurden. Es kann dort nicht weiter kommentiert werden. Bitte nutzt dafür die Facebook Kommentare.

.:: 23.05.13 - 14:26 Uhr :: Name: Alex ::.
Ich habe alles ohne { } Klammern geschrieben und hat auch genau so funktioniert. Wieso :))

.:: 13.02.13 - 19:59 Uhr :: Name: luna ::.
Diese Seite ist echt genial! Danke dafür! :D
(Genau der stoff den wir machen ^^)
Leider geht meine ifabfrage hier grad nicht und ich hab nix falsch ... :/ seltsam
lg

.:: 11.08.11 - 22:31 Uhr :: Name: Andy ::.
bisher bin ich total begeistert, jetzt brauch ich aber mal ne Erklärung was diese Verschachtelung eigentlich machen soll. Ich weiß einfach nicht ob ich das richtig gedeutet bzw. verstanden hab.
vielen Dank
Andy

.:: 25.05.11 - 11:56 Uhr :: Name: Snouty (www.snouty.ch) ::.
Es wäre nicht schlecht, wenn du hier noch den Bedingungsoperator beschreiben würdest:

echo ($var1 == $var2) ? "Ja" : "Nein";

Der gehört meiner Meinung nach auch her rein, weil er einfach ist, und auch mir schon oft geholfen hat. :D

.:: 07.01.11 - 18:26 Uhr :: Name: FliegenSpinne ::.
Hallo Charly,

vielen Dank ersteinmal für diesen Kurs. Das ist echt super.

Hat sich bei deiner gut leserlichen Variante ein Schreibfehler eingeschlichen?

if ($e != f)

Kommt vor dem f nicht ein $?

Liebe Gruesse.
Anmerkung Charly: Um euch nicht zu verwirren: neinja. Es geht auch ohne $ , wenn man eine Konstante definiert. Eigentlich wollte ich ein $ schreiben, habe es in der Eile aber vergessen. Falsch ist es aber nicht, weil auch f einen Wert haben kann. Ich habe es aber korrigiert. Will hier nicht für Verwirrung sorgen :) Gruß

.:: 06.01.11 - 12:20 Uhr :: Name: Thomas ::.
Sauber! Genau SO stelle ich mir eine Seite zum Lernen von PHP vor. Besser kann man's wohl nicht erklären. Klasse gemacht, weiter so! :)

.:: 29.11.10 - 09:53 Uhr :: Name: Dan ::.
@Charly: Danke für den kurzen Exkurs!
Hab da mal was anderes und hoffe du kannst mir helfen.
Angenommen ich wollte ein kleines Ratespiel programmieren, mit folgender funktionsweise:
- Das php soll eine Zahl zwischen 1 und 10 generieren.
-Ich will dann diese Zahl auf der html erraten durch eingabe.
-Das php soll mir sagen ob die generierte Zahl größer oder kleiner ist als meine geratene.
-Das ganze geht solange bis ich die Zahl richtig geraten hab.
Hab schon mit deiner anleitung "Cookies" versucht die generierte Zahl zu speichern aber irgendwie will es nicht funktionieren.
Hättest du veilleicht ein Beispiel?
Danke im vorraus!
Anmerkung Charly: Hi Dan, ich habe Dir mal ein paar Denkanstösse zusammengefasst: findest Du im Forum unter (klicken) Wie programmiere ich ein PHP Ratespiel

.:: 27.11.10 - 23:03 Uhr :: Name: Dan ::.
Hi Charly..,, wie immer alles super. Ich glaube allerdings das du bei deiner gut leserlichen Variante (glaube ich, als nicht Programmierer)

if ($e != f)

ein Ausrufezeichen keine Bedeutung hat!?
Anmerkung Charly: Mit einem Ausrufezeichen verneint man eine Aussage. Ich kann abfragen ob $a == $b ist , also ob die Variable a gleich b ist. Wenn ich aber frage $a != $b, dann habe ich gefragt ob die Variable $a was anderes wie $b ist.

Kurzer exkurs:

$a = $b Der Wert von $b wird in $a gespeichert
$a == $b Ob der Wert von $a gleich dem ist was in $b ist
$a != $b Ob der Wert $a ungleich dem ist was in $b ist
$a === $b Zusätzliche Abfrage, ob die beiden Variablen sogar vom gleichen Typ sind

Ich hoffe das hilft.

.:: 16.11.10 - 10:33 Uhr :: Name: Dende ::.
Ähmmmm Charly :)

Wie siehts aus mit Umlauten?

ß – wird zu – &szlig;
ö – wird zu – &ouml;

also :

{
echo "$a ist gr&ouml;&szlig;er als $b";
}

Gruß

.:: 22.10.10 - 14:39 Uhr :: Name: Robin ::.
Nicht Schlecht. Gut erklärt, weiter so :)

.:: 22.10.10 - 14:38 Uhr :: Name: Robin ::.
Nicht Schlecht. Gut erklärt, weiter so :)

.:: 19.10.10 - 21:59 Uhr :: Name: Igor ::.
Danke Charly! Du hast Talent zu erzählen.

.:: 30.09.10 - 03:11 Uhr :: Name: Andreas K. ::.
Wie die vorherigen Artikel sehr gut geschrieben und plausibel erklärt.
Was mich als "Cybergreis" freuen würde, wären noch mehr Videos auf YouTube, manches wird einem, der am Anfang etwas begriffstutzig ist, dadurch klarer.
Danke für die viele Arbeit und Zeit, die Du in dieses Projekt investierst.
Thankx! :o)

.:: 18.08.10 - 18:16 Uhr :: Name: Jörg ::.
Hallo erst mal

Ich möchte mich nun nach einer Stunde intensivem einarbeiten in PHP mal zu Wort melden, ich muß dazu sagen ich hab schon ne weile mit PHP rum gemacht und mir viel sachen angesehen um es zu verstehen!!! Nur so wie es hier geschrieben ist und die Erklärungen sind einfach klasse!!!
Zum schreiben eines Scripts : Man sieht auf alle Fälle alles schneller und einfacher wenn man mit Zeileneinschub arbeitet nicht nur in PHP auch für html zu empfehlen !!!

Gruß Jörg


.:: 07.08.10 - 11:09 Uhr :: Name: Charly ::.
Also ich finde es in der Praxis wesentlich angenehmer für die Lesbarkeit die Klammern nicht direkt dahinter zu setzen und mit Zeileneinschub zu arbeiten und die Klammern in die nächste Zeile zu setzen. Du siehst doch auf den ersten Blick OHNE Editor welche Klammer wohin gehört. Gerade wenn auch Klammern in der gleichen Höhe sind.

Vielleicht eine persönliche Vorliebe, da gefühlte 90% der Programmierer nicht so arbeiten wenn ich mir die Quellcodes so angucke.

Hast Du aber einen Kilometer langen Quelltext verliert sich irgendwann die Übersichtlichkeit. Ich persönlich versuche in dem Punkt so sauber wie möglich zu sein und ärger mich eher wenn ich in fremden Codes arbeiten muss und alles so dahingeklatscht ist. "Der PHP Editor wird´s schon anzeigen was wohin gehört."

:)

.:: 29.07.10 - 14:21 Uhr :: Name: Max ::.
"Genauso wie die PHP Befehle kann man auch bei if() Anweisungen direkt nach den runden Klammern mit der geschwungenen Klammer anfangen. Viele Programmierer machen das und einige PHP Programmierprogramme machen dies automatisch. Die Zeilen werden zwar weniger, aber ich persönlich finde es überhaupt nicht leserlich."

Also so wie du das hier rüberbringst, sieht es aus als ob Code bei dem die geschwungenen Klammern direkt nach den Anweisungen kommen, auch automatisch unformatiert ist.

Worauf ich hinaus will, du solltest vlt eher hervorheben das unformatierter Code (also ohne Seiteneinschub je Codeebene) die Unleserlichkeit schafft und nicht die Art der Klammernsetzung.

Denn dein unleserliches Beispiel wird nicht besser zu lesen wenn man nur die Klammern in der Zeile darunter setzt. Genauso wenig wird das leserliche Beispiel weniger gut lesbar wenn man die Klammern direkt nach der Anweisung setzt.

Ich hoffe es ist klar was ich sagen will.

MfG
Max









Content
 
  Bottom Design  


PepperTools.de Software Download | Software Shop
www.imilkowski.eu - Software Programmierung und Webdesign


 


Persönliche Empfehlung
Mit Wix.com eine kostenlose Homepage erstellen ? Einfach, schnell und ohne Vorkenntnisse.