0 votes
in SoSci Survey (dt.) by s032720 (110 points)
edited by SoSci Survey

Guten Abend,

wir haben in einem Projekt mit zwei Fragebögen folgendes Problem: Wir haben den zweiten Fragebogen so programmiert, dass man ihn frühestens zehn Tage nachdem man den ersten Fragebogen ausgefüllt hat, aufrufen kann. Heute (01.02.) schrieb mir ein Studienteilnehmer, dass er die Meldung bekommt, der Fragebogen sei für ihn erst ab dem 28.01. verfügbar (mir liegt auch ein screenshot vor, am Teilnehmer kann es also nicht liegen...). Irgendwas scheint da also beim Datumsabgleich schief zu laufen und wir können uns nicht erklären, was.

Den Check auf zeitlichen Mindestabstand haben wir mit folgendem php Code programmiert:

$startT2 = date("d.m.Y", strtotime($EndeT0[0] . "+10 days"));

$now = date("d.m.Y", strtotime("now"));

if($now < $startT2){
goToPage('HinweisZeit');
}else{
goToPage('CheckDB');
}

Der Teilnehmer kommt dann auf die Seite "HinweisZeit" obwohl das nicht der Fall sein sollte. Dort haben wir einen Hinweis mit vorangestelltem php Code programmiert:

$startT2 = date("d.m.Y", strtotime($EndeT0[0] . "+10 days"));

replace('%datum%', $startT2);

... wobei $EndeT0 die Endzeit aus dem ersten Fragebogen ist, die in der Datenbank abgespeichert wurde.

Woran könnte dieser Fehler liegen?

Herzlichen Dank im Voraus!

1 Answer

0 votes
by SoSci Survey (327k points)

Ich habe zwei Vermutungen:

1) Womöglich wurde der Link früher schon einmal aufgerufen und nun wird das Interview einfach fortgesetzt - auf der Seite, wo Sie den Teilnehmer eigentlich nicht haben möchten. Um das zu umgehen, müssten Sie die Serienmail so konfigurieren, dass der Fragebogen beim Aufruf des Links immer von vorne startet.

2) Ihr Datumsvergleich ist "schräg" bzw. er beachtet nicht, dass Computer von vorne nach hinten vergleichen. Dank dem date() vergleichen Sie Texte. Also zum Beispiel:

"01.02.2020" und "31.01.2020"

Für den Vergleich von Texen gilt: Es wird von vorne nach hintern vergleichen. Ist ja auch logischen, denn "Acho" kommt vor "Alba".

Sehen wir uns das einmal für Ihren String an: Der erste beginnt mit "0", der zweite mit "3". Demnach ist der zweite größer als der erste. Langer Rede kurzer Sinn: Verleichen Sie bitte Zeitstempel. Das ist auch vom Code her einfacher.

$startT2 = strtotime($EndeT0[0] . "+10 days");
$now = time();

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

...