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

Sehr geehrte Damen und Herren,

Ich benötige dringend Hilfe bei einem Routing-Problem in meinem Projekt (Kennung: base oder DWTUWIEN, falls bekannt).

Trotz aller Bemühungen tritt immer wieder der Fehler auf:
"Die Variable DailyCount gibt es in diesem Projekt nicht (siehe Variablen-Übersicht). Daher kann kein Antwort-Wert dafür ermittelt werden." (Fehlermeldung erscheint auf Seite 02).

Wichtige Punkte zur Fehlerbehebung:

Die Zählvariable (DailyCount, früher Tage) ist in der Variablen-Übersicht als Zahl (Intern) korrekt angelegt.

Der PHP-Code wurde von Seite 1 auf Seite 2 (PHPRoutingstart) verschoben.

Der verwendete Code auf Seite 2 versucht, die Variable aggressiv zu initialisieren, bevor sie gelesen wird, aber selbst dies schlägt fehl:
PHP

registerVariable('DailyCount', 0); 
$aktueller_tag = intval(value('DailyCount')) + 1;
registerVariable('DailyCount', $aktueller_tag);

Alle Testdaten wurden gelöscht.

Der Code auf Seite 1 wurde komplett entfernt.

Es scheint, als würde der Server die Funktionen registerVariable() und value() im Kontext von Seite 2 blockieren oder die Variable im PHP-Scope nicht erkennen. Bitte prüfen Sie die Servereinstellungen des Projekts, da das Problem nicht durch herkömmlichen PHP-Code im Fragebogen behoben werden kann.

1 Answer

0 votes
ago by SoSci Survey (355k points)

Bitte lesen Sie kurz die folgende Anleitung, denn dei Unterscheidung zwischen PHP-Variablen und Variablen im Datensatz ist fundamental: Variablen in SoSci Survey

Leider muss ich Ihnen im nächsten Schritt mitteilen, dass der von Ihnen verwendete Ansatz zum Hochzählen einer Variable in Ihrem Setting keinen Sinn ergibt. Eine Variable ist jeweils nur innerhalb eines Falls (CASE) gültig - aber Sie haben ja für jeden Tag einen neuen Fall pro Person.

Außerdem würde das Hochzählen falsche Ergebnisse liefern, wenn jemand die Seite neu lädt oder wenn jemand einen Tag mal nicht teilnimmt. Diese Kontextinformationen kann eine KI nicht haben, deshalb halluzieniert sie leider nicht-funktionalen Code.

Ich würde daher für die Ermittlung des Tages ein anderes Herangehen empfehlen. Sie hatte geschrieben, wenn ich mich korrekt erinnere, dass Tag 1 der 18.10.2025 sein wird. Auf dieser Basis können Sie ermitteln, welcher Tag das aktuelle Datum ist.

// Zeit (in Sek.) seit dem 18.10.
$diff = time() - strtottime('2025-10-18 00:00:00');
// In Tage umrechen
$days = $diff / 3600 / 24;
// Abrunden und plus 1, damit der 18.10. nicht 0 ist.
$day = floor($days) + 1;
// Und das noch im Datensatz speichern
put('IV01_01', $day);

Damit das put() funktioniert, müssen Sie im Fragenkatalog eine Frage vom Typ interne Variablen anlegen, und Sie müssen statt 'IV01_01' die Kennung der ersten Variable in dieser Frage eintragen. Diese finden Sie im "Variablen" Karteireiter in der Frage.

Für den Filter auf der nächsten Seite würden Sie dann value('IV01_01') verwenden, nur erneut mit der internen Variablen-Kennung statt IV01_01.

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

...