Anfrage an den SoSci Survey Support
Betreff: Dringende Hilfe beim Zeit- und Routing-Skript (Tageszähler & Bedingte Anzeige)
Sehr geehrte Damen und Herren,
ich benötige dringend Unterstützung bei der Implementierung eines tagesbasierten Routings für eine 21-tägige Diary-Studie. Trotz intensiver Versuche (basierend auf der offiziellen SoSci-Dokumentation) gelingt es mir nicht, die Logik stabil und fehlerfrei zum Laufen zu bringen.
Die Studie soll 21 Tage lang laufen, wobei an Tag 1 Soziodaten abgefragt werden und die Fragen an Tag 7, 14 und 21 einen zusätzlichen Inhaltsblock (PO05AwarenessBlock) beinhalten.
Aktuelle technische Herausforderungen (Stand 02.10.2025):
- Tageszähler und Variable (TA01_01)
Ich verwende das strtotime()-Skript zur Berechnung der Tagesdifferenz. Das Startdatum ist auf 2025-10-08 gesetzt.
Problem: Die Variable zur Speicherung des Tageszählers (TA01_01) bereitet massive Probleme. Obwohl sie als "Interne Variable" angelegt ist, erkennt das System sie ständig als "Text/Zeichenkette". Die Funktion put() schlägt fehl (Fehlermeldung: "Variable TA01 existiert nicht" oder "Typkonflikt").
Code (Seite 02 / PHPRoutingstart):
Ich habe den Code auf der Seite 02 mit der richtigen ID TA01_01 eingesetzt (siehe unten).
- Fehlerhaftes Ende und unvollständiger Fortschrittsbalken
An den Tagen, an denen der Spezialblock (PO05AwarenessBlock) übersprungen wird (Tage 1-6, 8-13, 15-20), wird der Fortschrittsbalken nicht vollständig, und die Befragung erfordert einen zusätzlichen Klick auf "Weiter", um zu enden.
Logik: An Tagen 1–20 soll die Seite DailyDank das Interview über goToSendPage() beenden. An Tag 21 läuft es weiter zur Seite AbschlussHurra. Das System erkennt das Endsignal an Tag 1–20 nicht korrekt.
- Gesamte Routing-Logik (aktuell implementiert)
Ich habe die Logik aufgeteilt:
Seite 02 (PHPRoutingstart): Berechnet $tag und leitet an Tag 1 zur Willkommen-Seite, sonst zur Seite PO04Prozessdaten (tägliche Fragen).
Seite 04 (PO04Prozessdaten): Prüft, ob der Spezialblock PO05AwarenessBlock übersprungen werden muss.
Seite 05 (DailyDank): Beendet das Interview an Tag 1–20.
Die verwendeten Codes (für Ihre Analyse):
A. Code auf Seite 02 (PHPRoutingstart)
PHP
<?php
$start_date_str = '2025-10-08';
$today_str = date('Y-m-d');
$start_ts = strtotime($start_date_str);
$today_ts = strtotime($today_str);
$days_diff = floor(($today_ts - $start_ts) / 86400);
$tag = $days_diff + 1;
if ($tag < 1) {
$tag = 1;
}
// Problemzone: Speicherung des Tageszählers
put('TA01_01', $tag);
if ($tag > 1) {
goToPage('PO04Prozessdaten');
html_stop();
} else {
goToPage('Willkommen');
html_stop();
}
?>
B. Code auf Seite 04 (PO04Prozessdaten)
PHP
// Überspringen des Spezialblocks PO05AwarenessBlock
$tag = value('TA01_01');
if (($tag != 7) && ($tag != 14) && ($tag != 21)) {
goToPage('DailyDank');
html_stop();
}
C. Code auf Seite 05 (DailyDank)
PHP
// Beendigung des Interviews an Tag 1-20
$tag = value('TA01_01');
if ($tag < 21) {
// Problemzone: Versuchte Speicherung/Beendigung
// Ich musste hier mit einem Workaround (put in PD01_01) arbeiten,
// da die interne Variable nicht als numerisch gespeichert werden konnte.
goToSendPage();
}
Frage: Ist dieses komplexe, tagesbasierte Routing in dieser Form überhaupt stabil in SoSci Survey umsetzbar, und wenn ja, bitte ich dringend um eine Überprüfung der Variablendefinitionen und der Endpunkt-Logik, da mir hier offensichtlich ein Systemfehler im Wege steht.
Vielen Dank für Ihre Hilfe und Ihre schnelle Rückmeldung.
Ich habe zig Tage zunächst mit ChatGPT, dann auf Empfehlung des geschäftsführers mit Gemini. Seit Sonntag mehr als 50 Stunden. Mein Projekt hat noch nicht mal Pretestreife und soll am 8.10. an er TU Wien gestartet werden.
Mit freundlichen Grüßen,