0 votes
ago in Methoden-Fragen by u000752 (150 points)
edited ago by SoSci Survey

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):

  1. 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).
  1. 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.
  1. 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,

1 Answer

0 votes
ago by SoSci Survey (355k points)

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".

Das ist nicht problematisch, aber wenn Sie möchten, können Sie die Variable im Fragenkatalog bearbeiten und einen numerischen Inhalt einstellen.

Die Funktion put() schlägt fehl (Fehlermeldung: "Variable TA01 existiert nicht" oder "Typkonflikt").

TA01 ist die Kennung der Frage, welche die internen Variable enthält. Die Variable selbst hat die Kennung TA01_01. Bitte verwenden sie diese Kennung im PHP-Code.

An den Tagen, an denen der Spezialblock (PO05AwarenessBlock) übersprungen wird (Tage 1-6, 8-13, 15-20), wird der Fortschrittsbalken nicht vollständig

Ich kenne die Seitenabfolge nicht, daher kann ich hier keine besonders hilfreiche Antwort geben. Aber im Prinzip können Sie mittels option('progress', 50); auf einer Seite genau steuern, was der Fortschrittsbalken anzeigen soll, in diesem Beispiel wären es 50%.

Mit option('progress.last', 'daily'); könnten Sie (auf der ersten Seite platziert) auch einstellen, dass der Fortschrittsbalken nur bis zur Seite "daily" zählen soll.

und die Befragung erfordert einen zusätzlichen Klick auf "Weiter", um zu enden.

Dann prüfen sie bitte anhand der Debug-Information, was auf der Seite passiert, auf der Sie nochmal "Weiter" klicken müssen. Posten Sie für Folgefragen gerne die vollständige Debug-Information.

Die verwenden im weiteren PHP-Code immer noch die Funktionen html_stop(); und goToSendPage(). Ich hatte bereits geschrieben, dass es diese Funktionen nicht gibt und dass das nur Hallizunationen eines KI-Sprachmodells sind. Bitte glauben Sie nicht alles, was die KI in überzeugenden Worten erzählt.

Was Sie wahrscheinlich suchen, ist die Kombination

buttonHide()
pageStop();

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

...