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

0 votes

Guten Tag,

in meiner Studie verwende ich eine Frage vom Typ "Horizontale Auswahl". Dort ist unter "Einstellungen" und "Reihenfolge" "zufällig rotieren/mischen" ausgewählt. Die sechs Auswahloptionen der Frage werden also immer zufällig positioniert. Es gibt allerdings eine Ausweichoption, die immer fest ganz rechts positioniert ist.
Ich würde gerne die jeweiligen Positionen der sechs Auswahloptionen in einer internen Variablen festhalten. Wie genau lässt sich das umsetzen?

Vielen Dank und liebe Grüße in Voraus!

in SoSci Survey (dt.) by s137634 (690 points)

3 Answers

+1 vote
 
Best answer

Dankeschön für die zusätzlichen Informationen.

Dass getItems() auch die Auswahloption liefert, ist so nicht intendiert. Wir müssen uns das einmal genauer ansehen. Danke für den guten Hinweis! Aber für Ihren Fall lässt sich das Problem recht einfach lösen:

if (!isset($items12)) {
  $items12 = getItems('LG09', 'all');
  $items12 = array_diff($items12 , [-1]);
  shuffle($items12);
  registerVariable($items12);
}

So wird die Ausweichoption (-1) aus der Rotation genommen - sie wird dann von SoSci Survey am Ende der Frage angezeigt. Und der Fehler mit id() sollte damit auch nicht mehr auftreten.

by SoSci Survey (222k points)
selected by s137634
Vielen Dank für Ihre Hilfe! Jetzt funktioniert es! :)
+1 vote

Ich würde gerne die jeweiligen Positionen der sechs Auswahloptionen in einer internen Variablen festhalten. Wie genau lässt sich das umsetzen?

Deaktivieren Sie dafür bitte die zufällige Rotation in der Frage und ersetzen Sie diese durch eine Rotation mittels PHP-Code: Manuelle Rotation von Items oder Optionen

Eine eventuelle Ausweichoption wird ohnehin immer separat angezeigt.

Zum Speichern der Reihenfolge folgen Sie bitte der Anleitung
put() -> Beispiel: Randomisierung

by SoSci Survey (222k points)
Vielen Dank für Ihre Antwort!
Ich habe mich an der von Ihnen verlinkten Seiten orientiert und meinen Code wie folgt angepasst:

if (!isset($items12)) {
  $items12 = getItems('LG09', 'all');
  shuffle($items12);
  registerVariable($items12);
}
for ($i=0; $i<count($items12); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Inhalt des Elements (!) erstellen
  $id = id('IV14', $items12[$i]);
  // Hier den Rang speichern
  put($id, $i + 1);
}
question('LG09', $items12);
}

Allerdings wird nun auch die Ausweichoption ("liegt" auf -1) rotiert und es gibt eine entsprechende Fehlermeldung. Wie lässt sich das vermeiden?
> Allerdings wird nun auch die Ausweichoption ("liegt" auf -1) rotiert und es gibt eine entsprechende Fehlermeldung.

Sind Sie sicher, dass die Option tatsächlich als "Ausweichoption" eingetragen ist? Hat sie in der Variablen-Übersicht wirklich den Code -1 ?

Wenn ja, dann schreiben Sie unter

registerVariable($items12);

bitte noch die Zeile

debug($items12);

und berichten Sie, was im Debug-modus als Information angezeigt wird.

> und es gibt eine entsprechende Fehlermeldung

Bitte posten Sie Fehlermeldungen stets vollständig im Wortlaut. Dann hilft uns sie Meldung bei der Lösung des Problems.

In Ihrem Code ist am Ende eine geschweifte Klammer, die dort nicht hingehört ... ansonsten sieht alles gut aus.
Ja, da bin ich mir sehr sicher. Folgendes wird als Fehlermeldung ausgegeben (da ich den Code mehrmals benötige ist die Benennung der Variablen nun $items31, der Code ist aber der gleiche):

Hinweis (Seite 31)
Debug-Information für $items31:
03, 15, 2-1, 36, 41, 54, 62
Fehler im Fragebogen (Seite 31)
Die Funktion id() erwartet als Parameter Nr. 2 einen Wert vom Typ integer > 0. Es wurde ein Wert (-1) vom Typ integer angegeben.
Fehler im Fragebogen (Seite 31)
Für die Funktion put() wurde anstatt einer Frage- oder Item-Kennung ein Parameter vom Typ NULL angegeben:

Die Debug-Information gibt folgendes aus:
[Information]    Interview Nummer 1956 wird fortgesetzt
[Information]    Der Fragebogen A_Videolaenge21072020 im Projekt test196703 wird verwendet
[Information]    Die Verweildauer auf Seite 12 war 2 Sekunden
[Verarbeitung]    Lese Antworten von Seite 12
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Information]    Entsprechend der vorher festgelegten Seitenabfolge wird Seite 31 [GU3] angezeigt
[Verarbeitung]    Erstelle Seite 31 in Fragebogen A_Videolaenge21072020
[Information]    value("RA02") = 1
[Information]    value("RA02") = 1
[Information]    value("RA02") = 1
[Information]    value("RA02") = 1
debug()    Inhalt: 03, 15, 2-1, 36, 41, 54, 62
[Information]    Die interne Variable IV16_03 wird mit dem Wert 1 belegt.
[Information]    Die interne Variable IV16_05 wird mit dem Wert 2 belegt.
[Information]    Die interne Variable IV16_06 wird mit dem Wert 4 belegt.
[Information]    Die interne Variable IV16_01 wird mit dem Wert 5 belegt.
[Information]    Die interne Variable IV16_04 wird mit dem Wert 6 belegt.
[Information]    Die interne Variable IV16_02 wird mit dem Wert 7 belegt.
[Inhalt]    Erstelle Frage LG03
[Inhalt]    Zeige Text Fragetext GS02
[Inhalt]    Erstelle Frage LG07
[Information]    value("RA02") = 1
[Information]    value("RA02") = 1
[Information]    value("RA02") = 1
[Information]    value("RA02") = 1
[Inhalt]    Zeige Text Java Lineup GU3
[Inhalt]    Erstelle Frage SK31
[Information]    Folgende Platzhalter sind vorbereitet:
%Bedingung% = (Text) pl_L_s2 (parallel lineup, l...
%Targetabsent% = (Text) Target 2 bei GÜ 1 und 2

Die geschweifte Klammer stammte von der if-Bedingung, die bestimmt, welcher Code angezeigt wird. D.h. im Skript selbst stört sie zum Glück nicht.

Ich hänge Ihnen unten auch noch einmal einen Screenshot an, falls der hilfreich sein sollte!
0 votes

Die Ausweichoption ist wie folgt eingestellt:

Und so sieht die Randomisierung aus. Die Ausweichoption wird mit dem blauen Strich zwar abgegrenzt, aber dennoch rotiert.

by s137634 (690 points)
...