0 votes
in SoSci Survey (dt.) by s235272 (320 points)
edited by s235272

Sehr geehrte Damen und Herren,

ich habe für eine Frage (C8) bei der Auswahl eines Fragetypen „Skala Zwischenwerte beschriftet“ ausgewählt. Auf der horizontalen Ebene (Beschriftung der Skalenwerte) habe ich die Eingabe 1. Stimme nicht zu 2. Stimme eher nicht zu. 3. Stimme teilweise zu und 4. Stimmt eher zu. Auf der vertikalen Ebene befinden sich pro Zeile mehrere Items (C008_01, C008_02, C008_03), die zu bewerten sind nach der Zustimmung auf der horizontalen Ebene.
Nachdem die Einschätzung für alle drei Items abgegeben wurde, soll die darauffolgende zweite Frage (C9) eine Filterfrage sein. Ich möchte, dass diese zweite Frage (C9) nur dann angezeigt wird, wenn bei dem Item C008_01 (und nur bei dem C008_01) in der Frage 1 (C8) „Stimme nicht zu“ oder „Stimme eher nicht zu“ ausgewählt wurde. Diese Filterfrage soll dann ausschließlich für dieses einzelne Item (C008_01) gelten.
Um für diese Frage einen Filter einzurichten habe ich einen PHP-Code benutzt, damit bei entsprechender Nennung die Filterfrage angezeigt wird: Mein Code sieht folgendermaßen aus:
registerVariable('C008');
if ((value('C008_01') == 1)
or (value('C008_01') == 2)
or (value('C008_01') == 3)) {goToPage('C9');}

Scheinbar ist dieser Code jedoch fehlerhaft, denn mir wird regelmäßig angezeigt, dass dieser Code nicht funktioniert, weil die Variable vorher im Fragebogen nicht abgefragt worden sei (die Bezeichnung C008 ist der Name der Frage bzw. der name aus der variablenübersicht + wurde durch den Befehl registerVariable('C008‘) registriert). Auch habe ich versucht mit dem Namen der Rubrik bzw. Kennung zu arbeiten (C8) und bekomme den Hinweis, dass die Variable nicht existieren würde.
Nichts hat geholfen um mein Anliegen umzusetzen. Könnten Sie mir weiterhelfen? Wie muss ich meinen Code so verändern, dass es funktioniert? Und falls es an der fehlenden Variable liegt: Wie genau müsste ich diese denn anlegen, damit der PHP-code funktioniert?

Ich danke vielmals für Ihre Hilfe und bedanke mich freundlich für Ihre Unterstützung im Voraus

2 Answers

0 votes
by s109993 (10.2k points)

Haben sie ihren PHP Code auf die Seite NACH der Frage gelegt?
Auch brauchen sie, wenn ich ihr vorgehen richtig verstehe, kein registerVariable.

Hier steht genau wie man mit PHP Code in SoSci umgeht, spezifisch beim Programmieren von Filtern: https://www.soscisurvey.de/help/doku.php/de:create:php-filters

0 votes
by SoSci Survey (305k points)

. Ich möchte, dass diese zweite Frage (C9) nur dann angezeigt wird, ...

In dem Fall ersetzen Sie die Frage C9 durch einen PHP-Code mit question()-Befehl.

if (
  (value('C008_01') == 1) ||
  (value('C008_01') == 2) ||
  (value('C008_01') == 3)
) {
  question('C009');
}

Das goToPage() springt zwischen den Fragebogen-Seite und ist m.E. für Ihren Bedaref nicht erforderlich. Das registerVariable() ist nur für PHP-Variablen relevant, nicht für Variablen im Datensatz (vgl. Variablen in SoSci Survey).

weil die Variable vorher im Fragebogen nicht abgefragt worden sei

Dazu verweise ich auf die andere Antwort hier, dass der PHP-Code frühestens auf der Seite nach C008 stehen darf.

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

...