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

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.

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

1 Answer

0 votes

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 SoSci Survey (126k 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');
Was zeigt denn die Debug-Information auf dieser und der folgenden Seite?
https://www.soscisurvey.de/help/doku.php/de:create:debugging
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?
Würden Sie (der Übersichtlichkeit halber bitte in einer neuen Frage) bitte einmal den kompletten PHP-Code posten? Dann kann ich gezielter antworten.
Habe ich gemacht :)
...