0 votes
in SoSci Survey (dt.) by s175109 (200 points)
edited by SoSci Survey

Lieben SoSci-Team

ich möchte gerne zwei Blöcke mit jeweils 11 Fragen rotieren lassen. Einmal, dass die Blöcke rotiert werden, sodass einmal Block 1 und dann Block 2 gezeigt wird und das andere Mal Block 2 als erstes gezeigt wird. Und dann möchte ich, dass die 11 Fragen pro Block noch einmal rotiert werden.
Ich möchte, dass die Reihenfolge am Ende von jeder Versuchsperson gespeichert wird, damit ich statistisch untersuchen kann, ob die Reihenfolge einen Einfluss auf die Antworten hatte.
Deshalb kann ich leider nicht die Optionen mit shuffle() benutzen.

Ich hatte von ihrer Website schon viel ausprobiert.
Jetzt habe ich eigentlich eine Lösung, die funktionieren könnte.
Ich habe zwei Seiten eingerichtet, die mit einem PHP Code auf einen Zufallsgenerator zugreift und somit die 11 Fragen rotieren lässt.
Das funktioniert schon so, wie es soll.

Im Zufallsgenerator (ZU00) sind alle 11 Fragen einzeln aufgelistet und die Anzahl der Zettel pro Interview ist auf 11 gestellt.
Im PHP Code steht:

$fragen = valueList('ZU00', NULL, 'label');

 
$kennung = loopPage($fragen);
question($kennung);

Vor diesen zwei Seiten habe ich auch einen PHP Code eingefügt, der auf einen Zufallsgenerator zugreift, der die Reihenfolge der beiden Seiten rotieren soll.

Im Zufallsgenerator (ZU01) steht:

1 = S1, S2
2 = S2, S1

Im PHP Code steht:

question('ZU01');  // Zettel in zufälliger Reihenfolge ziehen
$pages = valueList('ZU01', NULL, 'label');  // Gezogene Zettel auslesen
setPageOrder($pages, 'S3');  // Seiten als Seitenabfolge definieren

Wenn ich den Fragebogen ausprobiere und die S1 als erstes gezeigt wird, werden die 11 rotierten Fragen gezeigt, danach S2 mit ihren 11 rotierten Fragen. Das funktioniert immer.
Wenn jedoch die S2 als erstes gezeigt wird, kommen ihre 11 rotierten Fragen und danach geht es direkt zu S3 ohne die S1 gezeigt zu haben.

Ich denke, das Problem ist die Verwendung von setPageOrder() nachdem ich schon loopPage() benutzt habe. Gibt es eine Möglichkeit das trotzdem zu schaffen?

Ich freue mich auf Ihr Feedback!
Danke und beste Grüße

by SoSci Survey (308k points)
> Jetzt habe ich eigentlich eine Lösung, die funktionieren könnte.

Darf ich nachfragen, ob Sie die folgende Anleitung bereits gesehen hatten?
https://www.soscisurvey.de/help/doku.php/de:create:rotation-pages#rotierte_block-abfolge_variante_1

Generell lassen sich setPageOrder() und loopPage() nicht kombinieren. Sobald das loopPage() bei Ihrem Fragebogen aufgerufen wird, setzen Sie dadurch die vorher definierte Seitenabfolge außer Kraft. Deshalb die von Ihnen beobachtete Abfolge.

1 Answer

0 votes
by s175109 (200 points)

Ah cool, nein die Anleitung gab es noch nicht vor 2 Wochen.

Leider kommen aber nun ganz viele Fehlermeldungen bei mir.
Ich habe den vorgegebenen Code um einen Block gekürzt:

$blockfolge = valueList('RO10');
$blocks = [ 1 => valueList('RO08', false, 'label'), 2 => valueList('RO09', false, 'label'), ];
$gesamtliste = array_merge(
$blocks[$blockfolge[0]],
$blocks[$blockfolge[1]],
);
setPageOrder($gesamtliste, 'SD');

mit RO10:

1 = S1-S11, S12-S22
2 = S12 - S22, S1 - S11

RO08:
1 = S1
...
11 = S11

RO09:
1 = S12
...
11 = S22

Wenn ich jetzt aber auf die Vorschau gehe kommen diese Fehlermeldungen:

2x Fehler im Fragebogen (Seite 4)
In der Funktion valueList() wurde ein ungültiges Argument () vom Typ boolean verwendet.

In der Funktion setPageOrder() wurde ein ungültiger Parameter vom Typ NULL angegeben. Als Parameter sind entweder Strings (Texte) erlaubt oder Arrays, die ausschließlich Strings enthalten.

Fehler im Fragebogen (Seite 4)
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Undefined offset: 0
Zeile: 9

PHP-Code

006 2 => valueList('RO09', false, 'label'),
007 ];
008 $gesamtliste = array_merge(
009 $blocks[$blockfolge[0]],
010 $blocks[$blockfolge[1]],
011 );
012 setPageOrder($gesamtliste, 'SD');
Fehler im Fragebogen: Undefined index:
Zeile: 9

PHP-Code

006 2 => valueList('RO09', false, 'label'),
007 ];
008 $gesamtliste = array_merge(
009 $blocks[$blockfolge[0]],
010 $blocks[$blockfolge[1]],
011 );
012 setPageOrder($gesamtliste, 'SD');
Fehler im Fragebogen: Undefined offset: 1
Zeile: 10

PHP-Code

007 ];
008 $gesamtliste = array_merge(
009 $blocks[$blockfolge[0]],
010 $blocks[$blockfolge[1]],
011 );
012 setPageOrder($gesamtliste, 'SD');
013 return 'ok';
Fehler im Fragebogen: Undefined index:
Zeile: 10

PHP-Code

007 ];
008 $gesamtliste = array_merge(
009 $blocks[$blockfolge[0]],
010 $blocks[$blockfolge[1]],
011 );
012 setPageOrder($gesamtliste, 'SD');
013 return 'ok';
Fehler im Fragebogen: array_merge(): Expected parameter 1 to be an array, null given
Zeile: 10

PHP-Code

007 ];
008 $gesamtliste = array_merge(
009 $blocks[$blockfolge[0]],
010 $blocks[$blockfolge[1]],
011 );
012 setPageOrder($gesamtliste, 'SD');
013 return 'ok';

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

...