Bitte helfen Sie uns, Ihnen zu helfen und füllen Sie folgende Felder aus:
Ihre LimeSurvey-Version:
LimeSurvey Cloud
Version 6.10.5
Eigener Server oder LimeSurvey-Cloud: LimeSurvey Cloud
Genutzte Designvorlage: eigenes Design in Fruity
==================
Liebes Forum,
mir fehlt bei meinem Vorhaben der letzte Lösungsschritt, bitte um Unterstützung, es geht um folgendes:
In der Umfrage wird in einer Mehrfachantwort zunächst geprüft, welche Marken bekannt sind, insgesamt gibt es 8 Marken.
Es kann daher min. 1 Marke bekannt sein und max. 8 Marken.
Ich möchte in der weiteren Umfrage aber aus Zeitgründen nicht immer alle bekannten Marken -maximum 8- einblenden sondern nur maximal 5. Das bedeutet folgendes:
- wenn minimal 1 Marke bekannt und maximal 5 Marken bekannt -> Liste einblenden
- wenn minimal 1 Marke bekannt und maximal mehr als 5 Marken bekannt -> Liste auf 5 Marken reduzieren
Ich möchte aber sicherstellen, dass das Set bei mehr als 5 bekannten Marken zufällig zusammengesetzt wird, damit es nicht zu einer "bevorzugten" Markenliste kommt. Jedoch soll, Marke 1, Variable F11_1 (wenn bekannt) immer im Set eingeblendet werden.
Ich habe dazu folgende Gleichungsvariablen erstellt:
eqString:
eqString = trim(join(if(F11_1 == "Y", "1,", ""), if(F11_2 == "Y", "2,", ""), if(F11_3 == "Y", "3,", ""), if(F11_4 == "Y", "4,", ""), if(F11_5 == "Y", "5,", ""), if(F11_6 == "Y", "6,", ""), if(F11_7 == "Y", "7,", ""), if(F11_8 == "Y", "8,", "")), ",")
eqSum:
count(F11_1.NAOK, F11_2.NAOK, F11_3.NAOK, F11_4.NAOK, F11_5.NAOK, F11_6.NAOK, F11_7.NAOK, F11_8.NAOK)
eqRand:
eqRand = if(is_empty(eqRand), rand(1, eqSum), eqRand)
eqFilteredList:
eqFilteredList = if(eqSum <= 5, trim(eqString, ","), if(strpos(eqString, "1") > - 1, trim("1," + substr(eqString, 4,8 ), ","), trim(substr(eqString, 1, 10), ",")))
eqAuswahlCode:
eqAuswahlCode = substr(eqString, ((eqRand - 1) * 2), 1)
eqAuswahlName:
eqAuswahlName = if(eqAuswahlCode == "1", F11_1.question, if(eqAuswahlCode == "2", F11_2.question, if(eqAuswahlCode == "3", F11_3.question, if(eqAuswahlCode == "4", F11_4.question, if(eqAuswahlCode == "5", F11_5.question, if(eqAuswahlCode == "6", F11_6.question, if(eqAuswahlCode == "7", F11_7.question, if(eqAuswahlCode == "8", F11_8.question, ""))))))))
**************************************************************************
Die Syntaxen und Gleichungen funktionieren soweit alle. Was noch nicht funktioniert ist die zufällige Auswahl von 5 Marken. eqFilteredList generiert mir bei 8 bekannten Marken immer das gleiche Marken-Set. Wie muss ich bitte die Syntax erweitern, damit die Marken im Set durchmischt werden unter der Prämisse, wenn F11_1 bekannt ist, diese Marke im Set mitberücksichtigt wird, also in dem Fall eine Fixmarke und 4 weitere bekannte per Zufall ausgewählt werden?
Ich hänge auch zur Sicherheit den lss-export an.
Besten Dank für die Hilfe!