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

Ich hoffe, Sie halten mich nicht langsam für bescheuert. Das Thema "Mehrwellige Befragung bei Selbstrekrutierung" habe ich mir schon durchgelesen. Ich habe bei "Fragebogen zusammenstellen" einen neuen Fragebogen erstellt - und zwar blanco. Dort ist lediglich der Code "mailSchedule ();" hinterlegt. Soweit korrekt, oder? Aber wie bekomme ich den jetzt direkt hinter die Opt-In-Mail, sodass es automatisch damit weitergeht bzw. das mailSchedule(); dann aktiviert wird? Ich stehe wahrscheinlich ziemlich auf dem Schlauch gerade, aber ich komm nicht drauf.

Danke!

related to an answer for: PHP Codes mehrwellige Befragung
in SoSci Survey (dt.) by s122051 (190 points)

1 Answer

0 votes

Dort ist lediglich der Code "mailSchedule ();" hinterlegt. Soweit korrekt, oder?

Nicht ganz - Sie müssen noch als ersten Parameter false eintragen und als zweiten die ID der Serienmail. Optional können Sie als dritten Parameter noch den Zeitpunkt für den Versand eintragen. Aber das kennen Sie ja schon.

Aber wie bekomme ich den jetzt direkt hinter die Opt-In-Mail, sodass es automatisch damit weitergeht bzw. das mailSchedule();

Deswegen hatte ich auf das Anleitungskapitel verwiesen. Dort wird das mit der zusätzlichen Serienmail erklärt und dass diese dann in der Opt-In-Frage ausgewählt wird.

by SoSci Survey (81.7k points)
Es scheint zu funktionieren. Toll, Danke! :))

Nur: Es erscheint bei mir dennoch das:

Questionnaire Error (page 24)
This interview has not been started in context of a mailing. Therefore, mailSchedule() cannot identify the appropriate recipient.

Dann erhalte ich aber trotzdem eine E-Mail mit dem Link zum Fragebogen.
Wird mir das angezeigt, weil ich das quasi immer noch in meinem Account teste?
Ich vermute eher, dass Sie im allerersten Fragebogen noch irgendwo ein mailSchedule() stehen haben.
Nein, habe alles durchgeschaut, habe tatsächlich nirgenwo noch ein mailSchedule () stehen. Aber ich mache erst mal weiter und melde mich dann gff. nochmal.

Vielen Dank auf jeden Fall!
Posten Sie bitte ggf. die Debug-Information der entsprechenden Seite. Danke.
Guten Morgen,

leider bekomme ich die Problematik nicht geregelt und es gibt ein weiteres Problem.
Nach der Opt-In-Mail wird mir nach wie vor dieses 2x angezeigt (ist die Frage, wie "schlimm" das ist, weil danach funktioniert es trotzdem):

"Questionnaire Error (page 24)
This interview has not been started in context of a mailing. Therefore, mailSchedule() cannot identify the appropriate recipient."
-->Ich habe alles durchgesehen, ich finde keinen Code

Die Debug-Information ist folgende:
[Information]    Interview number 148 is to be continued
[Information]    Questionnaire BefragungTeil1 from project sfr will be used
[Information]    Retention period on page 23 has been 28 seconds
[Processing]    Reading answers from page 23 (-->Opt-in-Seite)
[Information]    Answer to T217 = 93XRRFFSXP
[Processing]    Create page 24 in questionnaire BefragungTeil1 (-->PHP-Code-Seite)

Wenn ich danach weiter klicke, geht es aber normal weiter und ich bekomme trotzdem eine Mail mit dem Bestätigungslink, die mich direkt zum nächsten Fragebogen weiterleitet. Wobei ich dort (in dem blanco "A2 Fragebogen" eigentlich angegeben habe, dass der nächste Fragebogen erst später geschickt werden soll (mit dem Code: mailSchedule(false, 1, strtotime('+240')); )

Im nächsten Fragebogen (also quasi im ersten offiziellen der zweiten Befragungswelle) habe ich folgende Codes angegeben:

mailSchedule(false, 3, strtotime('+360'));
mailSchedule(false, 4, strtotime('+480'));
mailSchedule(false, 5, strtotime('+620'));
mailSchedule(false, 6, strtotime('+740'));
mailSchedule(false, 7, strtotime('+860'));
mailSchedule(false, 8, strtotime('+980'));
mailSchedule(false, 9, strtotime('+1100'));
mailSchedule(false, 10, strtotime('+1220'));
mailSchedule(false, 11, strtotime('+1340'));
mailSchedule(false, 12, strtotime('+1460'));
mailSchedule(false, 13, strtotime('+1600'));
mailSchedule(false, 14, strtotime('+1720'));
mailSchedule(false, 16, strtotime('+1840'));

Daraufhin wird mir folgendes angezeigt:

-ganz oft kommt dieses:
Warning (page 2) -->PHP-Code-Seite
The third argument in function mailSchedule() must be a number.
The value is invalid.

Dazugehörige Debug-Information:
[Information]    Interview number 149 is to be continued
[Information]    Questionnaire Sexdrive1 from project sfr will be used
[Information]    Retention period on page 1 has been 109 seconds
[Processing]    Reading answers from page 1
[Processing]    Create page 2 in questionnaire Sexdrive1
[Information]    Scheduled mailing 5 (invitation) for steinhok5@nervmich.net (send immeditely).
[Information]    Scheduled mailing 6 (invitation) for steinhok5@nervmich.net (send immeditely).
[Information]    Scheduled mailing 9 (invitation) for steinhok5@nervmich.net (send immeditely).
[Information]    Scheduled mailing 10 (invitation) for steinhok5@nervmich.net (send immeditely).
[Information]    Scheduled mailing 11 (invitation) for steinhok5@nervmich.net (send immeditely).
[Information]    Scheduled mailing 13 (invitation) for steinhok5@nervmich.net (send immeditely).
[Information]    Scheduled mailing 14 (invitation) for steinhok5@nervmich.net (send immeditely).
[Information]    Scheduled mailing 16 (invitation) for steinhok5@nervmich.net (send immeditely).
[Information]    No visible content on this page, continue with page 3
[Processing]    Create page 3 in questionnaire Sexdrive1
[Content]    Create question T206

-->und tatsächlich hatte ich jetzt 9 Mails gleichzeitig im Posteingang. Die aber ja, laut Code, nacheinander geschickt werden sollen. Und komischerweise eben auch nur 9, obwohl es insgesamt 13 E-Mails sein müssten. Und ich verstehe die Fehlermeldungen nicht, weil das ja exakt die selben Codes sind, nur mit unterschiedlicher Sekundenanzeige.
Ich denke, wir haben ncoh ein kleines Verständigungsproblem bzgl. Welle 1. Sie benötigen für die ersten Fragebogen-Teil (der mit Opt-In) zwei (!) Fragebögen. Einen mit der Opt-In-Frage und einen zweiten (z.B. "BefragungTeil1a"), der unmittelbar nach Klick auf den Bestätigungslink aufgerufen wird. Im zweiten Teil stehen dann alle mailSchedule() Zeilen.

Im ersten Fragebogen "BefragungTeil1" darf mailSchedule() überhaupt nicht stehen.

> The third argument in function mailSchedule() must be a number.

Im strtotime() würde etwas stehen wie "+6 minutes". Wenn Sie die Zeit [in Sek.] ohnehin schon ausgerechnet haben, dann lassen Sie das strtotime() bitte weg:

mailSchedule(false, 3, 360);
Ich feiere gerade Sie und mich auch ein bisschen. Es hat funktioniert. 1000 Dank, wirklich!

Um auf Nummer sicher zu gehen:
Kann ich dann im "Befragungsteil1a" alle nötigen PHP-Codes für die weiteren Serienmails eintragen und das genügt? Und es ist nicht nötig oder vielleicht auch kontraproduktiv, zur Sicherheit in jeden Fragebogen noch zusätzlich den PHP-Code für den Folgefragebogen einzufügen?

Und eine Frage bzgl. des Versandzeitpunktes. Ich möchte mit dem zweiten Befragungsteil immer am nächsten Tag um 10:00 Uhr beginnen (die Sekunden waren nur, um die Funktionalität zu testen) und dann weiter mit 16:00 Uhr, 22:00 Uhr, Tag 2 um 10:00 Uhr usw.
Sind dann folgende Codes korrekt?

mailSchedule(false, 2, strtotime('+1 day 10:00'));
mailSchedule(false, 3, strtotime('+1 day 16:00'));
mailSchedule(false, 4, strtotime('+1 day 22:00'));
mailSchedule(false, 5, strtotime('+2 days 10:00'));
usw.
> Kann ich dann im "Befragungsteil1a" alle nötigen PHP-Codes für die weiteren Serienmails eintragen und das genügt?

Ja.

> Sind dann folgende Codes korrekt?

Das kontrollieren Sie am besten mit einen kleinen Test:

debug(date('d.m.Y H:i', strtotime('+1 day 10:00', strtotime('2019-07-31 8:00'))));
debug(date('d.m.Y H:i', strtotime('+1 day 10:00', strtotime('2019-07-31 12:00'))));
debug(date('d.m.Y H:i', strtotime('+1 day 10:00', strtotime('2019-08-01 8:00'))));
debug(date('d.m.Y H:i', strtotime('+1 day 10:00', strtotime('2019-08-01 12:00'))));
Es hat geklappt. Ich danke Ihnen sehr!
...