Hallo,
ich möchte nach einigen wenigen Fragen und vor dem getrennten Erheben der Email-Adresse für eine Verlosung solche Personen ans Ende des Fragebogens umleiten, die den Fragebogen unmöglich schnell beantworten.
Beispiel 2 unter https://www.soscisurvey.de/help/doku.php/de:create:functions:casetime folgend geht der Adressabfrage auf derselben Seite dieses PHP-Code-Element voraus:
if (caseTime('hitherto') < 60) {
$index = 2;
put('ED07_01', $index);
text('ED06');
pageStop();
buttonToPage('end');
} else {
$index = 1;
put('ED07_01', $index);
}
Wenn die verbrachte Zeit auf den bisherigen Seiten in Sekunden kleiner ist als 60, soll Text 'ED06' ("Sie waren zu schnell") angezeigt werden. Der Rest der Seite (die Abfrage der Emailadresse) soll nicht mehr angezeigt werden und der Weiter-Knopf soll ans Ende des Fragebogens führen. Ansonsten soll dies nicht passieren und die Seite normal angezeigt werden. Damit aus den Daten ersichtlich ist, in welchem Datensatz was der Fall war, speichere ich "1" oder "2" in die interne Variable 'ED07_01'.
Das Problem ist, dass der if-Block immer ausgeführt wird, auch wenn die Zeit auf den Seiten davor insgesamt deutlich über 60 Sekunden liegt. Ersetze ich in caseTime() das 'hitherto' mit 'begin' wird der if-Block nie ausgeführt, egal ob deutlich unter oder über einer Minute auf den Seiten davor verbracht wird.
Zudem bin ich mir relativ sicher, dass der oben beschriebene PHP-Code vor ein paar Tagen noch wie erwartet funktioniert hat. Leider fällt mir das Debugging schwer, da ich nicht weiß, wie ich ohne Funktionen wie strval() überprüfen kann, was caseTime() ausgibt. Das Problem tritt in der Pretest-Funktion und in der Fragebogenvorschau auf.
Übersehe ich etwas offensichtliches? Würden weitere Informationen bei der Problemsuche helfen? Am unsichersten bin ich mir bezüglich der internen Variable, aber ich las, dass diese immer 7-stellig benannt sein muss. Mich wundert, dass ich sie nur als Zeichenkette definieren kann, wobei ein Integer praktischer wäre.
Vielen Dank und beste Grüße