0 votes
in SoSci Survey (dt.) by s134158 (110 points)

Ich möchte gerne ein Experiment erstellen, in dem ich einzelne Items rotiere, sodass bei jeder Versuchsperson eine unterschiedliche Reihenfolge entsteht. Parallel dazu, würde ich gerne für jedes einzelne Item einen Timer (1,5 min.) ablaufen lassen. Wird dieser Timer nicht beachtet, soll die Versuchsperson zum nächsten Item weitergeleitet werden. Für dieses Item soll die Versuchsperson ebenfalls 1,5 min. Zeit haben.

Einzelne Programmierung der Rotation und der Timer-Einstellung haben funktioniert, jedoch funktionieren sie nicht miteinander. Rotiere ich die Items mit einem PHP-Code auf einer Seite des Fragebogens, so wird mir der Timer bei dem ersten Item angezeigt, jedoch bricht das Experiment ab, wenn ich zum nächsten Item gehen möchte.

Welche Möglichkeiten gibt es, sowohl die Items zu rotieren als auch einen Timer für jedes einzelne Item ablaufen zu lassen?

Vielen Dank.

1 Answer

0 votes
by SoSci Survey (328k points)

Vermutlich haben Sie den PHP-Code verwendet, um den Timer über mehrere Seiten laufen zu lassen und damit man ihn auch mit einem Neu-Laden der Seite nicht umgehen kann? Kurzum, Sie haben wahrscheinlich mit registerVariable() gearbeitet.

Das können Sie auch machen, nur muss dann für jede Seite ein eigener Zeitstempel gespeichert werden. In Ihrem Loop (das vermute ich ... Sie haben leider keinen PHP-Code gepostet) können Sie allerdings nicht einfach den Namen der Variablen ändern. Deshalb empfehle ich, dass Sie stattdessen die Zeitstempel als Array ablegen: Ein Eintrag für jede Seite.

Details gerne auf Nachfrage, wenn Sie Ihren PHP-Code in der Frage ergänzen.

by s134158 (110 points)
Rotation:
if (!isset($fragen)) {$fragen = array(    'KD01', 'KD02',  'KD06', 'KD07', 'KD10', 'KD11', 'KD12', 'KD13',);  shuffle($fragen);   registerVariable($fragen);}$i = loopPage(count($fragen));question($fragen[$i]);

Timer:
https://www.soscisurvey.de/help/doku.php/de:create:timer-submit

Diese Codes habe ich verwendet und den PHP-Code für die Rotation an die Stelle der Items (unter Anleitung des Links) eingefügt.
by SoSci Survey (328k points)
Setzen Sie den PHP-Code-Teil des Timers in denselben PHP-Code-Block wie den Code der Rotation und ändern Sie den Anfang wie folgt:

if (!isset($time0)) {
  $time0 = [];
  registerVariable($time0);
}
if (!isset($time0[$i])) {
  $time0[$i] = time();
}

Im weiteren Code ersetzen Sie alle $time0 durch $time0[$i]
by s134158 (110 points)
if (!isset($time0)) {
  $time0 = time();
  registerVariable($time0);  // Die Variable $time0 auch nach Ende des PHP-Codes aufbewahren
}

Ich habe diesen Teil des Codes des Timers nun mit ihren Angaben ersetzt und mir wird folgende Fehlermeldung angezeigt:

 There is an error in the PHP code:
Questionnaire Error: The PHP variable $i has been used but the variable is yet undefined (the variable has no value).

PHP code

004   $time0 = [];
005   registerVariable('time0');
006 }
007 if (!isset($time0[$i])) {
008   $time0[$i] = time();
009 }
010 $timer = 60;  
Questionnaire Error: The PHP variable $i has been used but the variable is yet undefined (the variable has no value).

PHP code

005   registerVariable('time0');
006 }
007 if (!isset($time0[$i])) {
008   $time0[$i] = time();
009 }
010 $timer = 60;  
011 if (time() >= $time0[$i] + $timer) {
Questionnaire Error: The PHP variable $i has been used but the variable is yet undefined (the variable has no value).

PHP code

008   $time0[$i] = time();
009 }
010 $timer = 60;  
011 if (time() >= $time0[$i] + $timer) {
012   return 'go:next';
013 }
014 $remain = $time0[$i] + $timer - time();
Questionnaire Error: The PHP variable $i has been used but the variable is yet undefined (the variable has no value).

PHP code

011 if (time() >= $time0[$i] + $timer) {
012   return 'go:next';
013 }
014 $remain = $time0[$i] + $timer - time();
015 replace('%remain%', $remain);
016 if (!isset($fragen)) {$fragen = array(    'KD01', 'KD02',  'KD06', 'KD07', 'KD10', 'KD11', 'KD12', 'KD13',);  shuffle($fragen);   registerVariable('fragen');}$i = loopPage(count($fragen));question($fragen[$i]);
017 return 'ok';
by SoSci Survey (328k points)
> The PHP variable $i has been used but the variable is yet undefined

Der PHP-Code für den Time muss (im selben PHP-Code-Block) unter das loopPage(), denn dort definieren Sie ja die Variabel $i:

$i = loopPage(count($fragen));

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

...