0 votes
in SoSci Survey (dt.) by s251017 (160 points)
edited by SoSci Survey

Hallo,

Ich möchte meine Serienmails für den zweiten Erhebungszeitpunkt festlegen.

Ich habe dafür wie in der Anleitung (https://www.soscisurvey.de/help/doku.php/de:survey:opt-in-live) drei Fragebögen erstellt. Im ersten Fragebogen (MZP1) befinden sich die inhaltlichen Abfragen mit der Opt-In Frage für die Mailadresse am Ende. Im zweiten Fragebogen (A2) wird dann die E-Mailadresse bestätigt und der php-Code mit mailschedule für den dritten Fragebogen (MZP2) soll erfolgen.
Es ist nun aber so, dass die Versuchspersonen zu individuellen Terminen die Einladung zu MZP2 erhalten sollen. Es geht darum, dass sie bei MZP1 angeben, wann die Woche ihres errechneten Geburtstermins ist und dann zwei Wochen nach dieser Woche erinnert werden sollen.

Dafür würde ich eigentlich folgenden php-Code verwenden:

$datum = strtotime(value('DE10_01'));

mailSchedule(false, 1, strtotime('+2 weeks 08:00:00', $datum));
mailSchedule(false, 1, strtotime('+3 weeks 08:00:00', $datum));
mailSchedule(false, 1, strtotime('+4 weeks 08:00:00', $datum));
mailSchedule(false, 1, strtotime('+5 weeks 08:00:00', $datum));
mailSchedule(false, 2, strtotime('+6 weeks 08:00:00', $datum));

Das Problem ist jetzt aber, dass das Datum ja in MZP1 angegeben wird und nicht in A2, wo dann der Code steht. Mit was für einem zusätzlichen Code kann ich das lösen?

Ich hatte in folgender Anleitung nachgeschaut (https://www.soscisurvey.de/help/doku.php/de:create:databank#daten_zwischen_interviews_austauschen), steige durch den Code aber irgendwie nicht ganz durch...

Vielen Dank und LG

1 Answer

0 votes
by SoSci Survey (327k points)

Es geht darum, dass sie bei MZP1 angeben, wann die Woche ihres errechneten Geburtstermins ist und dann zwei Wochen nach dieser Woche erinnert werden sollen.

Einfacher wäre es, wenn Sie diese Information in A2 abfragen. Deutlich einfacher ;)

Sie können die Information aber auch zwischen MZP1 und A2 übertragen, das funktioniert anhand der Personenkennung, die Sie aus der Opt-In-Frage bekommen, die Sie dann in A2 in caseSerial() haben und mit folgender Anleitung: Daten zwischen Interviews austauschen

by s251017 (160 points)
Genau, die Anleitung habe ich auch schon gesehen, aber ich steige wie gesagt irgendwie nicht so durch den Beispielcode da durch..
by SoSci Survey (327k points)
Dann beschreiben Sie bitte, bis wohin das Vorgehen klar ist, und ab wo Sie es nicht mehr nachvollziehen können. Es bringt vermutlich wenig, wenn ich die Anleitung hier noch nochmal 1:1 wiedergebe...
by s251017 (160 points)
Also erst einmal schreibe ich im ersten Fragebogen folgenden Code:

$datum = getItems('DE10_01', 'is', 19); //19 ist hierbei die Seite im Fragebogen auf der die Geburtstermin Frage steht
$key = 'MA-'.value('EM_03');  // EM03 ist hierbei die Kennung der Email abfrage und MA steht für Mailadresse
dbSet($key, $datum);

Und im zweiten dann, vor dem mailschedule Code:
$key = 'MA-'.value();
$datum = dbGet($key);
question('NU03', $sender); // Hier scheitert es dann für mich. In der Anleitung ist NU03 dann ja die Frage in der die Fernsehsender drin sind, allerdings habe ich dann ja keine Frage mehr sondern nur einen php-Code. Außerdem steht dann noch dass wenn bei dbGet nur ein Wert abgespeichert ist, man mit eckigen Klammern darauf zugreifen muss, ich verstehe nun aber nicht wo man die eckige Klammer einsetzen muss
by SoSci Survey (327k points)
> $datum = getItems('DE10_01', 'is', 19); //19 ist hierbei die Seite im Fragebogen auf der die Geburtstermin Frage steht

Das scheint mir nicht sinnvoll. Warum sollten sie aus der Frage DE10 jene Items heraussuchen wollen, die den Antwortcode 19 haben? Was ist DE10 denn für ein Fragetyp?

> $key = 'MA-'.value('EM_03');

Sie meinen EM03 statt EM_03?

> $key = 'MA-'.value();

Hier meinen Sie vermutlich

$key = 'MA-'.caseSerial();

denn value() ohne Angabe einer Variable liefert keinen Wert. Möglich wäre auch

$key = 'MA-'.value('SERIAL');
by s251017 (160 points)
DE10_01 ist ein offene Texteingabe mit Auswahl aus einem Kalender (ich hatte es in der Anleitung so verstanden, dass man durch die 19 die Seite angibt, auf der das Item steht, es gibt hier aber dann natürlich sehr verschiedene Antwortcodes

Das Item heißt EM_03 also meine ich das, sowohl im Code als auch in der BEschreibung dahinter

Und genau in der ANleitung steht folgender Hinweis: Falls die E-Mail-Adresse im ersten Fragebogen erst erhoben wird (Mehrwellige Befragungen bei Selbstrekrutierung), verwenden Sie in diesem Fragebogen statt caseSerial() bitte value() mit der Kennung der Opt-In-Frage.

Dementsprechend habe ich value genutzt und nicht caseserial
by SoSci Survey (327k points)
> DE10_01 ist ein offene Texteingabe mit Auswahl aus einem Kalender

In dem Fall bekommen Sie mit value('DE10_01') das Datum, welche Sie mit strtotime() optional noch in einen Unix-Zeitstempel umwandeln können.

> Das Item heißt EM_03

Welchen Fragetyp hat die zugehörige Frage, und was sagt die "Variablen-Übersicht" zu den Variablennamen?

> Falls die E-Mail-Adresse im ersten Fragebogen erst erhoben wird (Mehrwellige Befragungen bei Selbstrekrutierung), verwenden Sie in diesem Fragebogen statt caseSerial() bitte value() mit der Kennung der Opt-In-Frage.

Ja, stimmt. Das caseSerial() funktioniert erst ab dem zweiten Fragebogen. Das value() braucht dann aber als Parameter noch die Kennung der Opt-In-Frage. Welche Kennung hat diese denn bei Ihnen?
by s251017 (160 points)
> In dem Fall bekommen Sie mit value('DE10_01') das Datum, welche Sie mit strtotime() optional noch in einen Unix-Zeitstempel umwandeln können.

Das heißt ich muss doch nicht getItem nutzen und kann einfach mit value darauf zugreifen?

> Welchen Fragetyp hat die zugehörige Frage, und was sagt die "Variablen-Übersicht" zu den Variablennamen?

Die Frage ist die Opt-In Frage, um die Mail aufzunehmen. Und die Variablen-Übersicht sagt doch EM03.

> Ja, stimmt. Das caseSerial() funktioniert erst ab dem zweiten Fragebogen. Das value() braucht dann aber als Parameter noch die Kennung der Opt-In-Frage. Welche Kennung hat diese denn bei Ihnen?

Genau, die Kennung der Opt-In Frage ist dann EM03
by SoSci Survey (327k points)
> Das heißt ich muss doch nicht getItem nutzen und kann einfach mit value darauf zugreifen?

Wenn Sie das Datum per Eingabefeld abfragen, dann ja. Überhaupt ist getItems() für Situationen gedacht, in denen Sie eine Liste ausgewählter Items ermitteln möchten.

> Genau, die Kennung der Opt-In Frage ist dann EM03

Kommen Sie damit weiter?
by s251017 (160 points)
Ich denke es sollte jetzt irgendwie funktionieren. Vielen Dank!

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

...