0 votes
in SoSci Survey (dt.) by s090665 (115 points)

In einer Befragung zu unterschiedlichen Berufen soll bei einer Frage vom Typ "Skala (Zwischenwerte beschriftet)" abhängig von dem zufällig ausgewählten Beruf, der dem Befragten zugewiesen wird, eine unterschiedliche Zahl von Items angezeigt werden. Die Filterbedingung bezieht sich auf eine interne Variable, so dass nur ein PHP-Filter in Betracht kommt.

Die betreffende Frage enthält insgesamt 7 Items. Abhängig vom Wert der internen Variablen (Kennung des ausgewählten Berufs) sollen die Items 1 bis 4, 1 bis 5, 1 bis 6 oder alle Items angezeigt werden. Hierfür wurde folgender PHP-Code erstellt (A011_01 ist die interne Variable, B001 ist die Frage, die angezeigt werden soll):

if ((value('A011_01') == 4) or (value('A011_01') == 5) or (value('A011_01') == 29)) {
  $items = array('1-4');
}

if ((value('A011_01') == 8) or (value('A011_01') == 13) or (value('A011_01') == 15) or (value ('A011_01') == 17) or (value('A011_01') == 19) or (value('A011_01') == 20) or (value('A011_01') == 21) or (value('A011_01') == 23) or (value('A011_01') == 24)) {
  $items = array('1-6');
}

if ((value('A011_01') == 10) or (value('A011_01') == 14)) {
  $items = array('1-7');
}

else {
  $items = array('1-5');
}

question('B001', $items);

Bei der Erprobung hat sich gezeigt, dass diese Anweisung zwar grundsätzlich funktioniert, aber vereinzelt Darstellungsfehler auftreten. Es kommt vor, dass die Frage zu wenig oder zu viele Items anzeigt; bei anderen Durchläufen wird wiederum die richtige Zahl angezeigt. Die Darstellungsfehler scheinen zufällig aufzutreten, d.h. ein Zusammenhang mit bestimmten vorherigen Antworten oder ein sonstiges Muster ist nicht erkennbar. In den Debug-Informationen werden keine Hinweise auf Fehler angezeigt. Für Ratschläge zur Behebung des Problems wäre ich daher sehr dankbar.

1 Answer

+1 vote
by SoSci Survey (302k points)

d.h. ein Zusammenhang mit bestimmten vorherigen Antworten oder ein sonstiges Muster ist nicht erkennbar.

Meine Vermutung wäre, dass dieser FIlter korrekt funktioniert, in der internen Variable aber der falsche Werte gespeichert wird.

Um das zu Testen starten Sie die Seite mit dem Filter im Debug-Modus (gelber Pfeil) und tragen Sie oben in der orangen Leiste nacheinander alle möglichen Werte für die interne Variable ein (vgl. auch Video-Tutorial Nr. 4).

by s090665 (115 points)
edited by s090665
Liebes Support-Team,

danke für die Empfehlung. Ich habe die Prüfung im Debug-Modus für alle Werte der internen Variablen nacheinander durchgeführt und nun doch so etwas wie ein Muster erkennen können: Die Anzeige ist immer dann korrekt, wenn alle 7 Items angezeigt werden sollen (letzte if-Bedingung in dem oben zitierten Code) oder wenn 5 Items angezeigt werden sollen (else-Bedingung). In den Fällen, in denen 4 oder 6 Items angezeigt werden sollen (die beiden ersten if-Bedingungen) funktioniert der Filter nicht; es werden statt dessen immer 5 Items angezeigt.

Es scheint also etwas mit der Ausführung der Filteranweisung, insbesondere der ersten beiden Bedingungen, nicht zu stimmen. In dem obigen PHP-Code kann ich jedoch keine offensichtlich falsche Stelle erkennen. (Dass die interne Variable selbst falsche Werte enthält, ist dagegen m.E. unwahrscheinlich, da die Anweisung, mit der diese Variable befüllt wird, bei den bisherigen Tests keine Auffälligkeiten zeigte und immer korrekte Werte lieferte.)

Nachtrag: Das Problem ist jetzt gelöst. Anscheinend wurde von den drei if-Bedingungen im obigen Code nur die letzte ausgeführt. Ersetzt man die zweite und dritte if-Bedingung durch elseif, werden alle Bedingungen korrekt umgesetzt. Nochmals danke für den Hinweis auf die Testprozedur, die zu dieser Lösung geführt hat.

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

...