0 votes
in SoSci Survey (dt.) by s228643 (120 points)

Liebes Support-Team,

in meiner Studie wird ein Lernplaner verwendet, welcher von den Studierenden zwei Mal am Tag ausgefüllt werden muss (Morgens und Abends).
Der Morgenteil steht von 06:00 - 15:00 Uhr zur Verfügung. Dann ist von 15:00 - 16:00 Uhr eine Unterbrechung eingebaut, und der Abendteil steht von 16:00 - 02:00 Uhr zur Verfügung.

Code für Unterbrechung im Morgenteil:

option('backbutton', false);
// Prüfen, wie viel Zeit seit Beginn des Befragung vergangen ist
// Falls es weniger als 1 Stunde ist (1 * 3600 Sekunden), wird das Interview unterbrochen
if (caseTime('begin') < 1 * 3600) {
  text('TA02_01'); // Verabschiedung zum ersten Teil anzeigen
  option('resume', true); // Hinweis auf fortgesetztes Interview verhindern
  option('nextbutton', false); // Weiter-Knopf ausblenden (Interview unterbrechen)
} else {
  // Fortschrittsbalken für Abendplaner anpassen
  option ('progress', 0);
  // Ist der Teilnehmer nach 1 Stunde zurückgekehrt? Dann geht es nun direkt weiter
  goToPage('next');
}

Es wird kein zusätzlicher Code im Abendteil zur Fortführung genutzt.

Nun haben die Studierenden im Morgenteil die Möglichkeit, anzugeben, ob sie für heute was geplant haben. Wenn sie dort Nein anklicken, gelangen sie direkt zum Ende des Morgenteils.
Für diesen Fall und auch für den Fall, wenn Studierende vergessen haben, den Morgenteil auszufüllen, wird ein zusätzlicher Lernplaner "Nur Abends" versendet. Dies ist ein gesonderter Fragebogen. Der Fall oben beschreibt einen Fragebogen, welcher zuammenhängt und nur durch die Unterbrechung "getrennt" wird.

Code zu Beginn das Lernplaner "Nur Abends":

if ((time() < strtotime('16:00:00')) || (time() > strtotime('+1 days 02:00:00'))) {
  text('Sperrung_Abendteil');
  buttonHide();
  pageStop();
}

Für den zweiten Fall wurden häufiger Probleme beschrieben, dass sie den Link zum Fragebogen nicht öffnen konnten.
Allerdings kam nun auch vermehrt das Problem auf, dass im zusammenhängenden Lernplaner, welcher oben zuerst beschrieben wurde, der Abendteil oft nicht angezeigt wird, sondern stattdessen auch hier der Link nicht zu öffnen ist oder der Morgenteil angezeigt wird.

Gibt es hier Fehler in der Codierung? Oder geht es um Einstellungen bei den Serienmails?

Bei den Serienmails für den zusammenhängenden Fragebogen wird eine Mail am Morgen und eine Mail am Abend versendet.
Die Mail am Abend ist als Erinnerung zur Mail am Morgen eingestellt und als einmalig auszufüllen mit personalisiertem Link eingestellt.
Dieser wird denjenigen zugesandt, die die Befragung abgeschlossen haben, oder den Fragebogen aufgerufen, aber nicht abgeschlossen haben.

Die Serienmail für den einzelnen Fragebogen "Nur Abends" ist ebenfalls als Erinnerungsmail zur Morgen-Mail eingestellt, jedoch als neue Erhebungswelle angegeben. Dieser Fragebogen wird auch als einmalig auszufüllen mit personalisiertem Link eingestellt. Den Fragebogen erhalten diejenigen, die den Fragebogen nicht aufgerufen haben.

Ich freue mich sehr über eine Einschätzung und Unterstützung von Ihnen!

Herzliche Grüße

1 Answer

0 votes
by SoSci Survey (328k points)

Spontan fällt mir folgender Code auf:

(time() > strtotime('+1 days 02:00:00')

Das kann nie sein, denn hier wird überprüft, ob die (aktuelle Zeit) größer ist als die (aktuelle) Zeit plus 1 Tag um 2 Uhr.

Was auch nur bedingt sinnvoll ist:

(caseTime('begin') < 1 * 3600)

Hier wird geprüft, ob der Start der Erhebung weniger als eine Stunde zurück liegt. Wenn man den Fragebogen um 8 Uhr morgens aufruft, wäre das schon um 9 Uhr der Fall. Meines Erachtens wäre die Arbeit mit fixen Zeiten da sinnvoller.

Für den zweiten Fall wurden häufiger Probleme beschrieben, dass sie den Link zum Fragebogen nicht öffnen konnten.

Es geht um die "Sperrung Abendteil"? Oder um einen anderen Fehler?

oder der Morgenteil angezeigt wird.

Könnte es sein, dass der Link einfach erst abends aufgerufen wird (obwohl die Mail schon morgens verschickt wurde)?

by s228643 (120 points)
Liebes SoSciSurvey Support-Team,

vielen Dank für Ihre Rückmeldung.

Können Sie mir bitte bei der Codierung für die Sperrung des Abendteils helfen, wie dieser für den spezifischen Fall aussehen müsste?

Ich schildere noch einmal was ich benötige:
Der Morgenteil ist von 06:00 - 15:00 Uhr auszufüllen. Die entsprechende Mail dazu bekommen die Studierenden um 06:00 Uhr morgens. Der Abendteil ist von 16:00 - 02:00 Uhr auszufüllen. Die entsprechende Mail dazu erhalten sie um 16 Uhr.

Für den zusammenhängenden Lernplaner benötigt es eine Sperrung von 15:00 - 16:00 Uhr, wenn sie den Morgenteil ganz normal ausfüllen.
Es gibt zusätzlich noch einen "Nur Abends" Lernplaner, welcher nur den Abendteil enthält, sofern sie den Morgenteil nicht ausgefüllt haben oder sich im Morgenteil keine Ziele gesetzt haben und durch diese Filterfrage direkt zum Ende des Morgenteils geführt werden.

Ich weiß nicht, ob der Fehler nur in der Codierung für die Sperrung des Abendteils liegt oder ob auch bei der Serienmail-Versendung etwas anders eingestellt werden muss, als oben beschrieben.

Ich danke vielmals schon jetzt für die Unterstützung und wünsche noch einen schönen und sonnigen Nachmittag!
by s228643 (120 points)
Eine kleine Ergänzung:
Heute hat besonders die Öffnung des Links für den "Nur Abend" Lernplaner/Fragebogen nicht funktioniert. Ich hatte bei diesem Teil am Morgen angegeben, keine Ziele zu haben und wurde dadurch direkt ans Ende des Morgenteils geleitet.

Anbei nochmal der Code, welcher auf der ersten Seite dieses Fragebogens eingefügt ist:
if ((time() < strtotime('16:00:00')) || (time() > strtotime('+1 days 02:00:00'))) {
  text('Sperrung_Abendteil');
  buttonHide();
  pageStop();
}

Beim Aufrufen des Links kam folgende Meldung:
Du hast diese Befragung bereits abgeschlossen. Und danach kam der Vermerk, dass der Morgenteil bereits abgeschlossen ist und der Abendteil bitte trotzdem auszufüllen ist.
by SoSci Survey (328k points)
> Es gibt zusätzlich noch einen "Nur Abends" Lernplaner, welcher nur den Abendteil enthält, sofern sie den Morgenteil nicht ausgefüllt haben oder sich im Morgenteil keine Ziele gesetzt haben

Haben Sie das in einem separaten Fragebogen? Oder wird das durch Filterführung im selben Fragebogen erreicht?

Generell ist erst einmal zu klären, dass alle Personen am Nachmittag in den zweiten Teil kommen. Dafür empfehle ich auf der ersten Seite einen Filter für die Sperre:

$h = (int)date('h');
if ($h == 15) {
  text('Sperre');
  buttonHide();
  pageStop();
}
if (($h >= 16) || ($h <= 2)) {
  goToPage('abendteil');
}

> Beim Aufrufen des Links kam folgende Meldung:
> Du hast diese Befragung bereits abgeschlossen

Dann vermute ich, dass sie bereits im Morgen-Teil zum Ende geschickt wurden. Das sollten Sie aber eigentlich anhand der Daten und der TIME**-Variablen nachvollziehen können.
by s228643 (120 points)
Vielen Dank für die Hilfe und die Unterstützung bei der Codierung.

Ich habe diese nun integriert und folgende Codierung am Ende des Morgenteils:
 
$h = (int)date('h');
if (($h >= 16) || ($h <= 2)) {
  goToPage('AbendA');
}
if ($h == 15) {
  text('Sperrung_Morgenteil'); // Verabschiedung zum ersten Teil anzeigen
  option('resume', true); // Hinweis auf fortgesetztes Interview verhindern
  option('nextbutton', false); // option('backbutton', false) Weiter-Knopf ausblenden (Interview unterbrechen)
}

{
  // Keine Knöpfe anzeigen, sonst wäre es keine richtige Verabschiedung
  buttonHide();
}

{
  // Es könnte sinnvoll sein, den Fortschrittsbalken auf 0% zu setzen
  option('progress', 0);
}

Allerdings funktioniert es leider immer noch nicht, dass die TN ab 16 Uhr auf die Seite "AbendA" geleitet werden, also die erste Seite zum Abendplaner. Ich habe es auch schon mit go to page 'next' versucht.
In den letzten Tagen habe ich dieses Problem manuell gelöst, in dem ich ab 16 Uhr die Funktion button hide rausgenommen habe, sodass sie auf weiter klicken konnten, um in den Abend-Teil zu gelangen.

Wie kann ich die Codierung anpassen, dass dies automatisch gelingt?

Vielen herzlichen Dank im Voraus für Ihre Unterstützung.

Viele Grüße
by SoSci Survey (328k points)
Fügen Sie doch mal ein debug() ein, um die Stunde anzuzeigen.

$h = (int)date('h');
debug($h);

Was steht denn (speziell ab 16) Uhr in der Debug-Information?
https://www.soscisurvey.de/help/doku.php/de:create:debugging

Sie können zum Testen unter "Fragebogen zusammenstellen" -> "Fragebögen verwalten" auch mal eine Kopie des Fragebogens anlegen und dort andere Zahlen einsetzen.
by s228643 (120 points)
[Information]    Interview gestartet (neue Nummer 400)
[Information]    Der Fragebogen TB01 im Projekt srl_2023 wird verwendet
[Verarbeitung]    Erstelle Seite 11 in Fragebogen TB01
[Inhalt]    Erstelle Frage TA02
[Inhalt]    Erstelle Frage ZG02
[Information]    Vom Zufallsgenerator ZG02 wurden folgende Codes gezogen: 5
[Information]    value("ZG02") = "Lernplaner_erfolgreich_vorbe...
debug()    Inhalt: $h = 3 (integer)
[Information]    Der Fortschrittsbalken wurde auf 0 % festgelegt


Das sind die Informationen, die gegeben werden, wenn ich den debug an das Ende des Codes eingefügt habe.
Wenn ich den debug innerhalb der Klammer des 16-02 Uhr Befehls einfüge, kommt dazu gar keine Debug-Information.
by SoSci Survey (328k points)
Okay, kleiner Fehler, große Wirkung, es muss

date('H');

heißen, mit großem "H". Das kleine "h" liefert das engische Format mit Zeiten von 1-12 statt 1-24.
by s228643 (120 points)
Leider hat auch das nicht zur Lösung des Problems, dass die TN nicht auf die nächste Seite geleitet werden ab 16 Uhr, beigetragen.
Ich muss es noch immer manuell über das ein oder ausblenden von buttonhide regulieren.

Hier noch einmal der aktuelle Code:
$H = (int)date('H');

if ($H == 15) {
text('Sperrung_Morgenteil'); // Verabschiedung zum ersten Teil anzeigen;
option('resume', true); // Hinweis auf fortgesetztes Interview verhindern;
option('nextbutton', false); // option('backbutton', false) Weiter-Knopf ausblenden (Interview unterbrechen);
}
{
  // Keine Knöpfe anzeigen, sonst wäre es keine richtige Verabschiedung
  buttonHide();
}
{
  // Fortschrittsbalken für Abendplaner anpassen;
  option ('progress', 0);
}
if (($H >= 16) || ($H <= 2)) {
  goToPage('next'); option('nextbutton');
}

Dieser Code wird auf der letzten Seite des Morgen-Teils integriert und soll zur nächsten Seite (AnfangAbendteil) führen. Ich habe es sowohl mit gotopage 'next' als auch mit der Kennung der Seite gotopage 'AnfangA' versucht.
by SoSci Survey (328k points)
Was zeigt die Debug-Information denn nach der Änderung an?

Der folgende Code

if (($H >= 16) || ($H <= 2)) {
  goToPage('next');
}

Sollte am Anfang stehen, spätestens unter dem ersten IF-Filter. Und ohne option()-Befehl (habe ich hier schon entfernt)
by s228643 (120 points)
[Information]    Interview gestartet (neue Nummer 463)
[Information]    Der Fragebogen TB02 im Projekt srl_2023 wird verwendet
[Verarbeitung]    Erstelle Seite 11 in Fragebogen TB02
[Inhalt]    Erstelle Frage TA02
[Inhalt]    Erstelle Frage ZG02
[Information]    Vom Zufallsgenerator ZG02 wurden folgende Codes gezogen: 4
[Information]    value("ZG02") = "Lernplaner_erfolgreich_vorbe...
[Inhalt]    Zeige Text Sperrung_Morgenteil
[Information]    Der Fortschrittsbalken wurde auf 0 % festgelegt

Das steht nach der Änderung (Code an den Anfang stellen, ohne option) in der debug-Info.
by SoSci Survey (328k points)
Sie haben das debug($h) wieder aus dem Code genommen? Genau diese Info brauche ich aber noch, um das Problem nachzuvollziehen.

Ob Sie $h oder $H schreiben, ist egal. Wichtig ist das große "H" im date()-Befehl.

Ergänzen Sie in Ihrem Code gerne noch ein paar mehr debug()s.


$H = (int)date('H');
debug($H);

if ($H == 15) {
  debug('Filter H15');
  text('Sperrung_Morgenteil'); // Verabschiedung zum ersten Teil anzeigen;
  option('resume', true); // Hinweis auf fortgesetztes Interview verhindern;
  option('nextbutton', false); // option('backbutton', false) Weiter-Knopf ausblenden (Interview unterbrechen);
}
if (($H >= 16) || ($H <= 2)) {
  debug('Filter H16');
  goToPage('next');
}
{
  debug('Abschnitt buttonHide()');
  // Keine Knöpfe anzeigen, sonst wäre es keine richtige Verabschiedung
  buttonHide();
}
{
  debug('Abschnitt progress');
  // Fortschrittsbalken für Abendplaner anpassen;
  option ('progress', 0);
}
by s228643 (120 points)
Die Weiterleitung zum Abendteil funktioniert nun. VIELEN VIELEN DANK! Ohne Ihre Unterstützung hätte ich das nicht mehr hinbekommen.

Das einzige, was nun noch "fehlerhaft" ist, ist dass auf der ersten Seite des Abendteils ebenso der Text zum Ende vom Morgenteil angezeigt wird. Es wird also der Text vom Ende des Morgenteils angezeigt und darauf folgt auf dieser Seite noch der Beginn-Text zum Abendteil.
Kann man dies noch anpassen?

Dass die Weiterleitung nun funktioniert ist zuerst einmal das Wichtigste und sehr erleichternd - vielen herzlichen Dank!
by SoSci Survey (328k points)
>  dass auf der ersten Seite des Abendteils ebenso der Text zum Ende vom Morgenteil angezeigt wird

Vermutlich steht der auf der Fragebogen-Seite noch oberhalb vom goToPage() - also über dem PHP-Code auf der Seite? Schieben sie ihn man nach unten.
by s228643 (120 points)
edited by s228643
Leider funktioniert der Code doch noch immer nicht.

Es gibt zu Beginn des Fragebogens eine Filterfrage, welche abfragt, ob man heute Ziele hat. Wenn man dies verneint, wird man direkt zur letzten Seite des Morgenteils geleitet (wo auch der Code enthalten ist).
Hier wird nun auch nach 16 Uhr noch der Sperrungstext angezeigt. Das heißt, hier funktioniert die Weiterleitung zum Abendteil nicht.

Die Einstellung der Filterfrage ist wie folgt: Wenn Option "Nein", dann innerhalb des Fragebogens springen -> Folgende Seitenabfolge verwenden: EndeM,AnfangA-EndeA

Oder muss hier nur EndeM rein? Verläuft das dann automatisch?

In der Testversion innerhalb des Fragebogens funktioniert beides. Leider aber im richtigen Ausfüllen des Fragebogens nicht.

Oder muss in dann zu einer Seite davor springen, also eine Seite vor Ende des Morgenteils und damit auch der Codierung für die Sperrung?

Bei der Variante, wenn man Ziele eingegeben hat und den Morgenteil ganz normal ausgefüllt hat, funktioniert die Weiterleitung in den Abendteil.
by SoSci Survey (328k points)
> Hier wird nun auch nach 16 Uhr noch der Sperrungstext angezeigt.

Bitte sehen Sie sich für diese Konstellation nochmal die Debug-Information an.

> Die Einstellung der Filterfrage ist wie folgt: Wenn Option "Nein", dann innerhalb des Fragebogens springen -> Folgende Seitenabfolge verwenden: EndeM,AnfangA-EndeA

Anstatt einer Seitenabfolge sollte es eigentlich ausreichen, wenn Sie "nur" zur Seite "EndeM" springen. Eine Seitenabfolge erhöht die Komplexität hier nur unnötig.

> In der Testversion innerhalb des Fragebogens funktioniert beides. Leider aber im richtigen Ausfüllen des Fragebogens nicht.

Es ist dieselbe Technik, welche hier greift. Wenn es unterschiedlich funktioniert, dann muss das an weiteren Filtern und/oder Einstellungen liegen. Bitte prüfen Sie in einem betroffenen Fall, was dort noch an Filtern aktiv wurde.

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

...