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

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!

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

1 Answer

0 votes

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 SoSci Survey (199k points)
Wunderbar, das hat mein Problem schon gelöst, danke!
...