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

Hallo!

Ich habe heute sehr lange vergeblich versucht, Folgendes zu programmieren:
Bei dem Item wird nach drei Minuten der Weiter-Button eingeblendet, nach vier Minuten wird die Versuchsperson automatisch zur nächsten Seite weitergeleitet. Das Ganze soll mit einem Countdown versehen werden.
Ich hatte das Problem, dass entweder die Codes im finalen Fragebogen mit abgebildet waren, oder dass die Funktionen nicht umgesetzt wurden.
Weiß jemand, was ich beachten muss?
Und wo muss ich den PHP-Code, von dem die Rede in der Hilfeseite ist, in den Fragebogen einspeisen? Auch in einem neuen Textfeld?
Vielen Dank schonmal!

Liebe Grüße

closed with the note: Problem gelöst (siehe Kommentare)
by SoSci Survey (304k points)
Bitte posten Sie einmal den PHP- und HTML-Code, den Sie bisher verwenden und posten Sie am besten auch eine Pretest-Link direkt (!) zur betroffenen Seite im Fragebogen.

Stellen Sie das Ganze auch zum Testen erstmal auf 5 und 10 Sekunden statt 3 und 4 Minuten.

> Und wo muss ich den PHP-Code, von dem die Rede in der Hilfeseite ist, in den Fragebogen einspeisen?

Siehe https://www.soscisurvey.de/help/doku.php/de:create:php
by s175831 (110 points)
Hallo,
vielen Dank schonmal!
Das automatisch Weiterleiten funktioniert jetzt, es fehlt allerdings noch der Countdown (bei dieser Folie sollen es 15 Sekunden sein, der Weiter-Button ist unerheblich und kann so gelassen werden).
Hier der Link zu dem Befragungsprojekt:
https://www.soscisurvey.de/leistung_und_wohlbefinden/?act=3uiwkufyc8eJOncpWNlCc76v

Und hier die Codes:

PHP

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 = 15;  // Der Teilnehmer hat 15 s 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);


HTML:

<script type="text/javascript">
<!--
 
// Funktion zur Weiterleitung
function weiter() {
  // Den Teilnehmer zur nächsten Seite weiterleiten
  SoSciTools.submitPage();
}
 
// Countdown anzeigen
var date0 = new Date();
var timeout = date0.getTime() + %remain% * 1000;
function updateCountdown() {
  // Zeit berechnen
  var date = new Date();
  var time = Math.ceil((timeout - date.getTime() - 50) / 1000);  // Verbleibende Zeit in Sekunden
  // Zeit anzeigen
  var out = document.getElementById("remain");
  if (!out) {
    return;
  }
  while (out.lastChild) {
    out.removeChild(out.lastChild);
  }
  var minutes = Math.floor(time / 60);
  var seconds = String(time - 60 * minutes);
  if (seconds.length < 2) seconds = "0" + seconds;
  var display = String(minutes) + ":" + seconds;
  var displayNode = document.createTextNode(display);
  out.appendChild(displayNode);
}


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


Liebe Grüße und vielen Dank!
by SoSci Survey (304k points)
Wenn ich den Pretest-Link aufrufe, erhalte ich erstmal Fehlermeldungen zu nicht existierenden Fragen/Texten (IL26). Solche Probleme sollten als erstes behoben werden. Eventuell arbeiten Sie auch nur gerade am Fragebogen...

Der Countdown startet deshalb nicht, weil die Funktion updateCountdown() nirgend aufgerufen wird. In dem Code aus der Anleitung wird das z.B. alle 250ms aufgerufen:

// Initialisierung
var timerInterval = window.setInterval(updateCountdown, 250);
updateCountdown();
by s175831 (110 points)
Jetzt hat es geklappt! Herzlichen Dank für Ihre Hilfe!

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

...