Seite 1 von 1

If Abfrage

Verfasst: 18.11.2006, 13:43
von workershop
Hallo

Ich möchte einem Script sagen, ist die Kategorie größer als 0, aber nicht Kategorie 511 oder nicht Kategoie 515 usw. dann blende test.html ein.

Es funktioniert aber nicht. was mache ich denn hier falsch?

{if $category.ID >0 and not 511 and not 515 and not 513 and not 516 and not 517 and not 518 and not 522 and not 523 and not 617 and not 659}
{include file="test.html"} {/if}



Danke Ronny

Verfasst:
von

Re: If Abfrage

Verfasst: 18.11.2006, 15:36
von haha
workershop hat geschrieben:{if $category.ID >0 and not 511 and not 515 and not 513 and not 516 and not 517 and not 518 and not 522 and not 523 and not 617 and not 659}
{include file="test.html"} {/if}
Keine Ahnung, was das für eine Sprache ist, aber üblicherweise hat and einen geringeren Bindungswert als > und not. Vielleicht wird es farblich etwas deutlicher, wie der Parser Deine Kette aufdröselt:

$category.ID > 0 and not 511 and not 515

Die roten Teile werden (theoretisch) zuerst ausgewertet und erst dann deren Ergebnisse mit Und verkettet (praktisch bricht Und beim ersten Boolschen Falsch ab, denn ist ein Teil falsch, ist der gesamte Und-Ausdruck falsch und weitere Prüfungen erübrigen sich). Das Ergebnis von "not 511" ist, mal abgesehen davon, dass das so keinen Sinn macht, falsch (false); gleiches gilt bei Deinen anderen "not [Zahl]", lediglich "not 0" ergäbe wahr (true).
Der Punkt ist, dass Nicht (not) üblicherweise kein Vergleichsoperator ist, sondern den Inhalt seines nachfolgenden Parameters, wenn es sich um einen Boolschen Wert handelt, ins Gegenteil umkehrt, aus falsch wird wahr, aus wahr wird falsch. Möchtest Du zwei Werte vergleichen, brauchst Du den Operator für "ungleich", mathematisch ≠ (durchgestrichenes Gleichheitszeichen), in Programmiersprachen häufig != ("nicht gleich") geschrieben, manchmal auch #.

Die Zeile würde nach der ersten Auflösung daher immer so aussehen:

[Ergebnis von id > 0] and false and false

Ich denke, es sollte ab hier klar sein, was rauskommt.

Damit Deine Anweisung wie gewünscht funktioniert, musst Du Deinen Wunsch etwas genauer formulieren: "ist die Kategorie größer als 0 und ist die Kategorie ungleich 511 und ist die Kategorie ungleich 515" etc.

Verfasst: 18.11.2006, 17:12
von workershop
Ich komme jetzt nicht mehr ganz mit. Wie muß denn da die Abfrage sein, das die Datei Test.html in jeder Kategorie auser den von mir definierten(511, 515 usw. sind ca 10 Kategorie IDs) angezeigt wird?

Verfasst: 18.11.2006, 18:25
von workershop
Ah, jetzt habe ich es begriffen, wie Du das meinst und es funktioniert. Danke.