0 votes
in SoSci Survey (dt.) by s038455 (160 points)

Hier nochmal im Detail:
Ich habe einen Fragebogen mit insgesamt 49 Seiten.
Seite 1-7: Einleitung/Instruktionen

Seite 8: php code für die 4 Listen:

question('ZG01');
$code = value('ZG01');
if ($code == 1) {
  $rubrik = 'L1';
} elseif ($code == 2) {
  $rubrik = 'L2';
} elseif ($code == 3) {
  $rubrik = 'L3';
} else {
  $rubrik = 'L4';
}
registerVariable($rubrik); 

(das funktioniert gut)

Seite 9: Code für die Randomisierung und Speicherung für der Randomisierung. Hier sind die Schwierigkeiten. Die Randomisierung an sich funktioniert gut mit diesem Code:

$pages = array('S01', 'S02', ..., 'S48');
shuffle($pages);
$pages[] = 'FIN';
setPageOrder($pages);

Es folgen also 48 Seiten auf denen je eine Frage angezeigt wird (question($rubrik.'02');), und denen ich die Kennungen S01-S48 gegeben habe.
Danach kommt noch eine leere Seite, die sich FIN nennt.
Wichtig für die Speicherung: Ich möchte die Rangfolge speichern, also S01=rangX, S02=rangX, etc..

Ich habe eine interne Variable angelegt, die sich TR01 nennt. Innerhalb dieser gibt es 49 Variablen (trial01-trial49).

Auf der SoSci Seite zu put() ist der Code zu finden, den ich für mich anpassen müsste:

$pages = array('A1','A2','A3','A4','A5','B1','B2-B4','B5');
// Die Seiten nicht direkt mischen, sondern deren Positionen
$indices = array_keys($pages);
shuffle($indices);
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $random speichern
$random = array();
for ($i=0; $i<count($indices); $i++) {
  // Rang speichern wie oben
  $id = id('IV01', $indices[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $random[$i] = $pages[$indices[$i]];
}
// Neue Seitenabfolge setzen
setPageOrder($random);

Dies habe ich getan, aber 1:1 kann ich ihn nicht übernehmen, auch wenn ich ihn entsprechend der Namen meiner Seiten/Variablen anpasse. Z.B. scheint hier der Befehl

$pages[] = 'FIN';

zu fehlen, und mir werden auf einmal alle Fragen 2x angezeigt.

Um meine Frage nochmal konkret zu stellen: Wie muss ich den Code der put() Seite für mich anpassen?

Viele Dank für Ihre Zeit und Mühe!

1 Answer

0 votes
by SoSci Survey (302k points)

Sie könnn vor derm setPageOrder() einfach folgende Zeile einfügen:

$random[] = 'FIN';

Das 'IV01' im PHP-Code müssten Sie noch durch 'TR01' ersetzen.

Ansonsten sieht der Code nicht schlecht aus. Könnten Sie in der Frage vielleicht noch ergänzen (a) was nicht funktioniert und (b) die Debug-Information, welche für diese Seite ausgegeben wird?

Bitte beachten Sie auch, dass Sie Ränge speichern. In der Variable TR01_03 wird eine Ziffer speichern, an welcher Stelle in der Abfolge die Seite A3 angezeigt wurde.

by s038455 (160 points)
Wunderbar, das hat mein Problem schon gelöst, danke!

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

...