0 votes
in SoSci Survey (dt.) by s068944 (400 points)
edited by s068944

Guten Morgen,
ich führe eine Tagebuchstudie durch mit 6 Befragungen pro Tag (T1-T6; wobei T2-T6 per mailSent verschickt werden) und möchte, dass wenn jeweils der Link für die nächste Befragung verschickt wird, ab diesem Moment der jeweilige Fragebogen zuvor nicht mehr bearbeitet werden kann. Das habe ich zum Beispiel so gemacht (Gültigkeit des Fragebogens auf 15 Minuten nach Versand des Links beschränken):

$info = panelData();
if ($info) {
  $sent = $info['mailsent'];
  $limit = strtotime('+ 900 seconds', $sent);
  if (time() > $limit) {
    text('too late');
    buttonHide();
    pageStop();
  }
}

Diese zeitliche Beschränkung funktioniert allerdings aktuell nur, wenn der Fragebogen gar niemals geöffnet wurde. Wenn mit der Bearbeitung des Fragebogens begonnen wurde, kann ich den Fragebogenlink quasi open end öffnen. Was kann ich tun, dass die Gültigkeitsbeschränkung auch dann aktiv wird, wenn ein Teilnehmer den Link (teilweise) bearbeitet hat?

Für Ihre Hilfe wäre ich sehr dankbar!

1 Answer

0 votes
by SoSci Survey (328k points)

Wenn mit der Bearbeitung des Fragebogens begonnen wurde, kann ich den Fragebogenlink quasi open end öffnen.

Das liegt daran, dass ein erneuter Aufruf des Fragebogen-Links die Befragung an der Stelle fortsetzt, wo unterbrochen wurde. Der PHP-Code wird dann gar nicht mehr aufgerufen, weil der Teilnehmer auf einer späteren Seite fortsetzt.

Eine Möglichkeit bestünde darin, den PHP-Code auf jeder Seite aufzurufen.

Für Ihren Fall aber einfacher: Wählen Sie unter Fragebogen zusammenstellen -> Einstellungen -> Interview fortsetzen die Option "Bei jedem Aufruf ab der ersten Seite beginnen". Damit deaktivieren Sie die Funktion zum Fortsetzen des Interviews.

by s068944 (400 points)
Vielen Dank für die schnelle Antwort. Für mich wäre diese Lösung nicht so günstig, weil das die Teilnehmer verwirren könnte (sie werden in der Befragung angeleitet, eine Speichelprobe abzugeben und das sollen sie nur einmal pro Befragung tun).
Ich überlege gerade, ob es nicht eine Möglichkeit wäre, den PHP-Code auf jeder Fragebogenseite zu platzieren?
by SoSci Survey (328k points)
edited by SoSci Survey
Nun, das "ab der ersten Seite beginnen" würde in Ihrem Fall bedeuten, dass sie zur ersten Seite mit dem PHP-Code kommen und nach Ablauf der Zeit nur noch das "too late" sehen. Das scheint mir schon die günstigste Lösung zu sein?!

Wenn Sie es auf jede Seite packen möchten, dann schreiben Sie den PHP-Code im Karteireiter "PHP-Funktionen" als Funktion und fügen Sie einfach nur noch diese Funktion (oben) auf jeder Seite ein.

function timeCheck() {
  $info = panelData();
  // u.s.w.
}

... und dann auf den Seiten nur noch:

timeCheck();
by s068944 (400 points)
Super danke, das probiere ich jetzt mal. Allerdings ist noch ein Fehler aufgetaucht (siehe Bild oben).
by SoSci Survey (328k points)
Pardon, ich hatte die Klammern an die falsche Stelle geschrieben, es muss heißen:

function timeCheck()

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

...