0 votes
in SoSci Survey (dt.) by s109880 (200 points)

Hallo liebes SoSci Survey Team,
meine Tagebuchstudie läuft wie folgt: die Teilnehmer kommen über einen Link zu einem Fragebogen in dem ihre Mail abgefragt wird und diese dann in einer Variablen gespeichert wird:

put('A105_03', value('A101'));

Dann wird noch eine Mail zum allgemeinen Fragebogen (den alle Gruppen bekommen) raus geschickt (ID 1):

if (value('A102') == 1) {
\die Zuordnung der Versuchsgruppen
mailSchedule(value('A101'), 1);

Bis hier funktioniert alles. Dann im allgemeinen kommt dann der folgende Befehl:

if (value('A105_02') == 1) {
$id = value('A105_03');
for ($i=1; $i<=3; $i++) {

$mail = $i + 1;
mailSchedule($id, $mail, strtotime('+'.$i.' day'));

}
//+1 durch ID ersätzen
} elseif (value('A105_02') == 2) {
$id = value('A105_03');
for ($i=11; $i<=13; $i++) {

$mail = $i + 1;
mailSchedule($id, $mail, strtotime('+'.$i.' day'));

}
} elseif (value('A105_02') == 3) {
$id = value('A105_03');
for ($i=21; $i<=23; $i++) {

$mail = $i + 1;
mailSchedule($id, $mail, strtotime('+'.$i.' day'));

}
}

und ab hier werden keine Mails gesendet.....
hat jemand eine Idee?

VD Luten

PS:Wie sind gerade in der Pretest Phase, daher die merkwürdigen Zahlen bei den ID´s

1 Answer

0 votes
by SoSci Survey (305k points)

Das erste put() können Sie m.E. streichen, Sie haben ja bereits die Variable A101.

In Ihrer IF-FOR-Kombination könnten Sie dementsprechend schreiben:

$id = value('A101');

ab hier werden keine Mails gesendet.....

Was zeigt denn die Debug-Information für diese Seite? Welchen Wert hat speziell A105_02? Wenn es kein Wert zwischen 1 und 3 ist, dann führt der IF-Filter nichts aus.

by s109880 (200 points)
Also ich brauche die Variable, damit ich ja im 2 Fragebogen, in dem die Serienmails erst getriggert werden, immer noch weiß, welcher Versuchsgruppe sie angehören und welche Mail sie bekommen, oder nicht?


Und in den Debug Infos zeigt er mir dann die Zahl die gezogen wurde (1-3). Ich glaube das Problem ist, dass die Daten (Versuchspersonengruppe+Mail) nicht mehr im 2 Fragebogen verfügbar sind, wie könnte man das lösen?
by SoSci Survey (305k points)
> Also ich brauche die Variable, damit ich ja im 2 Fragebogen, in dem die Serienmails erst getriggert werden, immer noch weiß, welcher Versuchsgruppe sie angehören und welche Mail sie bekommen, oder nicht?

Wie kommen die Nutzer denn zu Fragebogen 2? Wenn sie diesen per personalisiertem Link aufrufen, haben Sie die Kennung schon als caseSerial() zur Hand - eine zusätzliche Variable hingegen bringt nichts. Und die Versuchsgruppe werden Sie entweder über panelData() ermitteln, wenn Sie mit unterschiedlichen Teilgruppen arbeiten (dafür das wäre put() dann wieder sinnvoll!). Oder Sie müssten über die "Datenbank für Inhalte" gehen.

> Und in den Debug Infos zeigt er mir dann die Zahl die gezogen wurde (1-3). Ich glaube das Problem ist, dass die Daten (Versuchspersonengruppe+Mail) nicht mehr im 2 Fragebogen verfügbar sind.

Ich habe Ihre Frage so interpretiert, dass die Opt-In-Frage und der PHP-Code im selben Fragebogen stehen. Wenn nicht, dann müssen wir an ganz anderer Stelle ansetzen. Zum Beispiel würden Sie anstatt `mailSchedule($id, ...` einfach `mailSchedule(false, ...` schreiben.
by s109880 (200 points)
Also nach dem ersten "Hooking-Fragebogen" bekommen alle Teilnehmer eine Mail zugeschickt in der sie den allgemeinen Fragebogen bekommen. Erst nach diesem geht die Tagebuch-Phase los.
Wie genau kann ich denn dann die Gruppe/Mail im zweiten Fragebogen wieder abrufen, damit ich den ganzen Serienmail Prozess in Gang setzten kann?

(Im ersten Fragebogen werden die Leute sowohl einer Gruppe zugeordnet als auch die Mail erfasst)
by SoSci Survey (305k points)
> Wie genau kann ich denn dann die Gruppe/Mail im zweiten Fragebogen wieder abrufen, damit ich den ganzen Serienmail Prozess in Gang setzten kann?

Das kommt darauf an, was Sie im ersten Fragebogen gemacht haben - u.a. auch, ob Sie die Teilnehmer dort bereits in Teilgruppen unterteilt haben.

Schreiben Sie auf die erste Seite des zweiten Fragebogens einmal folgendes:

html('<p>ID: '.caseSerial.'</p>');
$data = panelData();
html('<p>Subgroup: '.$data['subgroup'].'</p>');

Dann testen Sie einmal: Was wird angezeigt?
by s109880 (200 points)
Ich weiß nicht so recht wie ich die Debug Informationen bei dem zweiten auslesen kann. Wenn ich das ganze im Pretest starte bekomme ich nur eine Mail und der Fragebogen zeigt die Meldung, dass er noch nicht aktiviert ist. Wenn ich das ganze normal starte habe ich ja keine Debug Infos?

Also einmal zur Strukturierung:

1. Fragebogen (durch Link):
 - Gruppenzuweisung

- put('A105_02', $gruppe);

- if (value('A102') == 1) {
  question('A101');
} elseif (value('A102') == 2) {
  question('A104');
} elseif (value('A102') == 3) {
  question('A103');
}

- if (value('A102') == 1) {
mailSchedule(value('A101'), 1);
} elseif (value('A102') == 2) {
mailSchedule(value('A104'), 1);
} elseif (value('A102') == 3) {
mailSchedule(value('A103'), 1);
}

- put('A105_03', value('A101'));
put('A105_03', value('A104'));
put('A105_03', value('A103'));


2. Fragebogen (Allgemeine Umfrage für alle Gruppen + triggern Serienmails):
- if (value('A105_02') == 1) {
  $id = value('A105_03');
  for ($i=1; $i<=3; $i++) {
    $mail = $i + 1;
    mailSchedule($id, $mail, strtotime('+'.$i.' day'));
  }
//+1 durch ID ersätzen
} elseif (value('A105_02') == 2) {
$id = value('A105_03');
  for ($i=11; $i<=13; $i++) {
    $mail = $i + 1;
    mailSchedule($id, $mail, strtotime('+'.$i.' day'));
  }
} elseif (value('A105_02') == 3) {
$id = value('A105_03');
  for ($i=21; $i<=23; $i++) {
    $mail = $i + 1;
    mailSchedule($id, $mail, strtotime('+'.$i.' day'));
  }
}
(auf der letzten Seite)

- put('A105_01', caseSerial());
(um am Ende auszulesen, dass alle Fragebögen auch beantwortet wurden)
by SoSci Survey (305k points)
> Ich weiß nicht so recht wie ich die Debug Informationen bei dem zweiten auslesen kann.

Ich habe es extra mit html() geschrieben, nicht mit debug(). Die Informationen werden also im regulären Interview angezeigt. Aber vielleicht sollten wir die Opt-In-Frage mal so optimieren, dass im Debug-Modus gemachte Einträge auch automatisch das Kreuzchen für den Debug-Modus erhalten. Ja, ich denke, das machen wir noch. Aber für Ihren Test brauchen Sie den Fragebogen erstmal nur online zu setzen.
by s109880 (200 points)
Ich habe jetzt die Umfrage mal ganz normal online gesetzt und über den ersten Fragebogen dann den Zweiten bekommen. Dort hatte ich jetzt ihren HTML Code eingefügt. Leider wird mir der Code einfach als Text angezeigt :/.

> html('
ID: '.caseSerial.'

'); $data = panelData(); html('
Subgroup: '.$data['subgroup'].'

');
by SoSci Survey (305k points)
Bitte fügen Sie die Anweisungen als PHP-Code ein, nicht als HTML-Code.
by s109880 (200 points)
dann bekomme ich folgende Fehlermeldung:

> There is an error in the PHP code:
Questionnaire Error: The term caseSerial has been used in the PHP code. However, it is neither used as a variable nor as a function.

PHP code

001 html('<p>ID: '.caseSerial.'</p>');
002 $data = panelData();
003 html('<p>Subgroup: '.$data['subgroup'].'</p>');
004 return 'ok';
by SoSci Survey (305k points)
Pardon, dort fehlte noch eine Klammer:

html('<p>ID: '.caseSerial().'</p>');
by s109880 (200 points)
Alles klar, danke. Jetzt spuckt er folgendes aus:

> ID: FUMPAXE18R

Subgroup:


Muss ich dann vielleicht noch die Gruppenzuordnung irgendwo speichern?
by SoSci Survey (305k points)
Wann/wo wird die Teilgruppe denn zugewiesen? Und wie viele Teilgruppen haben Sie? Drei? Und wo wird die Teilgruppenzuordnung noch gebraucht außer an dieser Stelle in Fragebogen 2?
by s109880 (200 points)
Also wir arbeiten mir drein (KG, G1, G2). Die Zuordnung findet im ersten Fragebogen statt. Wir brauchen die Daten eigentlich nur um den richtigen "Stapel" Serienmails zu triggern und natürlich in der Auswertung um die Ergebnisse richtig einzuordnen. Deshalb dachte ich, dass man die in der internen Variablen speichern kann und fertig, aber das funktioniert ja anscheinend nicht so wie ich mir das vorgestellt habe ^^
by SoSci Survey (305k points)
> ir brauchen die Daten eigentlich nur um den richtigen "Stapel" Serienmails zu triggern und natürlich in der Auswertung

Dann würde es naheliegen, die Zuordnung erst in Fragebogen 2 vorzunehmen, wo Sie die Teilgruppenzugehörigkeit benötigen.

Wenn Sie die Zuordnung unbedingt in Fragebogen 1 vornehmen möchten, haben Sie (min.) zwei Möglichkeiten: (1) Je nach Teilgruppe eine andere Opt-In-Frage verwenden und dort unterschiedliche Teilgruppen eintragen. (2) Die Gruppenzugehörigkeit mittels dbSet() und der Personenkennung in der "Datenbank für Inhalte" ablegen und dann mit dbGet() im zweiten Fragebogen wieder auslesen.
by s109880 (200 points)
Genau, im ersten Fragebogen gibt es drei verschiedene Opt-ins:

>if (value('A102') == 1) {
mailSchedule(value('A101'), 1);
} elseif (value('A102') == 2) {
mailSchedule(value('A104'), 1);
} elseif (value('A102') == 3) {
mailSchedule(value('A103'), 1);
}


Nur wie kann ich das dann im zweiten nutzen?
Aber ich glaube es wäre wirklich am besten das ganze im zweiten zu machen und dann den ersten Code zu benutzen den ich ja schon hab. Welche Gruppe gezogen wurde kann ich ja egal wie immer in den Daten am Ende nachvollziehen, richtig?
by s109880 (200 points)
Jetzt brauche ich aber immer noch die Mail Adressen für den Code. Wie rufe ich die jetzt ab?:

>if (value('A102') == 1) {
  $id = value('A105_03');
  for ($i=1; $i<=3; $i++) {
    $mail = $i + 1;
    mailSchedule($id, $mail, strtotime('+'.$i.' day'));
  }
} elseif (value('A102') == 2) {
$id = value('A105_03');
  for ($i=11; $i<=13; $i++) {
    $mail = $i + 1;
    mailSchedule($id, $mail, strtotime('+'.$i.' day'));
  }
} elseif (value('A102') == 3) {
$id = value('A105_03');
  for ($i=21; $i<=23; $i++) {
    $mail = $i + 1;
    mailSchedule($id, $mail, strtotime('+'.$i.' day'));
  }
}
by SoSci Survey (305k points)
Stellen Sie in den drei Opt-In-Fragen A101, A104 und A103 bitte dire unterschiedliche Teilgruppen ein. Im zweiten Fragebogen bekommen Sie die Teilgruppe dann über panelData(), welches ein Array liefert.

Ach ja ... wie waren schnell: Wenn Sie auf www.soscisurvey.de die Opt-In-Frage im Debug-Modus ausfüllen, dann sind sie auch nach dem Aufruf des Opt-In-Links im Debug-Modus. Sie können also einmal debug(panelData()) im zweiten Fragebogen ausprobieren.

> Jetzt brauche ich aber immer noch die Mail Adressen für den Code.

Nein, benötigen Sie nicht. Ersetzen Sie $id einfach durch false. SoSci Survey weiß ja hier schon, mit wem es zu tun hat.
by s109880 (200 points)
Aber wenn ich jetzt die Gruppenzuweisung erst im zweiten Fragebogen vornehme, dann brauche ich ja am Angang nur einen opt-in. korrekt? Das macht das ganze ja doch ein bisschen einfacher und ich hab trotzdem alle Daten.
by SoSci Survey (305k points)
Ja. Zumindest wenn Sie die Teilgruppe in Fragebogen 1 nicht benötigen und auch nicht für den manuellen Versand einzelner Einladungen (z.B. unterschiedliche Debriefings für unterschiedliche Experimentalgruppen, manuell versendet nach Studienende).
by s109880 (200 points)
perfekt, dann guck ich mal ob das alles so funktioniert! Vielen dank für ihre Hilfe :)

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

...