if or

hi, ich verzweifel ein wenig an der if OR. Angenommen $sPage ist 1 und $pages ist 10. wieso funktioniert das einzeln:

{if $sPage neq $pages}
   true
{/if}

{if $sPage neq 1}
   false
{/if}

aber das nicht kombiniert:

{if $sPage neq $pages or $sPage neq 1}
   true ??? warum nicht false?
{/if}

Auch mit der alternativen Schreibweise || und != komm ich nicht weiter. Bin dankbar für jeden Tip.

Hallo,

 

verstehe dein Problem nicht. In Smarty if kannst du ganz normal PHP Expressions reinschreiben, also auch alle php functions:

{if $sPage === 1 && $pages === 10}
    {* sPage ist 1 und pages ist 10 *}
{/if}

Natürlich auch das geht:

{if $sPage !== $pages}
    {* sPages ist nicht gleich pages *}
{/if}

Du solltest bedenken, dass es bei einem oder reicht, dass eine Bedingung erfüllt ist. Es können auch beide erfüllt sein.

 

MFG

 

derwunner

Hi, danke für die Info. Das Problem ist true+false=true ich benötige aber true+false=false :-/

Ich versuche mal das aufzudröseln:

{if $sPage neq $pages or $sPage neq 1}
   true ??? warum nicht false?
{/if}

alternative (mit deinem wertangaben)
if (1 != 10 OR 1 != 1) {
  // ...
}

Diese Bedingung wird Wahr, weil 1 nicht 10 entspricht.

 

Bei einem if, mit einer Oder Bedingung, wird die Abfrage wahr, wenn ein Element (bei dir das erste) Wahr ergibt.

Wenn du möchtest, dass die Bedigung nur wahr wird, wenn alle Elemente wahr sind, dann musst du sie mit einem UND verknüpfen. (1 eq 1 AND 2 eq 2)

Wenn du möchtest, dass eine Bedingung wahr wird wenn ein element wahr ist, aber das andere nicht wahr ist (unabhängig der reihenfolge) musst du ein exklusives oder benutzen (1 eq 1 XOR 2 eq 1)

1 Like

Bei $sPage = 1 und $sPage = 10:

{if $sPage neq $pages or $sPage neq 1}
   true ??? warum nicht false?
{/if}

$sPage neq $pages (wenn 1 ungleich 10) => true
$sPage neq 1 (wenn 1 ungleich 1) => false
Komplett:$sPage neq $pages or $sPage neq 1 (wenn eine der Bedingungen true ist, also true oder false) => true

Wenn du willst das true rauskommt wenn beide Bedingungen true sind musst du AND verwenden

AND:
false && false => false
false && true => false
true && false => false
true && true => true

OR:
false || false => false
false || true => true
true || false => true
true || true => true

 

Frage nebenbei: Wie kommt es das du seit Jahren hier aktiv im Forum bist und bei einem einfachen Logikproblem scheiterst (Bitte nicht Negativ verstehen, ernste Frage Grin)

 

Hi, also die Frage ist schon gelöst gewesen, aber danke für die Auflistung @AlexG‍  

Frage nebenbei: Wie kommt es das du seit Jahren hier aktiv im Forum bist und bei einem einfachen Logikproblem scheiterst (Bitte nicht Negativ verstehen, ernste Frage  Grin)

Tja, manchmal ist es so, dass man ein Brett vor dem Kopf hat und/oder Defizite in Mathematik & Informatik. Viel im Forum schreiben != viel wissen :smiley: