Code funktioniert nicht if(a || b) {

cola1

Mitglied
Hallo,

wisst Ihr warum folgender Code nicht mehr funktioniert, wenn ich die zweite Bedingung angebe?

Funktioniert NICHT
PHP:
            <?php if($_SERVER['PHP_SELF'] !== '/character/creation/index.php' || 
                    $_SERVER['PHP_SELF'] !== '/character/overview/index.php') { ?>

Funktioniert
PHP:
            <?php if($_SERVER['PHP_SELF'] !== '/character/creation/index.php') { ?>
 
Hey,

keine Fehlermeldung.
Wenn eine Bedingung zutrifft soll ein startendes DIV entfernt werden. Das geschieht bis jetzt nur korrekt, wenn nur eine Bedingung angegeben wird. Bei der zweiten Bedingung wird das DIV auf keiner Seite mehr "entfernt".

In PHP_SELF steht: string(29) "/character/creation/index.php"

Nach ein wenig Try and Error funktioniert es wie folgt, wobei mir das AND nicht so schlüssig wie ein OR vorkommt (mit OR funktioniert es auch nicht).

PHP:
            <?php if(($_SERVER['PHP_SELF'] !== '/character/creation/index.php')
                and ($_SERVER['PHP_SELF'] !== '/character/overview/index.php')) { ?>

Wird wohl richtig sein :O
 
Du fragst ab, ob es nicht 'A' ist oder ob es nicht 'b' ist. Da es nur 'A', 'B' oder etwas anderes sein kann, aber nie gleichzeitig 'A' und 'B', nützt die Oder-Abfrage nichts.

PHP:
$value = 'a';
if($value !== 'a' || $value!=='b'){
    //Hier kommst du so oder so hinein, denn ($value!=='b') gibt true zurück
}

Wenn du aber willst, dass es weder das eine noch das andere ist, dann solltest du zuerst auf Positiv testen und dann negieren
PHP:
$value = 'a';
if(!($value == 'a' || $value=='b')){
    //In dem Fall kommt es nicht hier hinein
}

Oder du prüfst über einen Array
PHP:
$value = 'a';

$blockedValues[] = 'a';
$blockedValues[] = 'b';

if(!in_array($value,$blockedValues)){
    //In dem Fall kommt es nicht hier hinein
}
 
Zurück