fastix®: andere Möglichkeit für Sprungmarke

Beitrag lesen

Moin!

Hallo,

aber dann isses doch so wie folgendes, oder?

if ($_POST['FEHLERKATEGORIE'] != "alles i.O." and $_POST['BESCHREIBUNG'] == "" ) {

$errors[] = "Beschreibung";
}


>   
> Danke für Deine Bemühungen!  
  
  
Nicht ganz. Der and- Operator und der &&- Operator haben zwei verschiedene Bedeutungen:  
  
if (Bedingung1 and Bedingung2) -> Es werden immer beide Bedingungen geprüft.  
  
if (Bedingung1 && Bedingung2) -> Bedingung2 wird nur geprüft, wenn Bedingung1 erfüllt ist.  
  
Das mag nur wirklich zum Tragen kommen, wenn Bedingung2 eine Funktionsausführung ist, ist aber schon ein wesentlicher Unterschied:  
  
Beispiel mit "&&":  
  
~~~php
if (  
    isset ($text)  
    && '' != $text  
    &&  file_put_contents($datei, $text)  
) {  
  echo "Text wurde nach Datei geschrieben.";  
} else {  
  echo "Es wurde nichts an der Datei verändert.";  
}

Hier würde also gar nicht erst versucht $text auf den Inhalt zu prüfen, wenn die Variable nicht besetzt ist.
Nachfolgend würde gar nicht erst versucht den Inhalt von $text in die Datei zu schreiben, wenn dieser leer ist.

also wäre das ein:

if (isset($text)) {  
   if ('' != $text) {  
     if (file_put_contents($datei, $text)) {  
         echo "Text wurde nach Datei geschrieben.";  
     }  
  }  
}

Beispiel mit "AND":

if (  
    isset ($text)  
    and '' != $text  
    and  file_put_contents($datei, $text)  
) {  
  echo "Irgend etwas oder nichts wurde nach Datei geschrieben.";  
} else {  
  echo "Die Datei ist unverändert.";  
}

Es würde geprüft ob $text besetzt ist UND es würde geprüft ob $text einen Inhalt hat (also auch die Notiz geworfen, dass $text nicht definiert sei) UND es würde versucht in die Datei zu schreiben.

Das entspricht also Folgendem:

$flag=false;

  
if (isset($text)) {  
  $flag=true;  
}  
if ('' != $text) {  
  $flag=true;  
}  
if (file_put_contents($datei, $text)) {  
  $flag=true;  
}  
  
if ($flag) {  
  echo "Irgend etwas, vielleicht auch nichts, wurde geschrieben."  
} else {  
  echo "Die Datei ist unverändert.";  
}

if (''==$text) ist zwar formal das gleiche wie if ($text=='') aber es _soll_ so notiert werden, dass er fixe Wert links steht damit man beim Vergessen eines Zeichens if ($text='') nicht den Inhalt der Variable löscht und - das klappt ja stets sehr gut - immer ein true zurück bekommt. Solche Fehler sind nämlich _sehr_ schwer zu finden, werden ja auch nicht als Typo reklamiert. Wie auch.

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix