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