0 votes
in SoSci Survey (dt.) by s168159 (145 points)
edited by SoSci Survey

Liebes SoSci-Survey-Team,
ich möchte eine Choice-Task programmieren, bei der auf einer Seite aus einer Auswahl von 15 Texten 5 gezogen und präsentiert werden.

Bei Bedarf sollen auf der nächsten Seite weitere 5 Texte gezeigt werden und auf einer übernächsten Seite bei Bedarf die letzten 5 Texte.

Ich habe versucht das Setting mit einem Zufallsgenerator umzusetzen. Dabei habe ich die Kennung der Texte (CS05, CS06 etc.) in den Generator eingegeben und eingestellt, dass 5 von 15 Zetteln gleichverteilt in abgeschlossenen Fragebögen (Ziehen ohne zurücklegen) gezogen werden. Die Texte werden dann über den folgenden PHP-Code auf der Seite angezeigt.

$fragen = valueList('RD01', NULL, 'label');
 
foreach ($fragen as $kennung) {
  question($kennung);
}

Leider klappt das nicht, weil auf den späteren Seiten die gleichen Optionen wie auf der ersten Seite angezeigt werden. Es werden also keine neuen Zettel gezogen.

Die Lösung wäre wahrscheinlich, 15 von 15 Zetteln zu ziehen und auf der ersten Seite die 5 ersten Werte der Zufallsgenerator-Variablen (RD01x01, RD01x02...) und auf den späteren Seiten die restlichen Werte aus den Variablen anzeigen zu lassen. Allerdings bekommen ich es nicht hin, den gezogenen Wert über einen Platzhalter anzeigen zulassen.

Könnten Sie mir hier weiterhelfen oder ist mein Ansatz vielleicht auch falsch?

1 Answer

+1 vote
by SoSci Survey (310k points)
selected by s168159
 
Best answer

Die Lösung wäre wahrscheinlich, 15 von 15 Zetteln zu ziehen und auf der ersten Seite die 5 ersten Werte der Zufallsgenerator-Variablen (RD01x01, RD01x02...) und auf den späteren Seiten die restlichen Werte aus den Variablen anzeigen zu lassen.

Ja, korrekt.

Allerdings bekommen ich es nicht hin, den gezogenen Wert über einen Platzhalter anzeigen zulassen.

Sie können bei valueList() vorgeben, welche Items Sie haben möchten. Für die ersten 5 zum Beispiel:

$fragen = valueList('RD01', [0,1,2,3,4], 'label');

Denken Sie aber bitte daran, dass die Gleichverteilung nicht mehr gewährleistet ist, wenn jemand nur die ersten 5 Fragen beantwortet. Wenn Ihnen das wichtig ist, müssten Sie sich mal randomUse() ansehen.

by s168159 (145 points)
Vielen Dank für die schnelle Antwort. Eine Gleichverteilung ist nicht wichtig. MIt Ihrer Antwort hat es jetzt funktioniert. Wie immer ein top Support!
by s168159 (145 points)
Es hat sich noch eine Folgefrage aufgetan. Und zwar würde ich gerne in einer Einzelauswahlfrage die Teilnehmer bitten sich für einen Text zu entscheiden. Ich habe es geschafft die Items der Frage an die gezogenen Texte anzupassen. Dies habe ich über den php-Code erreicht:

replace ('%item1%', 'RD02x01', 'response');
replace ('%item2%', 'RD02x02', 'response');
...

Allerdings steht dann nur die Kennung des Textes in der Frage. Diese sind aber nicht verständlich (CS05, CS06 etc.) Ich würde stattdessen gerne die Bezeichnung als Item haben (also z.B. RestaurantA oder RestaurantB).

Gibt es eine Möglichkeit wie ich die Bezeichnungen den Kennungen zuweisen und dann als Item ausgeben lassen kann? Ich habe es mit dem folgenden php-Code versucht aber das hat nicht funktioniert.
if (RD02x01 = 'CS05'); {
    (RD02x01 = "RestaurantA ");
} elseif (RD02x01 = 'CS06'); {
    (RD02x01 = "RestaurantB");
} elseif (RD02x01 = 'CS07'); {
    (RD02x01 = "RestaurantC");
}

Vielen Dank für Ihre Hilfe.
by SoSci Survey (310k points)
Nun ja, es kommt ein wenig darauf an, was Sie im ersten Durchlauf präsentieren bzw. was in den Textbausteinen steht. Die Inhalte könnte man mittels getTextElement() abrufen.

Aber wenn sich das Problem damit nicht direkt lösen lässt, würde ich statt Ihrem IF-Konstrukt ein Array empfehlen, welches die Namen kodiert:

$namen = [
  'CS05' => 'Restaurant A',
  'CS06' => 'Restaurant B',
  'CS07' => 'Restaurant C'
];

replace ('%item1%', $namen[value('RD02x01', 'label')]);

Die letzte Zeile hier nochmal ausgeschrieben zum Verständnis:

$code = value('RD02x01', 'label');
$name = $namen[$code];
replace('%item1%', $name);

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...