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

Hallo,

ich habe 4 Blöcke (nennen wir sie A, B, C, D).
Block D muss immer am Ende bleiben, Block A und B müssen immer zusammenbleiben.
Block "AB" und Block C sollen rotieren.
Diese beiden Abfolge habe ich bereits mit dem Zufallsgenerator realisiert:

Fragebogen 1: Einleitung, Aufgabenstellung A, Block A, Aufgabenstellung B, Block B, Aufgabenstellung C, Block C, Aufgabenstellung D, Block D.

Fragebogen 2: Einleitung, Aufgabenstellung C, Block C, Aufgabenstellung A, Block A, Aufgabenstellung B, Block B, Aufgabenstellung D, Block D.

Die Seiten in Block A, Block B, Block C, Block D sollen jedoch jetzt noch innerhalb jedes Blocks rotieren, während die Aufgabenstellungen am selben Platz bleiben.
Dazu habe ich folgenden PHP-Code (natürlich mit meinen Kennungen und Durchnummerierung des Befehls "$seiten") auf jede der 4 Seiten, auf denen die Aufgabenstellungen stehen, gesetzt:

if (!isset($seiten)) {
  $seiten = array('PA', 'PB', 'PC', 'PD', 'PE');
  shuffle($seiten);
  $seiten[] = 'PX';
  registerVariable($seiten);
}

setPageOrder($seiten);

Jetzt habe ich das Problem, dass beim Pretest jeder Block doppelt erscheint.

Versuche ich allerdings das Problem mit dem PHP-Code zum Mischen und Rotieren von Blöcken zu beheben, habe ich das Problem, dass die jeweilige Aufgabenstellungen nicht vor dem entsprechenden Block steht und dass Block A und B getrennt werden. Sie müssen auf jeden Fall zusammenbleiben, können aber nicht zu einem Block gemacht werden, weil jeder eine andere Aufgabenstellung hat.

Vorab vielen Dank für die Hilfe. Ich bin langsam am Verzweifeln.

1 Answer

0 votes
by SoSci Survey (316k points)

Wenn Sie setPageOrder() im Fragebogen mehrfach aufrufen, dann setzt eine neue Seitenabfolge die vorherige außer Kraft. Das heißt für Sie: Sie müssen erst eine komplette Liste des kompletten Ablaufs erstellen und diesen dann zu Beginn einmal in setPageOrder() festlegen.

Pragmatisch erzielen Sie das, indem Sie die Blöcke, die Sie intern mischen möchten, erstmal als Arrays (Listen) anlegen und intern mischen. Anschließend fügen Sie diese Teil-Listen - in Abhängigkeit Ihrer Zufallsziehung - entweder nach Schema A oder nach Schema B zur Gesamtliste zusammen.

if (!isset($abfolge)) {
  $blockA = ['A1','A2','A3'];
  $blockB = 'B1-B5';  // Hier nichts mischen
  $blockC = ['C1','C2','C3'];
  shuffle($blockA);
  shuffle($blockC);
  if (value('RG01') == 1) {
    $abfolge = [$blockA, $blockB, $blockC];
  } else {
    $abfolge = [$blockC, $blockB, $blockA];
  }
  registerVariable($abfolge);
}
setPageOrder($abfolge);
by s143182 (120 points)
edited by s143182
Ich habe jetzt verstanden, dass das Problem nicht am Zufallsgenerator liegt. Leider komme ich trotz vielem Herumprobieren nicht weiter. Tut mir leid, falls ich mich ungeschickt anstelle. Ich bin neu in Sachen PHP und Fragebogenkonstruktion.

Ich hatte nun als PHP-Code auf der Seite der Einleitung folgendes:

Vorab: Die Kennungen A1, A2, A3 und A4 stehen für die Seiten der Aufgabenstellung. A011 ist die Variable, die ich für den Zufallsgenerator benötige.
Ich möchte folgende 2 Abfolgen realisieren:
1. Einleitung (3 Seiten), A1, blockA, A2, blockB, A3, blockC, A4, blockD, end
2. Einleitung (3 Seiten), A3, blockC, A1, blockA, A2, blockB, A4, blockD, end

Die Seiten innerhalb der 4 Blöcken sollen zufällig rotieren und die entsprechende Aufgabenstellung immer vor dem entsprechenden Block bleiben.

if (!isset($abfolge)) {
  $blockA = ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'B10', 'B11', 'B12', 'B13', 'B14', 'B15', 'B16', 'B17', 'B18', 'B19', 'B20', 'B21', 'B22', 'B23', 'B24', 'B25', 'B26', 'B27', 'B28', 'B29', 'B30', 'B31', 'B32', 'B33', 'B34', 'B35', 'B36', 'B37', 'B38', 'B39', 'B40', 'B41', 'B42', 'B43', 'B44', 'B45', 'B46', 'B47', 'B48', 'B49', 'B50'];
  $blockB = ['P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'P8', 'P9', 'P10', 'P11', 'P12', 'P13', 'P14', 'P15', 'P16', 'P17', 'P18', 'P19', 'P20', 'P21', 'P22', 'P23', 'P24', 'P25', 'P26', 'P27', 'P28', 'P29', 'P30', 'P31', 'P32', 'P33', 'P34', 'P35', 'P36', 'P37', 'P38', 'P39', 'P40', 'P41', 'P42', 'P43', 'P44', 'P45', 'P46', 'P47', 'P48', 'P49', 'P50'];
  $blockC = ['O1', 'O2', 'O3', 'O4', 'O5', 'O6', 'O7', 'O8', 'O9', 'O10', 'O11', 'O12', 'O13', 'O14', 'O15', 'O16', 'O17', 'O18', 'O19', 'O20', 'O21', 'O22', 'O23', 'O24', 'O25', 'O26', 'O27', 'O28', 'O29', 'O30'];
  $blockD = ['X1', 'X2', 'X3', 'X4', 'X5', 'X6', 'X7', 'X8', 'X9', 'X10', 'X11', 'X12', 'X13', 'X14', 'X15', 'X16', 'X17', 'X18', 'X19', 'X20', 'X21', 'X22', 'X23', 'X24', 'X25', 'X26', 'X27', 'X28', 'X29', 'X30', 'X31', 'X32', 'X33', 'X34', 'X35', 'X36', 'X37', 'X38', 'X39', 'X40', 'X41', 'X42', 'X43', 'X44', 'X45', 'X46', 'X47', 'X48', 'X49', 'X50'];
  shuffle($blockA);
  shuffle($blockB);
  shuffle($blockC);
  shuffle($blockD);
  if (value('A011') == 1) {
    $abfolge = ['A1', $blockA, 'A2', $blockB, 'A3', $blockC, 'A4', $blockD];
  } else {
    $abfolge = ['A3', $blockC, 'A1', $blockA, 'A2', $blockA, 'A4', $blockD];
  }
  registerVariable($abfolge);
}
setPageOrder($abfolge);
by SoSci Survey (316k points)
Sieht schon ganz gut aus. Was funktioniert denn schon und was nicht?

Was zeigt denn die Debug-Information an, wenn Sie das Ganze starten?
by s143182 (120 points)
Die Debug-Information lautet "Die Variable A011 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln."

Außerdem wird mir, nachdem mir als erstes blockC angezeigt wird, A1, A3 und dann wieder BlockC angezeigt. Und das alles beim Fragenbogen mit dem ersten Ablauf. Ich habe es über den Fragebogen 'random' gestartet, in dem mein Zufallsgenerator platziert ist.
by SoSci Survey (316k points)
> Die Variable A011 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt.

Fangen wir damit an. Bitte prüfen Sie nochmal, ob Ihr Zufallsgenerator die Kennung A011 hat, und ob ein Zettel pro Interview (Einstellung im Zufallsgenerator) gezogen wird?

> Außerdem wird mir, nachdem mir als erstes blockC angezeigt wird, A1, A3 und dann wieder BlockC angezeigt.

Um das zu klären, posten Sie bitte die komplette (!) Debug-Information, vgl. https://www.soscisurvey.de/help/doku.php/de:create:debugging

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

...