0 votes
in SoSci Survey (dt.) by s178195 (120 points)
edited by SoSci Survey

Hallo,

Ich habe eine Frage zur Rotation von Fragebögen mit fixierten Seiten. Ich habe einen Fragebogen mit 4 fixen Blöcken, die jeweils aus unterschiedlich vielen Seiten bestehen, die auch untereinander wieder rotieren. Außerdem gehören manche Seiten auch wieder zusammen. Anhand der Anleitung habe ich die folgenden fünf Zufallsgeneratoren erstellt:

RG1 (zu den vier Blöcken, die 24 unterschiedliche Möglichkeiten haben zu rotieren):

1= S1-S60, gap, S61-S79, gap, S80-SS117, gap, S118-S119
2 = S1-S60, gap, S80-SS117, gap, S118-S119, gap, S61-S79
3= S1-S60, gap, S118-S119, gap, S61-S79, gap, S80-SS117
4 = S1-S60, gap, S118-S119, gap, S80-SS117, gap, S61-S79
5 = S1-S60, gap, S80-SS117, gap, S61-S79, gap, S118-S119
6 = S1-S60, gap, S61-S79, gap, S118-S119, gap, S80-SS117

7 = S61-S79, gap, S1-S60, gap, S80-SS117, gap, S118-S119
8 = S61-S79, gap, S1-S60, gap, S118-S119, gap, S80-SS117
9 = S61-S79, gap, S80-SS117, gap, S118-S119, gap, S1-S60
10 = S61-S79, gap, S80-SS117, gap, S1-S60, gap, S118-S119
11 = S61-S79, gap, S118-S119, gap, S1-S60, gap, S80-SS117
12 = S61-S79, gap, S118-S119, gap, S80-SS117, gap, S1-S60

13 = S80-SS117, gap, S1-S60, gap, S61-S79, gap, S118-S119
14 = S80-SS117, gap, S1-S60, gap, S118-S119, gap, S61-S79
15 = S80-SS117, gap, S61-S79, gap, S1-S60, gap, S118-S119
16 = S80-SS117, gap, S61-S79, gap, S118-S119, gap, S1-S60
17 = S80-SS117, gap, S118-S119, gap, S1-S60, gap, S61-S79
18 = S80-SS117, gap, S118-S119, gap, S61-S79, gap, S1-S60

19 = S118-S119, gap, S1-S60, gap, S61-S79, gap, S80-SS117
20 = S118-S119, gap, S1-S60, gap, S80-SS117, gap, S61-S79
21 = S118-S119, gap, S61-S79, gap, S1-S60, gap, S80-SS117
22 = S118-S119, gap, S61-S79, gap, S80-SS117, gap, S1-S60
23 = S118-S119, gap, S80-SS117, gap, S1-S60, gap, S61-S79
24 = S118-S119, gap, S80-SS117, gap, S61-S79, gap, S1-S60

RG02 (zur Rotation der Seiten innerhalb des ersten Blocks, bestehend aus 20 Zetteln):

1 = S1-S3
2 = S4-S6
3 = S7-S9
4 = S10-S12
5 = S13-S15
6 = S16-S18
[...]

RG03 (zur Rotation der Seiten innerhalb des zweiten Blocks, bestehend aus 8 Zetteln):

1 = S64-S65
2 = S66-S67
3 = S68-S69
4 = S70-S71
5 = S72-S73
6 = S74-S75
7 = S76-S77
8 = S78-S79

RG04 (zur Rotation der Seiten des dritten Blocks, bestehend aus 36 Zetteln):

1 = S82
2 = S83
3 = S84
4 = S85
[...]

RG05 (keine Rotation notwendig, nur der Vollständigkeit halber):

1 = S118-S119

Darunter habe ich im Fragebogen den folgenden PHP Code eingefügt:

$blockfolge = array_values(valueList('RG01'));
$blocks = [
  1 => valueList('RG02', null, 'label'),
  2 => valueList('RG03', null, 'label'),
  3 => valueList('RG04', null, 'label'),
  4 => valueList('RG05', null, 'label')
];
$gesamtliste = array_merge(
    ['A0'],
   $blocks[$blockfolge[0]], (<- hier wird ein Fehler angezeigt)
    ['S61', 'S62', 'S63'],
  $blocks[$blockfolge[1]], (<- hier wird ein Fehler angezeigt)
    ['S82', 'S81'],
  $blocks[$blockfolge[2]], (<- hier wird ein Fehler angezeigt)
  $blocks[$blockfolge[3]] (<- hier wird ein Fehler angezeigt)
);
setPageOrder($gesamtliste, 'SD');

Allerdings wird, wie angegeben, in vier Zeilen ein Fehler angezeigt: Questionnaire Error: Undefined index.

Hat einer eine Idee woran das liegen könnte?

Beste Grüße

by SoSci Survey (302k points)
Bitte ergänzen Sie unter der ersten Zeile mal

debug($blockfolge);

und posten Sie, was angezeigt wird.
by s178195 (120 points)
Vielen Dank für die Antwort. Folgendes wird angezeigt:

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.

Außerdem werden die selben Fehler immer noch angezeigt.
by SoSci Survey (302k points)
Und was wird als Information zur Variable $blockfolge angezeigt?
by s178195 (120 points)
Dazu wird kein Fehler angezeigt. Der PHP-Code sieht im Moment folgendermaßen aus:

$blockfolge = array_values(valueList('RO01'));
debug($blockfolge);
$blocks = [
  1 => valueList('RO02', null, 'label'),
  2 => valueList('RO03', null, 'label'),
  3 => valueList('RO04', null, 'label'),
  4 => valueList('RO05', null, 'label')
];
$gesamtliste = array_merge(
    ['A0'],
  $blocks[$blockfolge[0]],
    ['S61', 'S62', 'S63'],
  $blocks[$blockfolge[1]],
    ['S82', 'S81'],
  $blocks[$blockfolge[2]],
  $blocks[$blockfolge[3]]
);
setPageOrder($gesamtliste, 'SD');
by SoSci Survey (302k points)
Es soll kein Fehler dazu angezeigt werden, sondern im Debug-Modus (https://www.soscisurvey.de/help/doku.php/de:create:debugging) soll anezeigt werden, was in der Variable $blockfolge gespeichert ist.

Wenn Sie diese Information posten, kann ich mir ds Ganze genauer ansehen.
by s178195 (120 points)
Danke für den Hinweis! Hier wird folgendes angezeigt:

Debug-Information für $blockfolge:
04
by SoSci Survey (302k points)
Gut, das bringt uns weiter. Das bedeutet, dass Sie in dem Zufallsgenerator eingestellt haben, dass er nur einen Zettel pro Interview zieht. Wenn Sie 4 Blöcke rotieren möchten, müssen Sie aber pro Interview auch immer alle 4 Zettel ziehen.
by s178195 (120 points)
Vielen Dank, die Rotation funktioniert jetzt! Allerdings gibt es noch ein kleines Problem. Zu Beginn eines Blocks wird immer die gleiche Seite 'A0' angezeigt. Jedoch war es so gedacht, dass 'A0' immer zu Beginn von RO02 angezeigt werden soll. Analog gilt dies für die anderen fixen Seiten. Gibt es hierfür eine komfortable Lösung?
by SoSci Survey (302k points)
> Zu Beginn eines Blocks wird immer die gleiche Seite 'A0' angezeigt.

Das sollte so nicht sein. Ich finde auch keinen offensichtlichen Fehler in Ihrem Code.

Wenn Sie vor dem setPageOrder() noch folgende Zeile ergänzen, was wird denn dann in der Debug-Ansicht angezeigt?

debug($gesamtliste);
by s178195 (120 points)
Folgendes wird mir hierzu angezeigt:

Debug-Information für $gesamtliste:
0A0, RO03x01S72-S73, RO03x02S74-S75, RO03x03S78-S79, RO03x04S70-S71, RO03x05S66-S67, RO03x06S76-S77, RO03x07S68-S69, RO03x08S64-S65, 1S61, 2S62, 3S63, RO05S118-S119, 4S82, 5S81, RO04x01S113 , RO04x02S98 , RO04x03S107 , RO04x04S83 , RO04x05S103, RO04x06S93 , RO04x07S89 , RO04x08S106 , RO04x09S116 , RO04x10S99 , RO04x11S90 , RO04x12S104, RO04x13S96 , RO04x14S92 , RO04x15S100 , RO04x16S94 , RO04x17S88 , RO04x18S102 , RO04x19S110 , RO04x20S101 , RO04x21S85 , RO04x22S97 , RO04x23S114 , RO04x24S87 , RO04x25S91 , RO04x26S111 , RO04x27S95 , RO04x28S82 , RO04x29S86 , RO04x30S112 , RO04x31S109 , RO04x32S115 , RO04x33S117, RO04x34S105, RO04x35S84 , RO04x36S108 , RO02x01S58-S60, RO02x02S31-S33, RO02x03S37-S39, RO02x04S1-S3, RO02x05S7-S9, RO02x06S40-S42, RO02x07S43-S45, RO02x08S19-S21, RO02x09S13-S15, RO02x10S4-S6, RO02x11S49-S51, RO02x12S10-S12, RO02x13S16-S18, RO02x14S55-S57, RO02x15S46-S48, RO02x16S25-S27, RO02x17S34-S36, RO02x18S52-S54, RO02x19S22-S24, RO02x20S28-S30
by SoSci Survey (302k points)
Gut, da kommt A0 definitiv nur einmal vor. Daran liegt es also schonmal nicht.

Haben Sie auf irgend einer anderen Seite nochmal setPageOrder() verwenden? Was zeigt die Debug-Information, wenn die Seite A0 erneut angezeigt wird? Und was wird dort auf der Seite vorher angezeigt?
by s178195 (120 points)
Ich habe auf keiner weiteren Seite nochmal Set-Page Order verwendet. Der PHP Code ist der einzige, den ich im Fragebogen verwendet habe.
by s178195 (120 points)
Vielleicht verstehen wir uns gerade falsch. Ich meinte nicht, dass A0 mehrfach im Fragebogen angezeigt wird, sondern vor den falschen Blöcken vorkommt. Ich meine nämlich:

Vor dem Block RG02 soll immer die Seite A0 angezeigt werden.

Vor dem Block RG03 sollen immer die Seiten S61, S62, S63 angezeigt werden

Vor dem Block RG04 sollen immer die Seiten S81 und S82 angezeigt werden

Vor dem Block RG05 gibt es keine festen Seiten, die vorher angezeigt werden sollen.
by s178195 (120 points)
Gerade ist es ja noch so, dass z.B. A0 immer vor dem Block angezeigt wird, der zufällig zuerst kommt.

1 Answer

0 votes
by SoSci Survey (302k points)

Ich meinte nicht, dass A0 mehrfach im Fragebogen angezeigt wird, sondern vor den falschen Blöcken vorkommt.

Danke für die Klärung :)

Schuld an der fixen Position von A0 sind diese Zeilen:

$gesamtliste = array_merge(
    ['A0'],
   $blocks[$blockfolge[0]],

Die $blocks[$blockfolge[0]] ist ja zufällig einer der 4 Blöcke - und davor (also als erstes) kommt A0. Weil es eben ganz vorne in der Liste kommt.

Wenn A0 immer vor dem Block 1 kommen soll, dann ist die Lösung eigentlich ganz einfach. Man schreibt es direkt mit in den Block. Statt

S1-S60, gap, S61-S79, gap, S80-SS117, gap, S118-S119

dann also

A0, S1-S60, gap, S61-S79, gap, S80-SS117, gap, S118-S119
by s178195 (120 points)
Lieber Support,

Ich habe die Seiten wie angegeben in den Zufallsgenerator RG01 eingefügt. Leider werden diese jetzt überhaupt nicht mehr angezeigt. Siehe:

Debug-Information für $gesamtliste:
RO02x01S25-S27, RO02x02S58-S60, RO02x03S4-S6, RO02x04S16-S18, RO02x05S55-S57, RO02x06S52-S54, RO02x07S34-S36, RO02x08S7-S9, RO02x09S49-S51, RO02x10S40-S42, RO02x11S31-S33, RO02x12S22-S24, RO02x13S43-S45, RO02x14S13-S15, RO02x15S37-S39, RO02x16S1-S3, RO02x17S10-S12, RO02x18S46-S48, RO02x19S19-S21, RO02x20S28-S30, RO03x01S66-S67, RO03x02S78-S79, RO03x03S68-S69, RO03x04S64-S65, RO03x05S70-S71, RO03x06S72-S73, RO03x07S76-S77, RO03x08S74-S75, RO05S118-S119, RO04x01S86 , RO04x02S91 , RO04x03S116 , RO04x04S96 , RO04x05S102 , RO04x06S105, RO04x07S113 , RO04x08S97 , RO04x09S87 , RO04x10S107 , RO04x11S114 , RO04x12S101 , RO04x13S85 , RO04x14S104, RO04x15S82 , RO04x16S99 , RO04x17S106 , RO04x18S117, RO04x19S88 , RO04x20S93 , RO04x21S95 , RO04x22S112 , RO04x23S109 , RO04x24S108 , RO04x25S83 , RO04x26S94 , RO04x27S98 , RO04x28S84 , RO04x29S92 , RO04x30S111 , RO04x31S90 , RO04x32S115 , RO04x33S100 , RO04x34S103, RO04x35S89 , RO04x36S110

Außerdem gibt es ein weiteres Problem: Die Rotation funktioniert jetzt für 4 Varianten im Zufallsgenerator RG01, allerdings noch nicht für die ursprünglich angedachten 24 Varianten (4 Blöcke = 4! = 24). Hier wird wieder der Ursprüngliche Fehler angezeigt: Questionnaire Error: Undefined index.
by s178195 (120 points)
Folgendes wird mir außerdem angezeigt:

Debug-Information für $blockfolge:
018, 11, 23, 313

Hinweis (Seite 3)
Debug-Information für $gesamtliste:
Keine Daten (null)
by SoSci Survey (302k points)
In Ordnung, wir müssen uns nochmal kurz über Ihren Zufallsgenerator unterhalten. Ich denke, dass ich Ihre Frage ursprünglich falsch verstanden habe und das mit den 4 Zetteln pro Interview eine falsche Auskunft von mir war.

Sie haben in jeder Zeile des Zufallsgenerators bereits die komplette Blockfolge definiert. Uns Sie brauchen eigentlich nur eine Zeile. Ist das korrekt?

Das ist das gesamte array_merge() eigentlich nicht notwendig. Korrekt wäre es dann, einen Zettel pro Interview zu ziehen und diese Abfolge zu verwenden:

$abfolge = value('RG01', 'label');
setPageOrder($abfolge);

Die Seite A0 müsste dann in jeder der 24 Abfolgen im Zufallsgenerator einfach an der richtigen Stelle stehen.
by s178195 (120 points)
Entschuldigen Sie die ursprünglich falsche Formulierung der Frage. Wenn ich es richtig verstanden habe, muss ich den PHP-Code jetzt einfach hierdurch austauschen?


$abfolge = value('RG01', 'label');
setPageOrder($abfolge);
by SoSci Survey (302k points)
Und Sie müssten im Zufallsgenerator wieder einstellen, dass nur ein Zettel gezogen werden soll, genau.
by s178195 (120 points)
Vielen Dank! Jetzt wird mir nur noch folgendes angezeigt:

In setPageOrder() wurde eine Seite "gap" angegeben, die es im Fragebogen nicht gibt.
by SoSci Survey (302k points)
Nun ja, Sie haben "gap" in die Liste geschrieben. Da steht z.B.:

S1-S60, gap, S61-S79, gap, S80-SS117, gap, S118-S119

Was meinen Sie denn mit "gap"?
by s178195 (120 points)
Ich habe die Anleitung so verstanden, dass "gap" die einzelnen Blöcke voneinander abgrenzt. So steht es zum Beispiel in der Anleitung:

STIM1a-STIM1b, gap, STIM2a-STIM2b
STIM2a-STIM2b, gap, STIM1a-STIM1b

Daher dachte ich, dass ich durch den Begriff "gap" die Blöcke voneinander abgrenze:
1. Block: A0, S1-S60
2. Block: S61-S79
3. Block: S80-SS117
4. Block S118-S119

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

...