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

Guten Tag zusammen!

Ich habe für mehrere Seiten einen Timer eingerichtet. Es handelt sich dabei immer um den gleichen Timer von 2 Minuten.
Er wurde mittels PHP und HTML-Textblöcken eingebunden.

if (!isset($time0)) {
  $time0 = time();
  registerVariable($time0);  // Die Variable $time0 auch nach Ende des PHP-Codes aufbewahren
}
// Prüfung, ob die Zeit schon abgelaufen ist
// (z.B. weil der Teilnehmer die Seite neu geladen hat)
$timer = 120;  // Der Teilnehmer hat 2 Minuten (120 Sekunden) Zeit zur Bearbeitung
if (time() >= $time0 + $timer) {
  goToPage('next');
}
// Die verbleibende Zeit muss auch dem JavaScript-Code bekannt gemacht werden
$remain = $time0 + $timer - time();
replace('%remain%', $remain);

Nun ergibt sich im Pretest des Fragebogens aber das Problem dass die Fragen mehrerer Seiten nach der ersten Seite zusammen geworfen erscheinen.
Auch die Fragen der Folgeseite ohne Timer erschienen am Ende der Seite.

Zusätzlich tauchen alle Fragen dann nochmal an den vorhergesehenen Seiten auf.
Theoretisch also sogar zwei mal.

Ich vermute, dass sich as Problem im Skript ergibt (das habe ich aber einfach so übernommen wie SoSci das vorschlägt.
Hat jemand Erfahrungen damit?

Ich bin über jeden Hinweis dankbar!
Viele Grüße!

in SoSci Survey (dt.) by s115573 (140 points)
edited by SoSci Survey

1 Answer

0 votes

Nun ergibt sich im Pretest des Fragebogens aber das Problem dass die Fragen mehrerer Seiten nach der ersten Seite zusammen geworfen erscheinen.

Vermutlich haben Sie den PHP-Code verwendet, welcher einen Timer über mehrere Seiten ermöglicht - was auch dann sinnvoll ist, wenn man einen Neustart des Timers durch Neu-Laden der Seite verhindern möchte.

Das Problem in Ihrem Fall entsteht wahrscheinlich dadurch, dass Sie Variablen mittels registerVariable() global verfügbar machen und mittels isset() prüfen, ob die Variablen bereits initialisiert wurden.

Die Lösung ist denkbar einfach: Verwenden Sie für diese Variablen, die Sie mittels registerVariable() verfügbar machen, bei jedem Timer eine andere Bezeichnung, also z.B. $timeout1 beim ersten Timer und $timeout2 beim zweiten Timer.

by SoSci Survey (193k points)
Vielen Dank für die Unterstützung!
Ich hab den Vorschlag gleich so angewendet, dass Problem bleibt aber leider bestehen...
Tja ... dann muss ich Sie bitten, dass Sie einmal den kompletten PHP-Code posten, den Sie für die Timer verwenden (gerne als Edit in Ihrer Frage oben, und dann den Code gleich markieren und mittels Knopf {} als Code formatieren). Und vielleicht schildern Sie auch das Problem nochmal differenzierter: Ich habe es jetzt so verstanden, dass der Timer einfach weiterläuft statt neu zu beginnen?
Ich hab den Code gerade mal als edit eingefügt und die Klammer an den Anfang und das Ende gesetzt (?) Hoffe das stimmt so.
Der Timer funktioniert auch - nachdem die erste Seite 2 Minuten angezeigt wurde springt er auf die nächste.
Das Problem entsteht dann auf der zweiten Seite, weil die Fragen von der Seite davor - sowie die Fragen der drei Folge Seiten alle mit auf diese Seite geworfen werden.
Dabei Handelt es sich auch um Fragen auf deren Seite gar kein Timer mehr eingebaut wurde.

Nochmals vielen Dank!
> die Klammer an den Anfang und das Ende gesetzt (?)

Ich meinte den Knopf beim Eingeben/Bearbeiten, der mit {} beschriftet ist :)

> weil die Fragen von der Seite davor - sowie die Fragen der drei Folge Seiten alle mit auf diese Seite geworfen werden.

Haben Sie den PHP-Code über oder unter Ihren Fragen platziert? Es muss über den Fragen stehen. Sonst hängt das goToPage() die Inhalte der Seiten aneinander.
Das Problem lag tatsächlich darin, dass der PHP-Code am Ende der Seite lag
Vielen Dank!
Jetzt läuft es Problemlos!
...