0 votes
in SoSci Survey (dt.) by s093207 (280 points)
closed by SoSci Survey

Hey!

Ich arbeite an folgendem Forschungsprojekt und bekomme die Implementierung der Unterbrecherseite nicht hin.
(Fortsetzung der Frage Zufallsgenerator + Opt-In)

Folgendes habe ich bisher gemacht. Habe mit neuen Seiten gearbeitet, sodass der Code erst mal verarbeitet werden kann.

Habe mich an das Wiki gehalten, aber ich glaube ich habe viel zu viele Codes, weshalb gar nichts klappt :(

Zur Orientierung:
Alle füllen den Fragebogen aus, S308 Zufallsgenerator randomisiert in S009 (Exp.) und S010 (Kontrl.)
S009 erhält Serienmail ID5 mit Link zu Intervention
S010 erhält Serienmail ID 2 ohne Link zur Intervention

22 Tage später erhält S009 ID3 mit Verlinkung auf den Fragebogen nach Unterbrecherseite. S010 erhält ID4 mit Verlinkung auf Fragebogen und einer letzten Seite in der sie auch den Link zur Intervention nutzen können.

Ich erhalte 6 Fehler beim Testen. Gern kann ich sie posten, vielleicht hilft es aber schon, wenn Sie meine Codes überprüfen.

Vielen Dank für den Support

closed with the note: Problem gelöst, s. Kommentare
by SoSci Survey (327k points)
> Ich erhalte 6 Fehler beim Testen. Gern kann ich sie posten, vielleicht hilft es aber schon, wenn Sie meine Codes überprüfen.

Unbedingt, dann reden wir weiter :)

Problem im Moment nach meiner Meinung: Sie haben auf Seite 11 keinen IF-Filter, der entscheidet, wann welches mailResume() zum Einsatz kommt. Der Code von Seite 10 muss mit dem Code von Seite 11 kombiniert werden.
by s093207 (280 points)
Folgender Fehler erhalte ich auf Seite 12:

Fehler im Fragebogen (Seite 12)
Dieses Interview wurde nicht in Verbindung mit einer Serienmail begonnen, daher kann mailResume() den passenden Adressaten nicht ermitteln.
Fehler im Fragebogen (Seite 12)
Dieses Interview wurde nicht in Verbindung mit einer Serienmail begonnen, daher kann mailResume() den passenden Adressaten nicht ermitteln.


Folgender Fehler erhalte ich auf Seite 13 (Unterbrecherseite):

Fehler im Fragebogen (Seite 13)

Im Befragungsprojekt existiert kein Text mit der Kennung Sie können die Seite jetzt schließen
Fehler im Fragebogen (Seite 13)

Im Befragungsprojekt existiert kein Text mit der Kennung ende1
Fehler im Fragebogen (Seite 13)

Dieses Interview wurde nicht in Verbindung mit einer Serienmail begonnen, daher kann mailResume() den passenden Adressaten nicht ermitteln.

Fehler im Fragebogen (Seite 13)
Eine Serienmail mit der Kennung 1, wie in der Funktion mailResume() angegeben, wurde nicht gefunden. Bitte erstellen Sie eine neue Serienmail und geben Sie deren numerische Kennung an.

Fehler im Fragebogen (Seite 13)
Für die Funktion mailResume() wurden nicht ausreichend Argumente angegeben, 3 Argumente sind zwingend erforderlich. Weitere Details finden Sie in der Anleitung zur Funktion.

Fehler im Fragebogen (Seite 13)
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Undefined variable $personID
Zeile: 11

PHP-Code

008   registerVariable('timepart1');
009
010 mailResume(false, 1, 7 * 24 * 3600);
011 mailResume($personID, 3, $zeitpunkt);
012  
013 }
014 return 'ok';
Fehler im Fragebogen: Undefined variable $zeitpunkt
Zeile: 11

PHP-Code

008   registerVariable('timepart1');
009
010 mailResume(false, 1, 7 * 24 * 3600);
011 mailResume($personID, 3, $zeitpunkt);
012  
013 }
014 return 'ok';
by SoSci Survey (327k points)
> Dieses Interview wurde nicht in Verbindung mit einer Serienmail begonnen, daher kann mailResume() den passenden Adressaten nicht ermitteln.

Das steht in direktem Zusammenhang hiermit:

> Fehler im Fragebogen: Undefined variable $personID

Also ... wem möchten Sie die Mail schicken? An die E-Mail-Adresse, zu welcher Sie ein Opt-In gemacht haben? Dann müssen Sie erstmal genau wissen, wie die Opt-In-Frage heißt. Und deren Wert müssen Sie mittels value() auslesen - und in $personID ablegen.
by s093207 (280 points)
Aber mache ich das nicht durch den folgenden Code?

if (value('B102') == 1) {
  $personID = value('B101');
} else {
  $personID = value('B103');
}

=> B102 randomisiert die Person und ordnet sie je nachdem Opt-In Mail B101 oder B103 zu.

Auf der nächsten Seite code ich dann dass Personen der Opt-In Option B101 nach 22 Tagen die  Mail ID3 bekommen. Die Andere Opt-In Gruppe B103 bekommt die Mail ID 4.

$personID = value('B101');
$zeitpunkt = strtotime('+22 days');

// Serienmail 3 nach an B101 nach 22 Tagen versenden

mailResume($personID, 3, $zeitpunkt);

$personID = value('B103');
$zeitpunkt = strtotime('+22 days');  

// Serienmail 4 an B103 nach 22 Tagen versenden

mailResume($personID, 4, $zeitpunkt);
by SoSci Survey (327k points)
> Aber mache ich das nicht durch den folgenden Code?

Damit fragen Sie den Personencode aus der passenden Opt-In-Frage ab. Aber das klappt nur, wenn Sie auf der vorigen Seite auch die passende Opt-In-Frage angezeigt haben. Also gleicher Filter nochmal mit question() statt value().

Und dann nochmal meine Frage von früher: Verwenden Sie ein Single-Opt-In oder ein Double-Opt-In?
by s093207 (280 points)
Ich verwende eine Single Opt-In.

Dazu habe ich die
Funktionalit: Direkt speichern (keine Bestätigungsmail)
Datenschutz: Pseudonym
by s093207 (280 points)
Okay. Auf Seite 11 befindet sich nun zusätzlich unter der Rubrik des Zufallsgenerators Randomisierung der eingefügte PHP Code:

if (question('B102') == 1) {
  $personID = value('B101');
} else {
  $personID = value('B103');
}
by SoSci Survey (327k points)
Der Ablauf ist folgender: Auf Seite 10 (zum Beispiel) wird die Opt-In-Frage angezeigt - eine von zwei passenden via IF-Filter. Und auf Seite 11 wird dann der o.g. Code verwendet, um die von der Frage erstellte Personenkennung zu bekommen. Denn diese gibt es erst, nachdem die Befragte eine E-Mail-Adresse eingegeben und mit "Weiter" übermittelt hat. Darunter kommt dann der Code mit mailSchedule().
by s093207 (280 points)
Hi. Okay folgendes habe ich umgesetzt:

Seite 10:
Fragerubrik B102 Randomisierung (wie im Bild oben)

Seite 11:
if (question('B102') == 1) {
  $personID = value('B101');
} else {
  $personID = value('B103');
}

Seite 12:
if (value('B102') == 1) {
  $personID = value('B101');
} else {
  $personID = value('B103');
}


=> direkt darunter muss nun mittels neuer PHP Seite und der Funktion mailSchedule() der Versand der ersten Serienmail eingefügt werden?

*Lautet der Code dann?

mailSchedule(false, $personID, B101, 5);
mailSchedule(false, $personID, B103, 2);


*Dazu reicht die Single-Option-In?


Seite 12:
$personID = value('B101');
$zeitpunkt = strtotime('+22 days');

// Serienmail 3 an B101 nach 22 Tagen versenden


mailResume($personID, 3, $zeitpunkt);

$personID = value('B103');
$zeitpunkt = strtotime('+22 days');  

// Serienmail 4 an B103 nach 22 Tagen versenden

mailResume($personID, 4, $zeitpunkt);
by SoSci Survey (327k points)
Auf Seite 10 oder 11 (wie Sie möchten) fragen Sie bitte nicht die Variable mittels value() ab, sondern zeigen erstmal die Opt-In-Frage:

Seite 11:
if (question('B102') == 1) {
  question('B101');
} else {
  question('B103');
}

Seite 12 passt und bleibt. Bei mailSchedule() muss das "false" vorne aber raus und das B** auch. Und nachdem sie nur eine der beiden Serienmails verschicken möchten, brauchen Sie nochmal ein IF.

if (value('B102') == 1) {
  mailSchedule($personID, 5);
} else {
  mailSchedule($personID, 2);
}
by s093207 (280 points)
Danke für die Hilfe! Jetzt wollte ich schon in die Luft springen und mich freuen, gab zum Test eine Mailadresse ein, doch schon wieder ein Fehler:

Fehler im Fragebogen (Seite 10)
Dieses Interview wurde nicht in Verbindung mit einer Serienmail begonnen, daher kann mailSchedule() den passenden Adressaten nicht ermitteln.

Fehler im Fragebogen (Seite 10)
Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: Undefined variable $personID
Zeile: 6

PHP-Code

003 if (value('B102') == 1) {
004   mailSchedule($personID, 5);
005 } else {
006   mailSchedule($personID, 2);
007 }
008 return 'ok';
by SoSci Survey (327k points)
Was sagt denn die Debug-Information? Posten Sie doch mal selbige für die Seite mit dem Fehler: https://www.soscisurvey.de/help/doku.php/de:create:debugging

> Undefined variable $personID

Diesen Code brauchen Sie weiterhin azuf der Seite mit mailSchedule().

if (value('B102') == 1) {
  $personID = value('B101');
} else {
  $personID = value('B103');
}

Aber Sie können die beiden IF-Filter wie folgt kombinieren:

if (value('B102') == 1) {
  $personID = value('B101');
  mailSchedule($personID, 5);
} else {
  $personID = value('B103');
  mailSchedule($personID, 2);
}
by s093207 (280 points)
edited by s093207
Okay, habe die beiden if-Filter kombiniert.

DEBUG Info Seite 10. Hier befindet sich nun der If-Filter question drin aus Ihrem Feedback:

[Information]    Interview Nummer 222 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt Teilnahme_Experiment wird verwendet
[Information]    Die Verweildauer auf Seite 11 war 13 Sekunden
[Verarbeitung]    Lese Antworten von Seite 11
[Information]    Fragen bisher zu 0% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 10 in Fragebogen base
[Inhalt]    Erstelle Frage B102
[Information]    Der Zufallsgenerator B102 wurde bereits zu einem früheren Zeitpunkt im Interview verwendet, die gezogenen Codes bleiben unverändert: 2
[Inhalt]    Erstelle Frage B103

DEBUG Info Seite 11. Hier steht nun der If-Filter und mailSchedule kombiniert:

[Information]    Interview Nummer 223 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt Teilnahme_Experiment wird verwendet
[Information]    Die Verweildauer auf Seite 10 war 2 Sekunden
[Verarbeitung]    Lese Antworten von Seite 10
[Information]    Ungültige Antwort für B103
[Verarbeitung]    Erstelle Seite 11 in Fragebogen base
[Information]    value("B102") = 2
[Information]    value("B103") = ""
by s093207 (280 points)
Ich habe wie in der Anleitung mal debug('B102') eingefügt.  So kann man laut Anleitung inhaltliche Fehler erkennen. Füge ich dies ein, erhalte ich  die die folgende Warnung:

Warnung (Seite 11)
Die Variable B102 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln.

Den zeigt es ja eh an:

Fehler im Fragebogen (Seite 11)
Dieses Interview wurde nicht in Verbindung mit einer Serienmail begonnen, daher kann mailSchedule() den passenden Adressaten nicht ermitteln.
by SoSci Survey (327k points)
> Die Variable B102 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt.

Also laut Debug-Information liefert Ihr Zufallsgenerator B102 auf Seite 11 den Wert 2. Sicher, dass diese Fehlermeldung auf dieser Seite auftritt?

> Dieses Interview wurde nicht in Verbindung mit einer Serienmail begonnen, daher kann mailSchedule() den passenden Adressaten nicht ermitteln.

Dafür geben Sie ja das $personID auf der Seite 2 in mailSchedule() an. Prüfen Sie also auf Seite 12 als nächstes, ob $personID funktioniert ...

debug($personID);

Und dann prüfen Sie bitte, ob Sie eine gültige E-Mail-Adresse im Opt-In eingetragen haben. SoSci Survey meint nämlich, dass nicht:

> [Information]    Ungültige Antwort für B103

Dann kann SoSci Survey natürlich keine Mails versenden. Tipp zum Testen: Wegwerfmailadressen.
by s093207 (280 points)
Hi. Danke für die ausführliche Hilfe.

Mit externer Unterstützung konnte ich es lösen. Indem unter die if-Variablen und mailSchedule zusätzlich registerVariable($personID); hinzugefügt wurde, hat es geklappt.

Ich arbeite nämlich auf der nächsten Seite auch mit einer Unterbrecherseite und da gab es wohl Unstimmigkeiten zwischen den Seiten und den Zuordnungen der PersonID
by SoSci Survey (327k points)
Alternativ können Sie auch die Ermittlung der $personID einfach überall wiederholen, wo Sie es brauchen:

if (value('B102') == 1) {
  $personID = value('B101');
} else {
  $personID = value('B103');
}

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

...