0 votes
in SoSci Survey (dt.) by s144040 (155 points)
edited by SoSci Survey

Guten Tag
Ich habe zwei Fragen.

Ich mache eine mehrwellige Befragung und verwende Aufmerksamkeitschecks. Im Fall ein Item falsch beantwortet wird, wird die Person angewiesen den Fragebogen in 12 Stunden nochmals auszufüllen. Dazu wird ihr ein neuer Link zugesendet.
Mein Code lautet momentan folgendermassen:

Alle Personen, die es falsch beantworten sollen in die Subgruppe "second chance" unterteilt werden und sollten in 12 Stunden ein Mail mit dem Link für die gleiche Befragung bekommen:

$data = panelData();

if ($data) {
  if ('subgroup' == '-'){
  panelUpdate('subgroup', 'second chance');
  mailSchedule(false, 2, strtotime('+ 12 hours'));
  
}
}

Leider habe ich gemerkt, dass kein Mail versendet wird.
Warum ist das so? Habe ich etwas am Code falsch geschrieben? Als Mail habe ich ein ganz neues Mail, nicht eine Erinnerungsmail. Liegt es vielleicht daran?


Die andere Frage bezieht sich darauf, dass die Personen welche "rausfallen" noch immer die vorherige Mail mit der Einladung anklicken können und so wieder den Fragebogen ausfüllen können. Wie kann ich machen, dass der Link ungültig ist, sobald sie ein Aufmerksamkeitscheck falsch beantwortet haben und auf einen neuen Link warten.

Ich hoffe, Sie können mir weiter helfen.

1 Answer

0 votes
by SoSci Survey (302k points)

Leider habe ich gemerkt, dass kein Mail versendet wird.

Sie überprüfen aktuell, ob der String "subgroup" das gleiche ist wie der String "-". Das ist er nicht. Deshalb kann diese Bedingung nie zutreffen:

if ('subgroup' == '-')

Versuchen Sie es bitte wie folgt:

if ($data['subgroup'] == '-')

Stellen Sie außerdem sicher, dass wirklich ein Bindestrich als Teilgruppe eingetragen ist. Ich würde übrigens davon abraten, die Teilgruppe als "Zwischenspeicher" für den Status zu verwenden. Spätestens aber Welle 3 sind da Probleme vorprogrammiert.

Es geht aber einfacher: SoSci Survey verschickt jede Serienmail nur genau einmal pro Adresseintrag. Das heißt, dass der Code beim zweiten Mal einfach keine E-Mail mehr verschicken wird. Sie können das innere IF und das panelUpdate() also vermutlich einfach weglassen.

Die andere Frage bezieht sich darauf, dass die Personen welche "rausfallen" noch immer die vorherige Mail mit der Einladung anklicken können

Den Link werden Sie nicht deaktivieren können. Sie könnten das weitere Ausfüllen schon verhindern, z.B. indem Sie eine Art Sperrvermerkt mittels panelUpdate() machen. Den müssten Sie dann aber im Fragebogen auf jeder einzelnen Seite prüfen und die Leute ggf. abweisen.

Selbst wenn Sie eine entsprechende Funktion in den PHP-Funktionen definieren, müssten Sie zumindest diese Funktion auf jeder Seite oben einfügen.

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

...