Filter bzw. Filterfragen sind für Projektleiter ohne Programmiererfahrung traditionell eine gewisse Herausforderung. Natürlich ist es hilfreich, vorab die Anleitung zu Filterfragen zu lesen: Filterfragen und Filter.
Besonders frustrierend ist es, wenn der Filter nicht funktioniert und man weiß nicht weiter. Dieses Kapitel beschreibt, wie man einem Fehler schnell auf die Schliche kommt.
Ein Filter im Fragebogen besteht in aller Regel aus 2 Teilen:
Überprüfen Sie bitte als erstes, ob der Filter vielleicht auf derselben Seite steht wie die Filterfrage (z.B. oben die Filterfrage und darunter der PHP-Code mit dem Filter).
Das kann nicht funktionieren: Eine Fragebogen-Seite wird stets von oben bis unten verarbeitet – und erst am Schluss wird das Ergebnis (die Fragebogen-Seite) an den Browser des Teilnehmers geschickt. Das heißt: Wenn die Filterfrage beim Teilnehmer angezeigt wird, wurde der Filter bereits aktiv. Die Antwort des Teilnehmer, die mittels value()
ausgelesen werden soll, liegt zu diesem Zeitpunkt aber noch gar nicht vor – der Filter kann also auf nichts reagieren.
Die Lösung ist denkbar einfach: Platzieren Sie den PHP-Code für den Filter auf einer späteren Seite im Fragebogen.
Falls Frage und Filter auf derselben Seite stehen müssen, hilft Ihnen das Kapitel Fragen bei Auswahl einer bestimmten Option sofort einblenden
Im Befehl value()
steht womöglich eine falsche Variablen-Kennung.
Sie benötigen für value()
immer die Kennung einer Variable im Datensatz, nicht die Kennung einer Frage oder eines Items (auch wenn diese oft übereinstimmen).
Lösung: Die korrekten Variablen-Kennungen sind der Variablen-Übersicht zu entnehmen. Um die Kennung müssen im Befehl value() noch einfache ('
) oder doppelte Anführungszeichen („
) gesetzt werden, z.B. value('AB01_01')
.
Wird eine Frage angezeigt, obwohl der Filter sie ausblenden sollte? Oder die Frage wird sogar doppelt angezeigt? Erscheint die Warnung „Items in der nachfolgenden Frage werden auf dieser Seite schon weiter oben angezeigt. Dies führt fast zwangsläufig zu Datenverlust“?
Bitte beachten Sie, dass das „Hineinziehen“ einer Frage in die Fragebogen-Seite mittels Drag & Drop denselben Effekt hat wie die Verwendung von question()
(z.B. in einem Filter). Möglicherweise haben Sie die Frage zusätzlich zum question()
-Befehl noch in die Seite „hineingezogen“.
Lösung: Ziehen Sie die Frage wieder aus der Seite heraus (Fragen löschen oder verschieben), so dass sie nur noch mittels question()
eingebunden ist.
Das Ergebnis der Funktion value()
ist nicht das, was man erwartet hat? Oder der Filter springt nicht dorthin wo man es dachte? Filter und Programmierung sind kein Hexenwerk. Der Server wird einfach Schritt für Schritt das machen, was Sie in den PHP-Code geschrieben haben.
Um das zu verstehen, ist der Debug-Modus ungemein hilfreich: Um in den Debug-Modus zu gelangen, starten Sie den Fragebogen unter Fragebogen zusammenstellen mit dem gelben Pfeil (). Der Debug-Modus unterscheidet sich von der normalen Ansicht des Fragebogens in drei Punkten:
Die Debug-Informationen verraten u.a., was bei value()
herauskommt und wann der Fragebogen mittels goToPage()
wohin springt. In Kombination mit debug()
lässt sich auch der Inhalte von PHP-Variablen anzeigen. Entsprechen diese Informationen nicht dem, was man eigentlich erwarten würde, hat man den Fehler i.d.R. schon gefunden.
Problem noch nicht gelöst? Dann stellen Sie eine Frage im Online-Support. Die Frage sollte folgende Informationen enthalten: