Hallo,
ich benutze für einen Fragebogen folgenden php code für eine Blockrandomisierung:
// 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');
Nun möchte ich gerne noch über einen interne Variable erfassen, welcher Block an welcher Stelle bei jeder Versuchsperson präsentiert wurde. In vorherigen Fragebögen, hatte ich jedoch nur einzelne Fragen randomisiert und folgenden php code verwendet, wobei ich entsprechend der Anzahl der zu randomisierenden Fragen ebenso viele "items" / Variablen erstellt hatte. Der php Code für die Randomisierung der Fragen war:
if (!isset($pages)) {
$pages = array('e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7','e8');
shuffle($pages);
$pages[] = 'filler'; #seite nach randomisierung
registerVariable($pages);
}
setPageOrder($pages);
und der code für die Interne Variable war folgender:
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
An sich hatte ich probiert ähnlich zu dem oben stehenden Code der Internen Variable den Variablennamen "pages" durch "rotation" auszutauschen, was aber nicht funktioniert. Theoretisch hab ich ja nur 4 Blöcke und müsste nur wissen welcher Block wann präsentiert wurde.