Übersetzungen dieser Seite:
 

Dies ist eine alte Version des Dokuments!


Mehrere Bedingungen verknüpfen

Falls mehrere Bedingungen verknüpft werden müssen, helfen so genannte logische Operatoren weiter. Besonders wichtig sind hier der UND-Operator (and bzw. &&), der besagt, dass jede Bedingung erfüllt sein muss und der ODER-Operator (or bzw. ||), der besagt, dass mindestens eine Bedingung erfüllt sein muss.

Wichtig: Sie können mit den Operatoren nur Bedingungen verknüpfen, nicht direkt die Werte. Der Ausdruck 1 or 2 wird zwar keinen Fehler liefern, aber auch nicht das gewünschte Ergebnis. Also lesen Sie bitte noch ein wenig weiter!

Bedingungen mit UND verknüpfen

Angenommen, der Benutzer soll – wenn er einen Computer hat (TF02_01 hat den Wert 2, vgl. Abbildung) und wenn er ein Handy besitzt (TF02_03 hat ebenfalls den Wert 2) gefragt werden, ob er schon einmal Bilder, Klingeltöne, etc. vom Handy auf den Computer übertragen hat.

Beispiel für eine Mehrfachauswahl als Filterfrage

In diesem Fall müssten folgende beide Bedingungen beide erfüllt sein:

  • value('TF02_01') == 2
  • value('TF02_03') == 2

Im Filter wird das wie folgt abgebildet:

if ((value('TF02_01') == 2) and (value('TF02_03') == 2)) {
  question('IN20');  // Datenübertragung Handy-Computer
}

Zur Sicherheit wurden beide Einzel-Bedingungen hier nochmal in runde Klammern gesetzt. In diesem Fall wäre das nicht notwendig, weil das == vor dem and ausgeführt wird (ähnlich wie beim „normalen“ Rechnen Punkt vor Strich). Aber mit den Klammern geht man auch bei komplizierteren Konstruktionen auf Nummer sicher.

Wenn die Klammer-Struktur nicht mehr übersichtlich ist, kann man auch problemlos mehrere Zeilen verwenden. Folgender Code hat exakt dieselbe Funktion wie das Beispiel oben:

if (
  (value('TF02_01') == 2) and
  (value('TF02_03') == 2)
) {
  question('IN20');  // Datenübertragung Handy-Computer
}

Spätestens, wenn mehr als zwei Bedingungen verknüpft werden sollen, bieten Einrückungen Übersichtlichkeit – und vermeiden dadurch Fehler.

Die eine ODER andere Bedingung erfüllt

Folgendes Beispiel zeigt eine Überprüfung, ob mindestens ein Item aus der oben dargestellten Frage angekreuzt wurde. Dafür kommt der Operator or zum Einsatz. Falls keine der Teilbedingungen zutrifft, springt der Fragebogen zum Ende.

if (
  (value('TF02_01') == 2) or
  (value('TF02_02') == 2) or
  (value('TF02_03') == 2) or
  (value('TF02_04') == 2)
) {
  html('<p>Es wurde mindestens eines ausgewählt!</p>');
} else {
  // Keins ausgewählt: Befragung beenden
  goToPage('end');
}

Tipp: Drei oder vier Items einer Frage kann man so noch abfragen. Aber sobald es mehr Items werden, gibt es eine elegantere Lösung. Diese wird vorgestellt in dem Kapitel Prüfen, ob mindestens ein Wert ausgewählt wurde.

Prüfen ob eine Auswahl den einen ODER anderen Wert hat

Häufig muss man überprüfen, ob in einer ganz normalen Auswahl oder für ein Skalenitem ein bestimmter Wertebereich ausgewählt wurde. Zum Beispiel ob der Wert 1, 2 oder 3 ausgewählt wurde.

Wenn die Werte direkt zusammenhängen, kann man mit den Vergleichsoperatoren größer als (>) und kleiner als (<) arbeiten.

if ((value('AB01') > 0) and (value('AB01') < 4)) {
  question('BB02');
}

Wenn die Werte nicht zusammenhängen, dann kann man jede Bedingung auch einzeln abfrage:

if (
  (value('AB01') == 1) or
  (value('AB01') == 2) or
  (value('AB01') == 3)
) {
  question('BB02');
}

Wenn man den PHP-Code übersichtlicher gestalten will, dann kann man den Wert zunächst in eine PHP-Variable speichern:

$a1 = value('AB01');
if (($a1 == 1) or ($a1 == 2) or ($a1 == 3)) {
  question('BB02');
}

Eine Alternative für eine größere Anzahl von Werten bieten Arrays in Verbindung mit der Funktion in_array().

if (in_array(value('AB01'), array(1,2,3))) {
  question('BB02');
}
de/create/filter-boolean.1317758094.txt.gz · Zuletzt geändert: 04.10.2011 21:54 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki