Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:create:filter-boolean [11.11.2014 23:10] – Aktualisierung adminde:create:filter-boolean [07.12.2023 07:01] (aktuell) – alte Version wiederhergestellt (01.06.2023 20:29) admin
Zeile 17: Zeile 17:
  
 <code php> <code php>
-(value('AB01') == 1 or 2)  // Liefert zwar keinen Fehler, aber auch nicht das gewünschte Ergebnis +(value('AB01') == 1 || 2)  // Liefert zwar keinen Fehler, aber auch nicht das gewünschte Ergebnis 
-(value('AB01') == 1) or (value('AB01') == 2)  // Korrekte Verknüpfung von zwei Bedingungen+(value('AB01') == 1) || (value('AB01') == 2)  // Korrekte Verknüpfung von zwei Bedingungen
 </code> </code>
  
Zeile 36: Zeile 36:
  
 <code php> <code php>
-(value('TF02_01') == 2) and (value('TF02_03') == 2)+(value('TF02_01') == 2) && (value('TF02_03') == 2)
 </code> </code>
  
-In diesem Fall wären die inneren Klammern nicht notwendig, weil das ''%%==%%'' vor dem ''and'' ausgeführt wird (ähnlich wie beim Punkt-vor-Strich Rechnen). Aber mit den Klammern geht man auch bei komplizierteren Konstruktionen auf Nummer sicher.+In diesem Fall wären die inneren Klammern nicht notwendig, weil das ''%%==%%'' vor dem ''&&'' ausgeführt wird (ähnlich wie beim Punkt-vor-Strich Rechnen). Aber mit den Klammern geht man auch bei komplizierteren Konstruktionen auf Nummer sicher.
  
 Im IF-Filter steht die gesamte Bedingung nochmals in runden Klammern (denn die Bedingung bei der IF-Konstruktion steht immer in Klammern). Ein Filter mit der verknüpften Bedingung sie also aus wie folgt: Im IF-Filter steht die gesamte Bedingung nochmals in runden Klammern (denn die Bedingung bei der IF-Konstruktion steht immer in Klammern). Ein Filter mit der verknüpften Bedingung sie also aus wie folgt:
  
 <code php> <code php>
-if ((value('TF02_01') == 2) and (value('TF02_03') == 2)) {+if ((value('TF02_01') == 2) && (value('TF02_03') == 2)) {
   question('IN20');  // Datenübertragung Handy-Computer   question('IN20');  // Datenübertragung Handy-Computer
 } }
Zeile 53: Zeile 53:
 <code php> <code php>
 if ( if (
-  (value('TF02_01') == 2) and+  (value('TF02_01') == 2) &&
   (value('TF02_03') == 2)   (value('TF02_03') == 2)
 ) { ) {
Zeile 65: Zeile 65:
 ===== Die eine ODER andere Bedingung erfüllt ===== ===== Die eine ODER andere Bedingung erfüllt =====
  
-Folgendes Beispiel zeigt eine Überprüfung, ob mindestens eines der ersten drei Items aus der oben dargestellten Frage angekreuzt wurde (Besitz von Computer, DSL-Anschluss oder Handy). Dafür kommt der Operator ''or'' zum Einsatz. Falls keine der Teilbedingungen zutrifft, springt der Fragebogen zum Ende.+Folgendes Beispiel zeigt eine Überprüfung, ob mindestens eines der ersten drei Items aus der oben dargestellten Frage angekreuzt wurde (Besitz von Computer, DSL-Anschluss oder Handy). Dafür kommt der Operator ''||'' zum Einsatz, das logische ODER. Falls keine der Teilbedingungen zutrifft, springt der Fragebogen zum Ende.
  
 <code php> <code php>
 if ( if (
-  (value('TF02_01') == 2) or +  (value('TF02_01') == 2) || 
-  (value('TF02_02') == 2) or+  (value('TF02_02') == 2) ||
   (value('TF02_03') == 2)   (value('TF02_03') == 2)
 ) { ) {
Zeile 91: Zeile 91:
  
 <code php> <code php>
-if ((value('AB01') > 0) and (value('AB01') < 4)) {+if ((value('AB01') > 0) && (value('AB01') < 4)) {
   question('BB02');   question('BB02');
 } }
Zeile 100: Zeile 100:
 <code php> <code php>
 if ( if (
-  (value('AB01') == 1) or +  (value('AB01') == 1) || 
-  (value('AB01') == 2) or+  (value('AB01') == 2) ||
   (value('AB01') == 3)   (value('AB01') == 3)
 ) { ) {
Zeile 112: Zeile 112:
 <code php> <code php>
 $a1 = value('AB01'); $a1 = value('AB01');
-if (($a1 == 1) or ($a1 == 2) or ($a1 == 3)) {+if (($a1 == 1) || ($a1 == 2) || ($a1 == 3)) {
   question('BB02');   question('BB02');
 } }
Zeile 156: Zeile 156:
 <code php> <code php>
 if (!( if (!(
-  (value('AB01') == 1) or +  (value('AB01') == 1) || 
-  (value('AB01') == 2) or+  (value('AB01') == 2) ||
   (value('AB01') == 3)   (value('AB01') == 3)
 )) { )) {
Zeile 170: Zeile 170:
 <code php> <code php>
 if ( if (
-  (value('AB01') != 1) and +  (value('AB01') != 1) && 
-  (value('AB01') != 2) and+  (value('AB01') != 2) &&
   (value('AB01') != 3)   (value('AB01') != 3)
 ) { ) {
Zeile 182: Zeile 182:
 <code php> <code php>
 if ( if (
-  (value('AB01') == 1) or +  (value('AB01') == 1) || 
-  (value('AB01') == 2) or+  (value('AB01') == 2) ||
   (value('AB01') == 3)   (value('AB01') == 3)
 ) { ) {
Zeile 189: Zeile 189:
 } else { } else {
   goToPage('end');   goToPage('end');
 +}
 +</code>
 +
 +
 +===== Verschachtelte Filter =====
 +
 +Mitunter ist es sinnvoll, einen Filter in einen anderen Filter zu setzen. Nehmen wir die Situation, dass abhängig von der Antwort auf FF01 entweder die Frage FF02 oder FF03 angezeigt wurde. Und nun soll in Abhängigkeit von diesen beiden Fragen ein weiterer Filter anschließen. Die einzelnen Filter wären einfach:
 +
 +<code php>
 +if (value('FF02') == 1) {
 +  replace('%stimulus%', 'Hund');
 +} else {
 +  replace('%stimulus%', 'Katze');
 +}
 +</code>
 +
 +<code php>
 +if (value('FF03') == 1) {
 +  replace('%stimulus%', 'Wolf');
 +} else {
 +  replace('%stimulus%', 'Tiger');
 +}
 +</code>
 +
 +Aber nun soll nur einer dieser beiden Filter aktiv werden ... abhängig davon, welchen Wert FF01 hatte. Dafür werden diese Filter in einen weiteren Filter "hinein" gesetzt.
 +
 +<code php>
 +if (value('FF01') == 1) {
 +  // Filter für FF02
 +  if (value('FF02') == 1) {
 +    replace('%stimulus%', 'Hund');
 +  } else {
 +    replace('%stimulus%', 'Katze');
 +  }
 +} else {
 +  // Filter für FF03
 +  if (value('FF03') == 1) {
 +    replace('%stimulus%', 'Wolf');
 +  } else {
 +    replace('%stimulus%', 'Tiger');
 +  }
 } }
 </code> </code>
de/create/filter-boolean.1415743852.txt.gz · Zuletzt geändert: 11.11.2014 23:10 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