Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Wenn Prüfung in einer if-Bedingung mit einer Liste

  • Surveylab_KN
  • Surveylab_KN's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
3 weeks 4 days ago #267008 by Surveylab_KN
Please help us help you and fill where relevant:
LimeSurvey version: 6.6.3
Own server or LimeSurvey Cloud: LimeSurvey Cloud
Survey theme/template:
==================
Hallo,
ich möchte gerne bei der Prüfung in der einer if-Bedingung mehrere Möglichkeiten auflisten. Bisher sieht es wie folgt aus:
if(Q1==1 OR Q1==2 OR Q1==3, 1, 0)
Das funktioniert auch wunderbar, aber für manche Bedingungen habe ich eine ganze Liste von Werte die für Q1 möglich sind. Diese Liste von Werte ist auch nicht immer fortlaufend. Deshalb sind auch Bedingungen wie Q1<3 etwas umständlich. Gibt es hier die Möglichkeit bei der Prüfung eine Liste einzutragen? Oder hat jemand eine andere gute Idee?
Viele Grüße

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 weeks 4 days ago #267017 by Joffm
Hallo,
mit einem realistischen Beispiel würde mir vielleicht noch anderes einfallen, aber so?

Mir fällt auf Anhieb ein String und die Funktion "strpos(haystack,needle)" .
Also konstruiere einen String auf eine Art, die sicherstellt, dass des nur eindeutige Werte zum Suchen gibt.
Wird der Wert von Q1 gefunden, 1, sonst 0

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • Surveylab_KN
  • Surveylab_KN's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
3 weeks 4 days ago #267020 by Surveylab_KN
Replied by Surveylab_KN on topic Wenn Prüfung in einer if-Bedingung mit einer Liste
Hallo,
in meinem Fall entspricht das Beispiel schon sehr der Realität. Ich bilde vorab eine Zufallsvarialbe (Q1) mit Werten zwischen 1 und 10. Je nachdem welche Zahl gezogen wird, werden einzelne Textbausteine in einer folgenden Frage variiert. Bisher sieht meine Formel dann z. B. so aus:
Code:
{if(Q1==1 OR Q1==3 OR Q1==5, "Textvariante1", "Textvariante2")}
Ich hatte an eine Lösung gedacht, bei der ich eine Liste mit potentiellen Werten definieren kann. Also sowas wie {if(Q1==inlist(1,3,5), "Textvariante1", "Textvariante2")}.
In meiner Umfrage wird es dann noch etwas ausführlicher und die Bedingungen werden verschachtelt. Aber das ist hierfür ja nicht wichtig. Ich hoffe das macht es etwas verständlicher.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 weeks 4 days ago - 3 weeks 3 days ago #267022 by Joffm
Also es geht nur bis 10.
Das vereinfacht das Ganze ja.

Damit enthält die Liste (der String) die Liste  ja nur einstellige Werte (es ist ja egal, ob ich von 1-10 oder von 0-9 arbeite), z.B. #235
Dann hast Du Deine Zufallszahl "QZ", und Du prüfst ob QZ im Text enthalten ist.

Eben mit "strpos".
Und jetzt siehst Du auch, warum am Anfang ein "#" eingefügt ist.
"strpos" ist nullbasiert.
Wenn die Funktion ein Element an der ersten Stelle findet, gibt sie "0" zurück, ist es an der zweiten Stelle, eine "1".
Das Unschöne ist nun, dass im Falle des Nicht-Findens "FALSCH" zurückgeliefert wird.
Und das ist gleichbedeutend mit "0" (Kennst Du aus Bedingungen - will ich eine Gruppe während des Testens nicht anzeigen, kommt eine "0" in die Bedingung).
Unterscheiden könnte man die Index-Null und die FALSCH-Null nur durch den Operator "==="; den unterstützt LimeSurvey aber nicht.

Da,mit reicht also so etwas:
{if(strpos('#02359',QZ)>0,'Tralala','Trololo')}

Und wenn es dann eben mehr als 10 sind, werde kreativ.
Z.B. umrande die Zahlen mit Zeichen und suche dann nach dem Gesamtausdruck.
{if(strpos('#-1-2-4-5-7-8-10-12-14-15-',join('-',Q1,'-'))>0,1,0)}

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 weeks 3 days ago by Joffm.
The following user(s) said Thank You: Surveylab_KN

Please Log in to join the conversation.

  • Surveylab_KN
  • Surveylab_KN's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
3 weeks 3 days ago #267029 by Surveylab_KN
Replied by Surveylab_KN on topic Wenn Prüfung in einer if-Bedingung mit einer Liste
Hallo Joffm,
vielen Dank für die Lösung und die Erläuterungen zu der Funktionsweise! Das hilft mir sehr weiter. Oft fehlt mir einfach das Wissen welche Möglichkeiten alle in Limesurvey vorhanden sind.

Please Log in to join the conversation.

Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose