Ich möchte in einer IF-Anweisung 2 And Bedingungen über or mit 2 weiteren And Bedingungen verknüpfen.
Wie schreibe ich das in PHP ? muß ich da nur die ersten zwei And in Klammern setzen und dann die anderen wieder in Klammern und dann um die ganze If Anweisung wieder eine Klammer ?
Mein Problem wird also wahrscheinlich nur die Klammersetzung sein.
Also Beispiel:
if ((Bedingung 1 and Bedingung 2 =true) or (Bedingung 3 and Bedienung 4 = true))
{
mache irgendwas
}
else
{
mache was anderes
}
Ich hoffe ihr könnt nachvollziehen was ich meine.
Wenn ich das ganze in zwei einzelne Anweisungen schreibe,
dann gibt mir die erste Anweisung z.B. ein false und die zweite ein true
was dazu führt das in der ersten Anweisung der Ausgang abgeschaltet wird und in der zweiten Anweisung sofort
wieder an. Oder umgekehrt.
Der Ausgang soll aber anbleiben bis beide Bedingungen false sind.
und eingeschaltet werden sobald eine der Bedingungen True ist.
ich brauche die Anweisung in einem IPS-Script
deshalb habe ich hier gepostet.
Ich hatte schon ein paar Sachen ausprobiert, aber nie kam das raus was ich wollte.
@boui versteht IPS auch die ELSEIF Anweisung ? War auch mein Gedanke, aber in der Doku zu IPS gabs nichts dazu.
@wupperi Dein Beispiel funktioniert wenn ich kein else brauche. Sonst schalte ich mit der ersten Anweisung
meinen Ausgang ein, und mit der zweiten Anweisung gleich wieder aus.
@Kronus
vielen Dank für das Beispiel
Ist das ganze Geheimnis das AND vor OR geht ? ähnlich wie Punktrechnung vor Strichrechnung ?
Dann sollte das genau so sein wie ich es brauche
Das ist PHP Standard, deshalb steht zu PHP nichts in der IPS Doku. Und PHP Standard versteht IPS, aber das kannst du doch in wenigen Sekunden testen ;).
Keine Angst. Jeder fing mal so an.
Die genannten Seiten sind wirklich super zum Nachschaun und Lernen.
Ich selbst bin auch nicht in der PHP-Welt groß geworden und muss da öfter mal reinschauen, wenn es um Problemlösungen geht.
Und wie gesagt. Einfach mal im Skript testen, ob die Sache funktioniert. So macht das wohl jeder.
Bau Dir zum Testen ggf. einfach ein paar zusätzliche echo-Befehle rein, um Dir auch Zwischenergebnisse anzeigen zu lassen.
Dann passt das schon.
Die Links sind doch sehr hilfreich für PHP Anfänger wie mich.
Ich habe auch gestern vor lauter Wald die Bäume nicht mehr gesehen.
Nachdem ich die Anweisung gefühlte 30 mal geändert hatte und immer wieder
endweder Fehlermeldungen kamen oder nicht das passierte was ich wollte
habe ich dann irgendwann aufgegeben.
Hinzu kommt, das ich auf den neuen Rechner für mein Testsystem warte.
der alte hat sich leider verabschiedet. So habe ich das gestern in meinem
Echtsystem getestet und musste halt auch noch drauf achten das ich nicht
meine Steuerung zerschieße.
PHP ist halt von der Struktur her doch etwas anders wie Simens S5 mit der ich
vor 20 Jahren gearbeitet habe.
In dem Beispiel aus dem Link sind allerdings die AND Bedingungen in Klammern gesetzt
und das ganze komplett wieder in Klammern. So wie ich es in meinem Beispiel hatte.
Aber vielleicht habe ich da irgendwo noch eine Klammer von den Variablen falsch gehabt.
Wie gesagt nach 30 Versuchen war die Luft raus.
Auch wenn and vor or geht (wusste ich tatsächlich bisher nicht), würde ich es mit Zusatz Klammer machen (allein der Übersichtlichkeit halber). Um auf das Beispiel zurückzukommen:
<?
if(($username == "HansWurst" and $passwort == "PHP") or ($username == "HansFleisch" and $passwort == "PHP"))
{
echo "Zugriff erlaubt!";
} else {
echo "Zugriff nicht erlaubt!";
}
?>
Und das ist doch genau so wie du selbst schon geschrieben hast. Wenn’s dann nicht klappt, kannst fast nur noch das schon erwähnte = statt == sein, oder du brauchst vielleicht doch eine andere Logik als du denkst, das wiederum können wir aber ohne den Hintergrund was Du machen willst nicht beurteilen