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

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!

1 Answer

+1 vote
by SoSci Survey (327k points)

"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 s138424 (140 points)
Ganz vielen lieben Dank für die super schnelle und hilfreiche Rückmeldung (und den Hinweis mit der "Comment"-Funktion ;-)).

Das 1. Problem konnten wir hiermit in der Tat sehr gut lösen (Filterfrage durch PHP-Code auf separater (!) Seite NACH (!) dem Item ersetzt + über "Textbausteine & Beschriftung" Hinweistext "notNow" ergänzt).

Allerdings stehen wir jetzt schon wieder vor einem komplexeren Problem, das ich gerade kaum zu formulieren weiß :-((

Kurz zum Hintergrund:
Unser Projekt besteht aus insgesamt 3 Frabo: 1 allgemeiner, der vorab ausgefüllt werden muss (dort muss dann eine E-Mail-Adresse für den Versand der übrigen beiden angegeben werden, Opt-In-Frage) und 2 zusätzliche, deren Link 1x über eine entsprechende Bestätigungsmail (weil das ja leider muss :-(() und 1x über eine Serienmail versendet wird. Die 1. Mail (Bestätigung) wird automatisch über die Opt-In versendet, die 2. (Serienmail) mittels PHP-Code am Ende des 2. Frabo.

Zu Beginn des 2. und 3. Frabo fragen wir immer, ob die Teilnehmenden bereit für Ihre Teilnahme sind. Dies soll entsprechend mit ja oder nein beantwortet werden. Bei ja wird der Frabo fortgesetzt. Bei nein erscheint oben genannter Hinweis "notNow" und der Link aus den E-Mails kann zu einem gewünschten Zeitpunkt erneut aufgerufen werden.
Bei Frabo 2 (Link über Bestätigungsmail) hat das mit Ihrer Empfehlung prima funktioniert. Bei Frabo 3 jedoch kommt man nicht mehr auf den Frabo, wenn man einmal auf nein geklickt hat. Ruft man den Link erneut auf, erscheint direkt der "notNow"-Hinweis. Hätten Sie hierfür ggf. eine Erklärung? Womit das zusammenhängen oder wie man das Problem lösen könnte? Die Einstellungen sind in unseren Augen alle komplett gleich - bis auf den Bestätigungs-/Serienmail-Hintergrund :-(
by SoSci Survey (327k points)
> Bei Frabo 2 (Link über Bestätigungsmail) hat das mit Ihrer Empfehlung prima funktioniert.

Nur als Warnung: Die Links aus den Bestätigungsmails haben nur eine begrenzte Gültigkeit. Ich glaube, man kann diese per Platzhalter direkt in der Serienmail anzeigen lassen. IIch denke, es waren 7 Tage, bin aber nicht ganz sicher.

> Bei Frabo 3 jedoch kommt man nicht mehr auf den Frabo, wenn man einmal auf nein geklickt hat.

Hmmm ... wenn Sie den ersten Fragebogen im Debug-Modus starten, sollte nach dem Opt-In etc. auch der dritte Fragebogen noch im Debug-Modus starten. Ergänzen Sie Ihren PHP-Code bitte um einige debug()s, um das Problem näher einzugrenzen:

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

Posten Sie dann bitte die komplette Debug-Information (rechts oben), dann sollten wir das aufklären können.
by s138424 (140 points)
Okay, es tut mir wirklich außerordentlich Leid, aber wir bekommen es bedauerlicherweise gefühlt wirklich so gar nicht hin :-(

Danke für den Hinweis mit der Gültigkeit des Bestätigungslinks.
Das Einfügen des "Verfallstages" hat funktioniert.

Allerdings stehen wir immer noch vor dem Problem, dass sich der dritte Frabo bei einem Klick auf nein nicht mehr öffnen lässt.

Ich hatte Ihren neuen Code als notNow-PHP-Code auf eine separate Seite nach der Ja/Nein-Frage zu Beginn des dritten Frabo platziert. Und bei der Variablen "value" lediglich unseren Namen der Ja/Nein-Frage ergänzt.
Muss darüber hinaus noch etwas ausgetauscht werden?

Schaue ich mir das Ganze im Debug-Modus an, sind die meisten Hinweis-Boxen gelb (das soll ja bestenfalls meine ich auch so sein, oder?). Allerdings befindet sich darunter auch eine orangene Warnungs-Box mit dem Inhalt:
"Die Variable X301 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln."

Ähnlicher Hinweis lässt sich auch im "alten" PHP-Code im zweiten Frabo finden - nur dass dieser in seiner Funktion zumindest zu funktionieren scheint.

Es erscheint mir, als wären die "value"-Namen nicht korrekt, dabei sind es die Kennungen der jeweils vorangegangenen Ja/Nein-Fragen.
by SoSci Survey (327k points)
> Die Variable X301 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt.

X301 ist Ihre Ja/Nein-Frage? Wenn nicht, wo steht diese denn in Ihrem PHP-Code?
by s138424 (140 points)
Genau. X101 im zweiten Fragebogen und X301 im dritten Fragebogen. Ich habe quasi Ihr AB02 nur durch diese Kennungen ersetzt.
by SoSci Survey (327k points)
Aber wenn die Meldung angezeigt wird, dass diese Variable noch nicht abgefragt wurde, dann liegt das Proble schon vor dem Filter. Denn die Ja/Nein-Antwort muss dem Server ja schon bekannt sein, bevor der Filter aktiv wird.

Nochmal meine Bitte: Kopieren Sie bitte die komplette Debug-Information aus dem Kasten rechts oben (zum Aufklappen) und posten Sie sie hier.
by s138424 (140 points)
Ich hoffe, Sie meinten diesen Kasten?!

1x für die Ja/Nein-Frage:

[Information]    Interview gestartet (neue Nummer 218)
[Information]    Der Fragebogen 2_Post im Projekt Selbstpraesentation-social-media wird verwendet
[Verarbeitung]    Erstelle Seite 1 in Fragebogen 2_Post
[Inhalt]    Erstelle Frage X301

1x für die notNow-Seite:

[Information]    Interview gestartet (neue Nummer 221)
[Information]    Der Fragebogen 2_Post im Projekt Selbstpraesentation-social-media wird verwendet
[Verarbeitung]    Erstelle Seite 2 in Fragebogen 2_Post
debug()    Inhalt: 'Init Time' = Init Time (string)
[Information]    value("X301") = ???
debug()    Inhalt: value('X301') = (string)
debug()    Inhalt: time() = 1592836964 (integer)
debug()    Inhalt: $t0 = 1592836964 (integer)
[Information]    value("X301") = ???
[Information]    Springe zur nächsten Seite Nr. 3
[Verarbeitung]    Erstelle Seite 3 in Fragebogen 2_Post
[Inhalt]    Erstelle Frage X302


Wenn ich bei der Ja/Nein-Frage "nein" anklicke, scheint der orangene Warn-Kasten weg zu sein:

[Information]    Interview Nummer 222 wird fortgesetzt
[Information]    Der Fragebogen 2_Post im Projekt Selbstpraesentation-social-media wird verwendet
[Information]    Die Verweildauer auf Seite 1 war 5 Sekunden
[Verarbeitung]    Lese Antworten von Seite 1
[Information]    Antwort auf X301 = 2
[Information]    Fragen bisher zu 100% vollständig beantwortet
[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() = 1592837051 (integer)
debug()    Inhalt: $t0 = 1592837051 (integer)
[Information]    value("X301") = 2
[Inhalt]    Zeige Text notNow
[Inhalt]    Die Verarbeitung der Seite wurde durch pageStop() beendet

ich hoffe, das reicht Ihnen so?! :-/
by SoSci Survey (327k points)
> [Information]    Interview gestartet (neue Nummer 221)

Das ganze funktioniert nur, wenn Sie erst die Ja/Nein-Frage beantworten und dann auf "Weiter" klicken. Wenn Sie direkt auf der Seite mit dem Filter ein neues starten, kann es nicht funktionieren.

Mit dem "Weiter" klappt es dann auch:

> [Verarbeitung]    Lese Antworten von Seite 1

Nun ist die spannende Frage ja, was passiert, wenn Sie das Interview mit dem personalisierten Link aus der Mail nochmal aufrufen. Dann sollte es eigentlich direkt weitergehen.
by s138424 (140 points)
Wir haben die komplette Befragung bereits mehrfach mit allen nur denkbaren E-Mail-Adressen und Szenarien durchprobiert, also so, wie sie ein "echter" Proband durchleben würde, aber eben gerade dort, sind wir jedes Mal wieder beim dritten Fragebogen hängen geblieben. Dass wenn man die Ja/Nein-Frage einmal mit nein beantwortet, einfach nicht mehr über den Link in den Fragebogen hineinkommt, sondern bei dem notNow-Hinweis steckenbleibt. Also ganz genau so, wie Sie es beschreiben, erst Nein und dann weiter. Das hat bislang aber leider nicht funktioniert :-/
by SoSci Survey (327k points)
Wie gesagt: Sie müssten es bitte mit einem Adresseintrag testen, der für's Debugging aktiviert ist (automatisch, wenn man das Opt-In im Debug-Modus macht - sonst muss man ein Kreuzchen im Adresseintrag setzen). Und dann benötige ich für eine hilfreiche Antwort die Debug-Information, die nach dem nein -> schließen -> neu öffnen angezeigt wird.
by s138424 (140 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
by SoSci Survey (327k points)
Danke, die war's! Und da sehe ich auch meinen Fehler: Es fehlt ein registerVariable():

if (!isset($t0)) {
  $t0 = time();
  registerVariable($t0);
}
by s138424 (140 points)
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');
}
by SoSci Survey (327k points)
So sieht es gut aus :)

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

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

...