Ich tüftele mit Ihren Hinweisen weiter. Vielen Dank für die Tipps.
Ich beschreibe einmal detaillierter meinen Fragebogen im Status quo:
Zweck der Studie: Es sollen 4 Gruppen randomisiert eingeteilt werden. Jede Gruppe erhält eine andere Intervention. Diese Intervention soll als Behandlung 7 Tage laufen. Dazu sollen sich die Probanden eine Erinnerungsart aussuchen:
1) Kalender,
2) E-Mail oder
3) Kalender und E-Mail.
Jeder Kalender hat einen jeweils anderen google drive link, bzw. Gruppe 4 ohne, implementiert.
Jede Mail-Seite leitet auf eine Gruppe von Serienmails ein, welche pro Gruppe einen jeweils anderen google drive link beinhaltet, bzw. Gruppe 4 ohne.
Gruppe 1 = bi / binaurale beats
Gruppe 2 = mo / monaurale beats
Gruppe 3 = ste / stereophone Musik
Gruppe 3 = sti / Stille
Mein Fragebogen [2_4RKMI] hat 11 Seiten + end-Seite:
Überblick:
Seite 01 RAND: Randomisierung
Seite 02 Wahl: Auswahl und Texteingabe offen
Seite 03 GoTo: Laufbefehl
Seite 04 – 05 KAL…: Kalenderseite pro Gruppe
Seite 08 – 11 MAIL…: Mailseiten pro Gruppe
Im Detail:
Seite 01 RAND: ist eine Seite, um eine gleichverteilte Randomisierung durchzuführen.
Seite 02 Wahl: lässt zum einen eine Auswahl und zum anderen eine Texteingabe offen zu.
Aufbau Seite:
a) Fragenblock [KA02] Wahl
Die Auswahl K02 ist für eine Erinnerungsform einer Intervention.
01 für Kalender
02 für tägliche E-Mail
03 für Kalender und tägliche E-Mail
b) HTML-Code für Standardmäßige Uhrzeit*
c) Fragenblock [KA03] Uhrzeit
Die Texteingabe offen KA03 ist für die Eingabe einer Wunschuhrzeit der Erinnerung. Voreingefüllt als *HTML ist 21:00 h als Standardwert.
Seite 03 GoTo: soll dann gemäß der Randomisierung die Kalender- und Mailzuweisung regeln.
Auf der Seite ist ausschließlich ein PHP-Code:
$gruppe = value('RA01'); //
$kommu = value('KA02'); // <— statt KA02_01
if ($kommu == 1) {
if ($gruppe == 1) { goToPage('KALbi'); } // binaural
if ($gruppe == 2) { goToPage('KALmo'); } // monaural
if ($gruppe == 3) { goToPage('KALste'); } // stereo
if ($gruppe == 4) { goToPage('KALsti'); } // still
};
if ($kommu == 2) {
if ($gruppe == 1) { goToPage('MAILbi'); } // binaural
if ($gruppe == 2) { goToPage('MAILmo'); } // monaural
if ($gruppe == 3) { goToPage('MAILste'); } // stereo
if ($gruppe == 4) { goToPage('MAILsti'); } // still
};
if ($kommu == 3) { // Erst Kalender zeigen, Mail kommt danach (siehe Ursache 2)
if ($gruppe == 1) { goToPage('KALbi'); } // binaural
if ($gruppe == 2) { goToPage('KALmo'); } // monaural
if ($gruppe == 3) { goToPage('KALste'); } // stereo
if ($gruppe == 4) { goToPage('KALsti'); } // still
};
goToPage('end'); // letzter Fallback
Seite 04 KALbi: hierbei handelt es sich um den Kalender für die Gruppe 1 bi
Aufbau Seite:
a) Fragenblock [KA04] Kalendereintrag Klang bi -> Einfacher Text-Baustein
b) HTML-Code,
um die Wunschuhrzeit aus KA03 abzugreifen,
einen funktionierenden Downloadbutton darzustellen
und im Kalendereintrag den für die Gruppe passenden google drive link mitzuliefern
c) PHP-Code:
$kommu = value('KA02'); // <— statt KA02_01
if ($kommu == 3) {
goToPage('MAILbi'); // erst nach der Kalender-Seite zu Mail
// return;
}
Seite 05 KALmo: hierbei handelt es sich um den Kalender für die Gruppe 2 mo
Aufbau Seite:
a) Fragenblock [KA05] Kalendereintrag Klang bi -> Einfacher Text-Baustein
b) HTML-Code,
um die Wunschuhrzeit aus KA03 abzugreifen,
einen funktionierenden Downloadbutton darzustellen
und im Kalendereintrag den für die Gruppe passenden google drive link mitzuliefern
c) PHP-Code:
$kommu = value('KA02'); // <— statt KA02_01
if ($kommu == 3) {
goToPage('MAILmo'); // erst nach der Kalender-Seite zu Mail
// return;
}
Seite 06 KALste: hierbei handelt es sich um den Kalender für die Gruppe 3 ste
Aufbau Seite:
a) Fragenblock [KA06] Kalendereintrag Klang bi -> Einfacher Text-Baustein
b) HTML-Code,
um die Wunschuhrzeit aus KA03 abzugreifen,
einen funktionierenden Downloadbutton darzustellen
und im Kalendereintrag den für die Gruppe passenden google drive link mitzuliefern
c) PHP-Code:
$kommu = value('KA02'); // <— statt KA02_01
if ($kommu == 3) {
goToPage('MAILste'); // erst nach der Kalender-Seite zu Mail
// return;
}
Seite 07 KALsti: hierbei handelt es sich um den Kalender für die Gruppe 4 sti
Aufbau Seite:
a) Fragenblock [KA01] Kalendereintrag Klang sti -> Einfacher Text-Baustein
b) HTML-Code,
um die Wunschuhrzeit aus KA03 abzugreifen,
einen funktionierenden Downloadbutton darzustellen
und eine Bitte, sich einen ruhigen Ort zu suchen (kein google drive link)
c) PHP-Code:
$kommu = value('KA02'); // <— statt KA02_01
if ($kommu == 3) {
goToPage('MAILsti'); // erst nach der Kalender-Seite zu Mail
// return;
}
Seite 08 MAILbi: hierbei handelt es sich um die Serienmail für die Gruppe 1 bi
Auf der Seite ist ausschließlich ein PHP-Code; ich habe einen Reload-Schutz versucht, der aber nicht funktioniert und daher auskommentiert ist:
// --- Reload-Schutz: Doppelplanung verhindern ---
// if ((int) value('MAIL_PLANNED') === 1) {
// goToPage('end');
// return;
// }
// --- Nur wenn Gruppe = 1 (bi) und Kommunikationsweg passt ---
$gruppe = (int) value('RA01'); // 1..4
$kommu = (int) value('KA02'); // 1=Kalender, 2=Mail, 3=Kalender+Mail
if ($gruppe !== 1 || !in_array($kommu, [2,3], true)) {
goToPage('end');
// return;
}
// Schritt 1: Wunschzeit für heute Abend auslesen
$mailzeitAbends = value('KA03_01'); // z. B. "20:15"
// Schritt 2: Zeitdifferenz bis zur Wunschzeit berechnen
$jetzt = time();
$zielzeit = strtotime($mailzeitAbends);
if ($jetzt > $zielzeit) {
// Wenn die Wunschzeit heute schon vorbei ist → morgen um die Uhrzeit
$zielzeit = strtotime('tomorrow ' . $mailzeitAbends);
}
// 10 Minuten abziehen (600 Sekunden), damit die Mail zur Wunschzeit garantiert da ist
$zielzeit = $zielzeit - 600;
$diffSekunden = $zielzeit - $jetzt;
// Sicherheit: falls Differenz negativ ist → mindestens 20 Sekunden
if ($diffSekunden < 20) {
$diffSekunden = 20;
}
// Schritt 3: Mailversand ID 5 - 11 planen – täglich zur Wunschzeit
mailSchedule(false, 5, $diffSekunden + 0*24*60*60); // Tag 0
mailSchedule(false, 6, $diffSekunden + 1*24*60*60); // Tag 1
mailSchedule(false, 7, $diffSekunden + 2*24*60*60); // Tag 2
mailSchedule(false, 8, $diffSekunden + 3*24*60*60); // Tag 3
mailSchedule(false, 9, $diffSekunden + 4*24*60*60); // Tag 4
mailSchedule(false, 10, $diffSekunden + 5*24*60*60); // Tag 5
mailSchedule(false, 11, $diffSekunden + 6*24*60*60); // Tag 6
// TEST Schritt 3: Mailversand ID 5 - 11 planen – im Test alle 1 Minute versetzt - fürs Live löschen
// mailSchedule(false, 5, $diffSekunden + 0*60); // sofort
// mailSchedule(false, 6, $diffSekunden + 1*60); // +1 Minute
// mailSchedule(false, 7, $diffSekunden + 2*60); // +2 Minuten
// mailSchedule(false, 8, $diffSekunden + 3*60); // +3 Minuten
// mailSchedule(false, 9, $diffSekunden + 4*60); // +4 Minuten
// mailSchedule(false, 10, $diffSekunden + 5*60); // +5 Minuten
// mailSchedule(false, 11, $diffSekunden + 6*60); // +6 Minuten
// --- Flag setzen und auf Endseite weiterleiten ---
// put('MAIL_PLANNED', 1);
// goToPage('end');
// return;
Seite 09 MAILmo: hierbei handelt es sich um die Serienmail für die Gruppe 2 mo
Auf der Seite ist ausschließlich ein PHP-Code ( … =gekürzte Version):
…
// --- Nur wenn Gruppe = 2 (mo) und Kommunikationsweg passt ---
$gruppe = (int) value('RA01'); // 1..4
$kommu = (int) value('KA02'); // 1=Kalender, 2=Mail, 3=Kalender+Mail
if ($gruppe !== 2 || !in_array($kommu, [2,3], true)) {
goToPage('end');
// return;
}
// Schritt 1: Wunschzeit für heute Abend auslesen
$mailzeitAbends = value('KA03_01'); // z. B. "20:15"
// Schritt 2: Zeitdifferenz bis zur Wunschzeit berechnen
$jetzt = time();
$zielzeit = strtotime($mailzeitAbends);
if ($jetzt > $zielzeit) {
// Wenn die Wunschzeit heute schon vorbei ist → morgen um die Uhrzeit
$zielzeit = strtotime('tomorrow ' . $mailzeitAbends);
}
// 10 Minuten abziehen (600 Sekunden), damit die Mail zur Wunschzeit garantiert da ist
$zielzeit = $zielzeit - 600;
$diffSekunden = $zielzeit - $jetzt;
// Sicherheit: falls Differenz negativ ist → mindestens 20 Sekunden
if ($diffSekunden < 20) {
$diffSekunden = 20;
}
// Schritt 3: Mailversand planen – täglich zur Wunschzeit
mailSchedule(false, 12, $diffSekunden + 0*24*60*60); // Tag 0
mailSchedule(false, 13, $diffSekunden + 1*24*60*60); // Tag 1
mailSchedule(false, 14, $diffSekunden + 2*24*60*60); // Tag 2
mailSchedule(false, 15, $diffSekunden + 3*24*60*60); // Tag 3
mailSchedule(false, 16, $diffSekunden + 4*24*60*60); // Tag 4
mailSchedule(false, 17, $diffSekunden + 5*24*60*60); // Tag 5
mailSchedule(false, 18, $diffSekunden + 6*24*60*60); // Tag 6
…
Seite 10 MAILste: hierbei handelt es sich um die Serienmail für die Gruppe 3 ste
Auf der Seite ist ausschließlich ein PHP-Code ( … =gekürzte Version):
…
// --- Nur wenn Gruppe = 3 (ste) und Kommunikationsweg passt ---
$gruppe = (int) value('RA01'); // 1..4
$kommu = (int) value('KA02'); // 1=Kalender, 2=Mail, 3=Kalender+Mail
if ($gruppe !== 3 || !in_array($kommu, [2,3], true)) {
goToPage('end');
// return;
}
// Schritt 1: Wunschzeit für heute Abend auslesen
$mailzeitAbends = value('KA03_01'); // z. B. "20:15"
// Schritt 2: Zeitdifferenz bis zur Wunschzeit berechnen
$jetzt = time();
$zielzeit = strtotime($mailzeitAbends);
if ($jetzt > $zielzeit) {
// Wenn die Wunschzeit heute schon vorbei ist → morgen um die Uhrzeit
$zielzeit = strtotime('tomorrow ' . $mailzeitAbends);
}
// 10 Minuten abziehen (600 Sekunden), damit die Mail zur Wunschzeit garantiert da ist
$zielzeit = $zielzeit - 600;
$diffSekunden = $zielzeit - $jetzt;
// Sicherheit: falls Differenz negativ ist → mindestens 20 Sekunden
if ($diffSekunden < 20) {
$diffSekunden = 20;
}
// Schritt 3: Mailversand planen – täglich zur Wunschzeit
mailSchedule(false, 19, $diffSekunden + 0*24*60*60); // Tag 0
mailSchedule(false, 20, $diffSekunden + 1*24*60*60); // Tag 1
mailSchedule(false, 21, $diffSekunden + 2*24*60*60); // Tag 2
mailSchedule(false, 22, $diffSekunden + 3*24*60*60); // Tag 3
mailSchedule(false, 23, $diffSekunden + 4*24*60*60); // Tag 4
mailSchedule(false, 24, $diffSekunden + 5*24*60*60); // Tag 5
mailSchedule(false, 25, $diffSekunden + 6*24*60*60); // Tag 6
…
Seite 11 MAILsti: hierbei handelt es sich um die Serienmail für die Gruppe 4 sti
Auf der Seite ist ausschließlich ein PHP-Code ( … =gekürzte Version):
…
// --- Nur wenn Gruppe = 4 (sti) und Kommunikationsweg passt ---
$gruppe = (int) value('RA01'); // 1..4
$kommu = (int) value('KA02'); // 1=Kalender, 2=Mail, 3=Kalender+Mail
if ($gruppe !== 4 || !in_array($kommu, [2,3], true)) {
goToPage('end');
// return;
}
// Schritt 1: Wunschzeit für heute Abend auslesen
$mailzeitAbends = value('KA03_01'); // z. B. "20:15"
// Schritt 2: Zeitdifferenz bis zur Wunschzeit berechnen
$jetzt = time();
$zielzeit = strtotime($mailzeitAbends);
if ($jetzt > $zielzeit) {
// Wenn die Wunschzeit heute schon vorbei ist → morgen um die Uhrzeit
$zielzeit = strtotime('tomorrow ' . $mailzeitAbends);
}
// 10 Minuten abziehen (600 Sekunden), damit die Mail zur Wunschzeit garantiert da ist
$zielzeit = $zielzeit - 600;
$diffSekunden = $zielzeit - $jetzt;
// Sicherheit: falls Differenz negativ ist → mindestens 20 Sekunden
if ($diffSekunden < 20) {
$diffSekunden = 20;
}
// Schritt 3: Mailversand planen – täglich zur Wunschzeit
mailSchedule(false, 26, $diffSekunden + 0*24*60*60); // Tag 0
mailSchedule(false, 27, $diffSekunden + 1*24*60*60); // Tag 1
mailSchedule(false, 28, $diffSekunden + 2*24*60*60); // Tag 2
mailSchedule(false, 29, $diffSekunden + 3*24*60*60); // Tag 3
mailSchedule(false, 30, $diffSekunden + 4*24*60*60); // Tag 4
mailSchedule(false, 31, $diffSekunden + 5*24*60*60); // Tag 5
mailSchedule(false, 32, $diffSekunden + 6*24*60*60); // Tag 6
…
end-Seite: Standard