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

Guten Tag

In einem Projekt arbeiten wir mit Zeitbeschränkungen, bzw. einer Zeitverzögerung auf unterschiedlichen Seiten. Die Verzögerung soll die Befragten genau 5 Minuten auf dieser Seite lassen. Wir haben zwei solcher Seiten und arbeiten mit einem Timer (Automatisch weiter zur nächsten Seite). Während die Zeitbeschränkung auf der ersten Seite klappt, haben wir nun verschiedentlich zurückgemeldet bekommen, dass die Zeitverzögerung auf der zweiten Seite, die den gleichen Code enthält, nicht funktioniert. Hier der entsprechende PHP und HTML-Code, den wir eingesetzt haben:

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 = 300; // 5 Minuten (300 Sekunden) wird Stoppseite angezeigt
if (time() >= $time0 + $timer) {
goToPage('next');
}
// Die verbleibende Zeit muss auch dem JavaScript-Code bekannt gemacht werden
$remain = $time0 + $timer - time();
replace('%remain%', $remain);


<!--

// Funktion zur Weiterleitung
function weiter() {
// Eine Meldung anzeigen (optional)
alert("Zeit für die zweite Runde!");
// Den Teilnehmer zur nächsten Seite weiterleiten
SoSciTools.submitPage();
}

// Weiter-Knopf ausblenden (optional)
SoSciTools.submitButtonsHide();

// Initialisierung der Weiterleitung
SoSciTools.attachEvent(window, "load", function(evt) {
// Timer für automatische Weiterleitung starten
window.setTimeout(weiter, %remain% * 1000);
});

// -->

Und entsprechend auf der zweiten Seite mit Zeitverzögerung:

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 = 300; // 5 Minuten (300 Sekunden) wird Stoppseite angezeigt
if (time() >= $time0 + $timer) {
goToPage('next');
}
// Die verbleibende Zeit muss auch dem JavaScript-Code bekannt gemacht werden
$remain = $time0 + $timer - time();
replace('%remain%', $remain);


<!--

// Funktion zur Weiterleitung
function weiter() {
// Eine Meldung anzeigen (optional)
alert("Zeit für die dritte Runde!");
// Den Teilnehmer zur nächsten Seite weiterleiten
SoSciTools.submitPage();
}

// Weiter-Knopf ausblenden (optional)
SoSciTools.submitButtonsHide();

// Initialisierung der Weiterleitung
SoSciTools.attachEvent(window, "load", function(evt) {
// Timer für automatische Weiterleitung starten
window.setTimeout(weiter, %remain% * 1000);
});

// -->

Vielen Dank für Ihre Unterstützung!

closed with the note: Problem geklärt, siehe Kommentare.
by s109993 (11.4k points)
wenn SIe den Code mehrmals verwenden (also auf mehreren Seiten), benennen Sie einmal die Variable time0 auf der zweiten Seite um (z. B. zu time1).
by s292914 (110 points)
So hat es geklappt, danke für die rasche Rückmeldung.

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

...