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

Lieber SoSci Support,

eine Kommilitonin und ich haben zu Beginn unserer (zweiten) Befragung eine eigentlich ziemlich einfache Ja/Nein-Frage eingebaut (Ob man die Befragung jetzt beantworten oder zu einem späteren Zeitpunkt noch einmal aufrufen und bearbeiten möchte). Bei der Antwort "nein" haben wir aktuell eine entsprechende Filterfrage eingestellt. Allerdings wird mit dem Klicken auf "nein", die komplette Teilnahme an der Erhebung beendet und kann NICHT später noch einmal neu aufgerufen werden. Über ein einfaches "Pfeil zurück" oder schließen der Seite wäre es jedoch möglich. Gibt es hierfür eine schnelle und einfache Lösung, die Sie uns empfehlen könnten?
Irgendeine Filterbedingung, die den Fragebogen einfach nur für diesen Moment schließt, aber nicht komplett beendet.

Vielen Dank und beste Grüße!

in SoSci Survey (dt.) by s138424 (140 points)

1 Answer

+1 vote

"Nur für den Moment" könnte intern bedeuten: Jetzt eine Verabschiedung anzeigen, aber nicht mehr, wenn der Teilnehmer in 10 Minuten wiederkommt. Das würde in PHP-Code so aussehen:

if ((value('AB02') == 2) && (getRoute() == 'next')) {
  text('notNow');
  buttonHide();
  pageStop();
} else {
  goToPage('next');
}

Die Funktion getRoute() erlaubt eine Unterscheidung, ob der Teilnehmer bzw. die Teilnehmerin auf "Weiter" geklickt hat (next) oder ob man den personalisierten Link erneut aufgerufen hat (start). Sollte das nicht wie gewünscht funktionieren, können Sie auch über eine Variable und Zeitmessung gehen:

if (!isset($t0)) {
  $t0 = time();
}
if ((value('AB02') == 2) && ((time() - $t0) < 30)) {
  text('notNow');
  buttonHide();
  pageStop();
} else {
  goToPage('next');
}

In diesem Fall haben Sie ab dem "Nein" eine 30-Sekunden-Sperre.

by SoSci Survey (130k points)
Meinten Sie dieses hier?

[Information]    Interview Nummer 225 wird fortgesetzt
[Information]    Der Fragebogen 2_Post im Projekt Selbstpraesentation-social-media wird verwendet
[Information]    Die Verweildauer auf Seite 2 betrug zusätzliche 92 Sekunden
[Verarbeitung]    Erstelle Seite 2 in Fragebogen 2_Post
debug()    Inhalt: 'Init Time' = Init Time (string)
[Information]    value("X301") = 2
debug()    Inhalt: value('X301') = 2 (string)
debug()    Inhalt: time() = 1592859625 (integer)
debug()    Inhalt: $t0 = 1592859625 (integer)
[Information]    value("X301") = 2
[Inhalt]    Zeige Text notNow
[Inhalt]    Die Verarbeitung der Seite wurde durch pageStop() beendet
Danke, die war's! Und da sehe ich auch meinen Fehler: Es fehlt ein registerVariable():

if (!isset($t0)) {
  $t0 = time();
  registerVariable($t0);
}
Würde ich diesen Code dann einfach separat unter den bisherigen ergänzen oder anstelle von "init time", sodass der Gesamtcode dann wie folgt aussehen würde:

if (!isset($t0)) {
  $t0 = time();
  registerVariable($t0);
}
debug(value('X301'));
debug(time());
debug($t0);
if ((value('X301') == 2) && ((time() - $t0) < 30)) {
  text('notNow');
  buttonHide();
  pageStop();
} else {
  goToPage('next');
}
So sieht es gut aus :)

Damit es in den Tests funktioniert, warten Sie bitte zwischen dem "nein" und dem erneuten Aufruf 30 Sekunden.
Es funktioniert!!!
Ich kann Ihnen gar nicht sagen, wie unendlich dankbar ich Ihnen gerade bin! Danke, danke, danke!!!
...