====== Antwort in späteren Fragen verwenden ======

Eine der größten Vorteile eines elektronischen Fragebogens ist, dass er dynamisch auf Antworten des Teilnehmer reagieren kann. Dieses Kapitel liefert einen kurzen Überblick.


===== Filterfragen =====

Filterfragen -- das heißt im einfachsten Fall, dass abhängig von der Antwort des Teilnehmers ("Nutzen Sie Facebook?") im späteren Verlauf des Fragebogens Fragen/Items angezeigt oder ausgeblendet werden. In einigen Fällen wird der Teilnehmer auch von der weiteren Teilnahme ausgeschlossen (Screenout).

  * [[:de:create:filters]]\\ Ausführliche Einführung in Filterfragen
  * ''[[:de:create:functions:pagestop]]''\\ Die Referenz dieser Funktion enthält ein Beispiel für einen Screenout-Filter.


==== Ausgewählte Items zeigen ====

Ein Spezielfall von Filterfragen ist die Übernahme ausgewählter Items in eine andere Frage.

Beispiel: In einer Mehrfachauswahl werden jene Online-Dienste abgefragt, die ein Teilnehmer nutzt. Später soll dann dann in einer Skala abgefragt werden, wie häufig er die ausgewählten Dienste nutzt.

  * [[:de:create:filter-items]]


==== Filter auf der gleichen Seite ====

Mitunter möchte man nicht warten, bis der Teilnehmer auf "Weiter" klickt, sondern bei der Auswahl einer Antwort soll sofort eine andere Frage ein-/ausgeblendet werden.

  * [[:de:create:dynamic]]
  * [[:de:create:questions:extselect]]\\ Ein Fragetyp, der automatisch untergeordnete Optionen zu einer Option einblenden kann
  * [[:de:create:questions:assignment]]\\ Bei diesem Fragetyp können weitere Items in Abhängigkeit der Antwort automatisch ein-/ausgeblendet werden.


===== Antworten anzeigen =====

Der Teilnehmer hat eine Antwort ausgewählt ([[:de:create:questions:select]]) oder eingetippt ([[:de:create:questions:text]], [[:de:create:questions:suggest]]) -- und diese Antwort soll später im Fragebogen im Text, in einer Frage oder in Items auftauchen.

Mit [[:de:create:placeholders|Platzhaltern]] können Textschnipsel an beliebiger Stelle dynamisch ausgetauscht werden. Sobald ein Platzhalter definiert wurde, steht es im gesamten folgenden Fragebogen zur Verfügung.

  * [[:de:create:transfer-responses]]


===== Mehrere Befragungswellen =====

Bei mehrwelligen Befragungen sollten dem Teilnehmer unter Umständen Antworten aus einer früheren Befragungswelle angezeigt werden. Die Umsetzung hängt davon ab, wie man die mehrwellige Erhebung technisch gestaltet hat.

  * **Unterbrecherseiten** -- dokumentiert in der Referenz zu ''[[:de:create:functions:mailresume]]''\\ Wenn es sich technisch um einen Fragebogen handelt, der für den Teilnehmer einfach nur in mehreren Etappen angezeigt wird, so können ''[[:de:create:functions:value]]'' und ''[[:de:create:functions:replace]]'' wie gewohnt verwendet werden. In einer Welle definierte Platzhalter stehe auch in späteren Wellen zur Verfügung.
  * **Unterschiedliche Fragebögen** -- unter Verwendung von [[:de:survey:mailing|Serienmails]]\\ Sollen Daten zwischen unterschiedlichen Interviews übermittelt werden, funktioniert dies über die [[:de:create:databank]]. Dazu müssen die relevanten Angaben in der ersten Erhebung mittels ''[[:de:create:functions:dbset]]'' gespeichert und in späteren Erhebungen mittels ''[[:de:create:functions:dbget]]'' abgerufen werden.

Das nachfolgende Beispiel zeigt die Übermittlung von Antworten aus Interview A ins spätere Interview B. Voraussetzung ist, dass die Teilnehmer mittels [[:de:survey:mailing|Serienmails]] zu beiden Befragungswellen eingeladen wurden -- oder dass sie anderweitig personalisierte Links mit einer Seriennummer erhalten ([[:de:survey:url]]).

Im ersten Fragebogen sollen die Antworten auf die Auswahlfrage ''AF01'' und die offene Texteingabe ''TX01_01'' für die spätere Verwendung abgespeichert werden. Als Schlüssel zum Speichern wird dabei die Teilnehmerkennung aus Variable ''SERIAL'' verwendet ([[:de:results:variables]], ''[[:de:create:functions:caseserial]]'').

<code php>
$key = caseSerial();
$data = array(
  value('AF01', 'free'),
  value('TX01_01')
);
dbSet($key, $data);
</code>

Im zweiten Fragebogen werden diese Daten dann mittels ''dbGet()'' wieder abgerufen und mittels ''replace()'' in Platzhalter geschrieben, die dann in Frage-/Itemtexten verwendet werden können:

<code php>
$key = caseSerial();
$data = dbGet($key);
replace('%auswahl%', $data[0]);
replace('%texteingabe%', $data[1]);
</code>

**Tipp:** Zum Verständnis des PHP-Codes ist das Kapitel [[:de:create:array]] hilfreich.

**Tipp:** Falls Sie die Datenbank für Inhalte im Befragungsprojekt noch anderweitig nutzen möchten, stellen Sie dem Schlüssel einfach ein Präfix voran. Ersetzen Sie die Zeile mit ''$key ='' in beiden Codes etwa durch...

<code php>
$key = 'DT-'.caseSerial();
</code>