0 votes
in SoSci Survey (dt.) by s064504 (195 points)
edited by s064504

Hallo,

ich habe einen Fragebogen, bestehend aus vier Blöcken (A, B, C, D) und möchte die Blöcke als ganzes randomisieren. Die Randomisierung funktioniert nicht. Es werden nicht alle Blöcke präsentiert und die Seiten innerhalb eines Blockes bleiben auch nicht gleich. Ich habe folgenden Code verwendet:

// Erst einmal die Seitenkennungen als Array speichern
$rotation = array(
  'A' => array('A1','A2','A3','A4','A5','A6','A7','A8','A9','A10','A11','A12','A13','A14','A15','A16','A17','A18','A19','A20','A21','A22','A23'),
  'B' => array('B1','B2','B3','B4','B5','B6','B7','B8','B9','B10','B11','B12','B13','B14','B15','B16','B17','B18','B19','B20','B21','B22','B23'),
  'C' => array('C1','C2','C3','C4','C5','C6','C7','C8','C9','C10','C11','C12','C13','C14','C15','C16','C17','C18','C19','C20','C21','C22','C23'),
  'D' => array('D1','D2','D3','D4','D5','D6','D7','D8','D9','D10','D11','D12','D13','D14','D15','D16','D17','D18','D19','D20','D21','D22','D23'),
);

// Reihenfolge der Blöcke zufällig mischen
shuffle($rotation);

// Jetzt das Ergebnis noch als Seitenabfolge festlegen
// Weiter soll es anschließend mit Seite 'ende' gehen
setPageOrder($rotation, 'ende');

Ich habe schon verschiedene Beiträge angeschaut, aber komme zu keiner richtigen Lösung.

1 Answer

0 votes
by SoSci Survey (304k points)

Es werden nicht alle Blöcke präsentiert und die Seiten innerhalb eines Blockes bleiben auch nicht gleich.

Ich habe zwei Vermutungen. Zum einen: Steht der PHP-Code auf der Seite vor A1? Es ist wichtig, dass der Code im Laufe der Seiten nicht erneut aufgerufen wird?

Und zum zweiten: Verwenden Sie irgendwo in Ihrem Fragebogen die Funktionen setNextPage(), setPageOrder(), loopPage, loopToPage() oder goToPage()? Diese Befehle können eine laufende Seitenabfolge beenden.

Sie können übrigens die Blöcke auch knapper definieren:

$rotation = array(
  'A' => 'A1-A23',
  'B' => 'B1-B23',
  'C' => 'C1-C23',
  'D' => 'D1-D23'
);
by s064504 (195 points)
Vielen Dankd für die Antwort. Tatsächlich war noch ein setPageOrder() auf einer anderen Seite. Aber ich habe es nun entfernt und der PHP Code startet auch vor A1 trotzdem funktioniert die Randomisierung nicht.
Mein Code sieht wie folgt aus:

// Erst einmal die Seitenkennungen als Array speichern
$rotation = array( 'A' => 'A1-A23', 'B' => 'B1-B23', 'C' => 'C1-C23', 'D' => 'D1-D23' );

// Jetzt noch die Reihenfolge der Blöcke zufällig mischen
shuffle($rotation);

// Jetzt das Ergebnis noch als Seitenabfolge festlegen
// Weiter soll es anschließend mit Seite 'ende' gehen
setPageOrder($rotation, 'ende');
by SoSci Survey (304k points)
Was zeigt denn die Debug-Information auf dieser und der folgenden Seite?
https://www.soscisurvey.de/help/doku.php/de:create:debugging
by s064504 (195 points)
Hallo,
Vielen Dank für Ihre Hilfe! Die Randomisierung klappt jetzt.
Aber ich habe noch eine Frage zur Erstellung einer internen Variable, um nachzuvollziehen, welcher Block an welcher Stelle präsentiert wurde.

Wenn ich nur einzelne Fragen randomisiert habe, dann habe ich eine interne Variable mit der entsprechenden Anzahl an Fragen erstellt und folgenden Code auf der Seite bevor die Randomisierung beginnen sollte verwendet:

for ($i=0; $i<count($pages); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV01', $i + 1);  
  // Hier den Wert aus dem Array speichern
  put($id, $pages[$i]);
}
question('IV01', 'css-class=false', 'css-style=false');  // IV01


Für die Blockrandomisierung habe ich gedacht, dass ich mich an diesem Code orientieren könnte und nur $pages durch $rotation ersetzen müsste. Aber das funktioniert nicht. Leider habe ich keine weitere Idee, wie ich die Erfassung der Blockreihenfolge erfassen kann. Hätten Sie einen Hinweis?
by SoSci Survey (304k points)
Würden Sie (der Übersichtlichkeit halber bitte in einer neuen Frage) bitte einmal den kompletten PHP-Code posten? Dann kann ich gezielter antworten.
by s064504 (195 points)
Habe ich gemacht :)

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

...