0 votes
ago in SoSci Survey (dt.) by s182083 (180 points)

Hallo,

ich möchte 12 Blöcke aus jeweils 2 Seiten randomisiert anzeigen lassen. Die letztendlich angezeigte Reihenfolge der Blöcke soll in der internen Variable RA05 abgespeichert werden (diese Variable hat 12 items mit den Beschriftungen pos_1, pos_2, pos_3... - pos_12).

Dann sollen die Teilnehmenden unterschiedlich viel Zeit (Sekunden) für die Bearbeitung der Vignetten bekommen. 6 Blöcke sollen für X Sekunden angezeigt werden und im Anschluss 6 Blöcke für Y Sekunden. Hier soll ebenfalls eine randomisierte Zuordnung stattfinden, ob zuerst 6 mal X oder 6 mal Y Sekunden angezeigt werden. Auch hier soll die letztendlich angezeigte Sekundenzahl in der Datenauswertung ersichtlich werden. Ich habe dafür die interne Variable RA06 mit ebenfalls 12 items erstellt (pos_1-pos12 wie oben beschrieben).

Beide erstellte interne Variablen RA05 und RA06 habe ich auf einer Seite eingefügt. Auf der darauffolgenden Seite habe ich folgenden Code eingefügt:

/ 1 | Rotation mischen /
$rotation = [ 'A' => 'V0101-V0102', 'B' => 'V0201-V0202', 'C' => 'V0301-V0302', 'D' => 'V0401-V0402', 'E' => 'V0501-V0502', 'F' => 'V0601-V0602', 'G' => 'V0701-V0702', 'H' => 'V0801-V0802', 'I' => 'V0901-V0902', 'J' => 'V1001-V1002', 'K' => 'V1101-V1102', 'L' => 'V1201-V1202',];

shuffle($rotation);

/ 2 | Dauer-Array /
$dur = array_merge(array_fill(0,6,9), array_fill(0,6,12));

if (mt_rand(0,1)) { // 50 % drehen

$dur = array_reverse($dur);     // 40,40,20,20

}

/ 3 | Dauer den einzelnen Seiten zuordnen /
$i = 0;
if (!isset($durPages)) { $durPages = []; registerVariable('durPages'); }

foreach ($rotation as $pages) {

$t = $dur[$i++];                     // EIN Wert pro Block
foreach (explode('-', $pages) as $pageID) {
    $durPages[$pageID] = $t;         // beide Seiten erhalten dieselbe Zeit
}

//ACHTUNG Zusatz eingefügt:
}

$i = 0;
foreach ($rotation as $block => $pages) {

$pos = str_pad($i + 1, 2, '0', STR_PAD_LEFT);  // erzeugt 01, 02, ..., 12

// Blockname speichern (A–L)
put('RA05_' . $pos, $block);

// Dauer speichern (optional)
$duration = $dur[$i];
put('RA06_' . $pos, $duration);

$i++;

}

//ENDE

/ 4 | Reihenfolge mit Zwischenseite bauen /
$startID = 'START';
$middleID = 'MID';
$order = [];

$order[] = $startID; // 1) START ganz am Anfang

$i = 0;
foreach ($rotation as $pages) {

$order[] = $pages;    // jeden Vignetten-Block anhängen
$i++;
if ($i === 6) {
    // 2) nach genau 6 Blöcken einmalige MID-Seite
    $order[] = $middleID;
}

}

// Keine array_pop nötig, da wir MID nur einmal kontrolliert einfügen
setPageOrder($order, 'Post');

/ Alles merken, damit spätere Seiten darauf zugreifen können /
registerVariable($rotation);
registerVariable($durPages);

$firstDur = $dur[0]; // Zeit für die ersten 6 Vignetten
$secondDur = $dur[6]; // Zeit für die nächsten 6 Vignetten

// 3) Variablen registrieren, damit START/MID darauf zugreifen können

registerVariable($firstDur);
registerVariable($secondDur);

Nun werden mir diverse Fehlermeldungen angezeigt und nur die Sekundenanzeigen werden in der Datenauswertung den einzelnen items der internen Variable RA06 (pos_1-pos_12) zugewiesen. Bei der anderen internen Variable RA05 wird angezeigt: 1,2,3,4,5... bis 12. Dies kann nicht stimmen und ich möchte hier gerne, dass die einzelnen Blöcke: A,B,C etc. in der Datenübersicht den Positionen zugeordnet werden. Wie kann ich das umsetzen?

Wird die put()-Funktion in den Code integriert, oder sollte sie erst auf der nächsten Seite folgen? Diese Fehlermeldung wird mir u.A. angezeigt: Items in der nachfolgenden Fragen werden auf dieser Seite schon weiter oben angezeigt. Dies führt fast zwangsläufig zu Datenverlust! Falls Sie eine Frage mehrfach benötigen, legen Sie bitte eine Kopie der Frage an. Betroffen sind folgende Items: RA05_01.

Ich würde mich sehr über Ihre Hilfe freuen, da ich gerade wirklich nicht mehr weiter weiß.

Vielen Dank im Voraus und liebe Grüße!

Please log in or register to answer this question.

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

...