Übersetzungen dieser Seite:
 

Dies ist eine alte Version des Dokuments!


Problemlösung bei Filterfragen

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.

Die häufigsten Probleme

Ein Filter im Fragebogen besteht in aller Regel aus 2 Teilen:

  1. Eine Filterfrage, welche der Teilnehmer beantwortet. Diese Antwort bestimmt, wie es im Fragebogen weiter geht, z.B. ob eine andere Frage angezeigt wird oder nicht.
  2. PHP-Code, der eigentliche Filter, welcher genau festlegt, was passiert.

Top 1

Ü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

Top 2

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'). penis

Top 3

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.

Fehler finden

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 (Fragebogen im Debug-Modus starten). Der Debug-Modus unterscheidet sich von der normalen Ansicht des Fragebogens in drei Punkten:

  1. Bei jeder Frage steht in eckigen Klammern deren Kennung.
  2. Rechts oben steht ein Knopf „Debug-Informationen“. Klickt man diesen an, werden Informationen zur Verarbeitung der aktuellen Fragebogen-Seite angezeigt – diese sind enorm hilfreich zur Fehlersuche in Filtern (Fragebogen-Probleme lösen).
  3. SoSci Survey zeigt im Fragebogen Hinweise und Warnungen, wenn möglicherweise ein Problem vorliegt. Diese Hinweise und Warnungen bekommt ein Teilnehmer (im Gegensatz zu Fehlern) nicht zu sehen.

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.

Support zu Filtern

Problem noch nicht gelöst? Dann stellen Sie eine Frage im Online-Support. Die Frage sollte folgende Informationen enthalten:

  1. Auf Basis welcher Filterfrage (Typ und Kennung) soll gefiltert werden?
    1. Auf welcher Seite steht die Filterfrage?
    2. Welche Variable(n) und Antwortcodes hat die Filterfrage (Variablen-Übersicht)?
  2. Auf welcher/n Seite/n stehen die Inhalte, die gefilter werden sollen?
  3. Welcher Filter (PHP-Code) wurde bereits ausprobiert und hat nicht funktioniert?
    1. Auf welcher Seite steht der PHP-Code des Filters?
    2. Unter welcher/n Bedingung/en soll was passieren?
    3. Was zeigt die Debug-Information auf der Seite mit dem Filter?
de/create/filter-solving.1510839342.txt.gz · Zuletzt geändert: 16.11.2017 14:35 von tahsin.bilac
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki