0 votes
in SoSci Survey (dt.) by s150166 (110 points)
edited by s150166
  • Wir führen eine mehrwellige Befragung in Form einer Tagebuchstudie durch. Wir wollen am Ende unseres Initialfragebogens mittels opt-In-Anfrage die weitere Teilnahme mittels Serienmails ermöglichen.

  • Im Initialfragebogen haben wir zwei Fragen, SD24 und SD25, deren Informationen wir als Zeitpunkte für das v
    Versenden der Serienmails nutzen wollen.

  • Im Fragebogen, der nach Aufrufen des Bestätigungslinks angezeigt wird steht, dass diese Variablen nicht im Projekt existierten und deshalb
    Kein Antwort-Wert erzeugt werden konnte.

  • Die Variablen sind keine internen Variablen aber sie sollen es auch nicht sein, da wir keine Laufzeitvariablen erzeugen wollten sondern diese ganz normal mit den anderen Variablen zusammen zur Messung eines Gesamtkonstruktes nutzen möchten.

Zwischen Initialfragebogen, in dem diese zwei Variablen abgefragt sind und dem nächsten Fragebogen, zu dem man per Bestätigungslink weitergeleitet wird ist dieser PHP-Code. Er befindet sich auf der ersten Seite des zweiten Fragebogens.

Der PHP-Code lautet:

$time = value('SD24')
$zeitpunkt = strtoime('Today'.$time);
mailSchedule(false, 2, strtotime('$zeitpunkt + 1days')
mailSchedule(false, 4, strtotime('$zeitpunkt + 2days')

$time = value('SD25')
$zeitpunkt = strtoime('Today'.$time);
mailSchedule(false, 3, strtotime('$zeitpunkt + 1days')
mailSchedule(false, 5, strtotime('$zeitpunkt + 2days')

1 Answer

0 votes
by SoSci Survey (306k points)

Im Initialfragebogen haben wir zwei Fragen, SD24 und SD25, deren Informationen wir als Zeitpunkte für das versenden der Serienmails nutzen wollen.

Im Fragebogen, der nach Aufrufen des Bestätigungslinks angezeigt wird steht, dass diese Variablen nicht im Projekt existierten und deshalb Kein Antwort-Wert erzeugt werden konnte.

Wenn Sie ein Double-Opt-In verwenden, dann verlässt der Befragte nach Versenden der Opt-In-Mail den Fragebogen und kehr anschließend zu einem neuen Fragebogen zurück. Dies ist ein neuer Fall im Datensatz, welcher keinen Zugriff auf die Daten aus dem ersten Fall hat.

Eine mögliche Lösung besteht darin, dass Sie die Werte von SD24 und SD25 in der Datnebank für Inhalte zwischenspeichern: Daten zwischen Interviews austauschen

Beachten Sie dabei, dass Sie die Personenkennung im ersten Fall nicht via caseSerial() bekommen, sondern aus der Variable der Opt-In-Frage.

by s105225 (130 points)
Danke schon mal für die schnelle Hilfe; der Code sieht jetzt wie folgt aus:

$key = 'SD-'.value('EA01');
$time = dbGet($key);
$time1= $key[0];
question('SD24_01', $time1);

$data = dbGet($key);
if ($data)
  $group = $data[0];

$zeitpunkt = strtotime($time1);  
mailSchedule(false, 2, $zeitpunkt);
mailSchedule(false, 4, $zeitpunkt);

$key1 = 'SD-'.value('EA01');
$time2 = dbGet($key1);
$time2= $key1[0];
question('SD25_01', $time2);

$data1 = dbGet($key1);
if ($data)
  $group = $data1[0];

$zeitpunkt1 = strtotime($time2);  
mailSchedule(false, 3, $zeitpunkt);
mailSchedule(false, 5, $zeitpunkt);

..die Fehlermeldungen werden langsam weniger!

Warnung (Seite 2)
Das Argument S, das in einer Funktion eines PHP-Blocks verwendet wurde, ist nicht bekannt und wird ignoriert.

Diese hier wird allerdings weiterhin angezeigt :(
by SoSci Survey (306k points)
Haben Sie überprüft, ob der Wert von $time1 passt, mittels debug($time1);

Je nachdem, was dort gespeichert ist, macht die folgende Zeile mehr oder weniger Sinne:

question('SD24_01', $time1);

Die Serienmails 3 und 4 werden laut diesem Code gleichzeitig verschickt. Dort tsteht zweimal dasselbe - ich bin nicht sicher, ob das gewünscht ist.

Und dann fehlen da noch gschweifte Klammern, damit SoSci Survey weiß, wie weit das if ($data) gilt. Zumal Sie da evtl. noch nicht ganz sauber zwischen $data und $data1 unterscheiden.

> Das Argument S, das in einer Funktion eines PHP-Blocks verwendet wurde, ist nicht bekannt und wird ignoriert.

Ich glaube, das kommt von dieser Zeile:

$time1= $key[0];

Ziemlich sicher meinten Sie

$time1= $time[0];
by s105225 (130 points)
Mit dem folgenden Code klappt es nun endlich:
$key = 'SD-'.value('EA01');
$time = dbGet($key);
$time1= $time[0];
question('SD24_01', $time1);

$data = dbGet($key);
if ($data)
  $group = $data[0];

$zeitpunkt = strtotime($time1);  

mailSchedule(false, 2, strtotime('+60 seconds', $zeitpunkt));

mailSchedule(false, 4, strtotime('+120 seconds', $zeitpunkt));

$key1 = 'SD-'.value('EA01');
$time2 = dbGet($key1);
$time3 = $time2[0];
question('SD25_01', $time2);

$data1 = dbGet($key1);
if ($data)
  $group = $data1[0];

$zeitpunkt1 = strtotime($time3);  
mailSchedule(false, 3, strtotime('+60 seconds', $zeitpunkt1));

mailSchedule(false, 5, strtotime('+120 seconds', $zeitpunkt1));

debug($time1);

Vielen vielen Dank für den super Support! Uhrzeiten und Ähnliches passen wir dann noch an, Hauptsache der PHP Code führt jetzt dazu, dass die Serienmails zur angegebenen Zeit verschickt werden :)!
Danke!!
by SoSci Survey (306k points)
Ich würde weiterhin vermuten, dass in diesen Zeilen noch etwas nicht stimmt:

$data1 = dbGet($key1);
if ($data)
  $group = $data1[0];

$zeitpunkt1 = strtotime($time3);

Das IF bezieht sich nur auf die eine Zeile und die Vermischung von $data1 und $data ist höchst verdächtig. Prüfen Sie bitte vor dem Versand gründlich, ob die Funktion auch inhaltlich korrekt arbeitet.
by s105225 (130 points)
edited by s105225
Geht jetzt! :)

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

...