Übersetzungen dieser Seite:
 

Dies ist eine alte Version des Dokuments!


Textantworten in eine Folgefrage übernehmen

Mitels Platzhalter ist es möglich, eine offene Antwort des Teilnehmers an anderer Stelle im Fragebogen zu verwenden. In diesem Kapitel finden Sie einige Beispiele.

Hinweis: Falls Sie in einer Folgefrage nur bestimmte Skalenitems oder Auswahloptionen in Abhängigkeit von den Antworten des Teilnehmers anzeigen möchten, lesen Sie bitte Items in eine andere Frage übernehmen.

Hinweis: Falls Sie bisher noch nicht mit Filtern und PHP-Code gearbeitet haben, lesen Sie vorab bitte die Kapitel Einführung in PHP-Code und Problemlösung bei Filterfragen.

Einzelne Antwort verwenden

Der Teilnehmer hat auf Seite 2 in einem offenen Texteingabefeld (Kennung TX01_01) den Namen eines Fernsehmoderators genannt. Mittels Antwortprüfung wurde sichergestellt, dass der Teilnehmer auch etwas eingetragen hat. Der angegebene Name soll nun in weiteren Fragetexten oder Skalenitems verwendet werden.

Zunächst wird mit replace() ein Platzhalter für den Namen vorbereitet, z.B. %moderator. Dazu platzieren Sie auf einer Fragebogen-Seite nach der Texteingabefrage (z.B. im Beispiel auf Seite 3 oder später) folgenden PHP-Code:

replace('%moderator%', 'TX01_01', 'response');

Dieser Platzhalter kann nun an beliebiger Stelle im Fragebogen verwendet werden – natürlich erst ab dort, wo er mittels PHP-Code vorbereitet wurde. So könnte der Fragetext einer Frage auf Seite 3 etwa lauten:

Bitte beurteilen Sie <strong>%moderator%</strong> in Hinblick auf die folgenden Eigenschaften.

Hinweis: Es ist mittels replace() nicht möglich, die Eingabe des Teilnehmers direkt auf derselben Fragebogenseite anzuzeigen. Dafür ist JavaScript erforderlich.

Hinweis: Um die korrekte Funktion zu testen, müssen Sie den Fragebogen von Beginn an starten – oder zumindest ab der Seite mit der offenen Texteingabe, wo der Name abgefragt wird (im Beispiel Seite 2).

Tipp: Ist ein Platzhalter erst einmal vorbereitet, behält er seine Gültigkeit auch auf späteren Seiten im Fragebogen. Es ist nicht erforderlich, den PHP-Code auf jeder Seite zu wiederholen.

Tipp: Mit dem oben beschriebenen PHP-Code können auch geschlossene Antworten (z.B. aus einer Auswahlfrage) in Folgefragen übernommen werden.

Tipp: Alternativ kann die Angabe des Teilnehmers mittels value() ausgelesen werden und anschließend an replace() übergeben werden.

$name = value('TX01_01');
replace('%moderator%', $name);

Mehrere offene Antworten übernehmen

Dem Teilnehmer wird eine Frage vom Typ „Offene Texteingabe“ („TX01“) oder „Offene Nennungen“ („TX02“) angezeigt. Die Frage erlaubt bis zu 10 Antworten. Nun sollen in einer Folgefrage (z.B. Mehrfachauswahl, Rangordnung, Skala) die Antworten als Items bzw. Optionen angezeigt werden.

Die Schwierigkeit in diesem Beispiel besteht darin, dass der Teilnehmer evtl. nur einen Teil der Eingabefelder ausfüllt. Die Folgefrage darf also nur die entsprechenden Items/Optionen anzeigen. Außerdem wäre es müßig, 10-mal redirect() zu schreiben. Eine FOR-Schleife erledigt die Wiederholung.

Damit es mit der Folgefrage (z.B. „FF01“) funktioniert, müssen Sie diese wie folgt anlegen: Die Frage muss genauso viele Items/Optionen haben, wie Texteingaben möglich sind (im Beispiel 10). Und als Texte für die Items/Optionen werden Platzhalter verwendet, z.B. %text1% bis %text10%.

%text1%
%text2%
%text3%
%text4%
%text5%
%text6%
%text7%
%text8%
%text9%
%text10%

Tipp: Sie können neben dem Platzhalter natürlich noch weiteren Text verwenden, z.B. „Bewertung %text1%“.

Der folgende PHP-Code liest mittels value() alle 10 möglichen Eingabefelder aus, überprüft, ob etwas eingetragen wurde, bereitet die Platzhalter %text1% bis %text10% vor und zeigt die Frage FF01 mit den passenden Items/Optionen an.

Wichtig: Der PHP-Code für „Offene Texteingabe“ und „Offene Nennungen“ unterscheidet sich geringfügig in Zeile 4, weil die Variablen nach einem anderen Schema benannt werden („TX01_01“ vs. „TX02x01“).

Offene TexteingabeOffene Nennungen
$frage = 'TX01';
$items = array();
for ($i=1; $i<=10; $i++) {
  $itemID = $frage.'_'.sprintf('%02d', $i);
  $antwort = value($itemID);
  if (trim($antwort) != '') {
    replace('%text'.$i.'%', $antwort);
    $items[] = $i;
  }
}
// Folgefrage anzeigen
if (count($items) > 0) {
  question('FF01', $items);
}
$frage = 'TX02';
$items = array();
for ($i=1; $i<=10; $i++) {
  $itemID = $frage.'x'.sprintf('%02d', $i);
  $antwort = value($itemID);
  if (trim($antwort) != '') {
    replace('%text'.$i.'%', $antwort);
    $items[] = $i;
  }
}
// Folgefrage anzeigen
if (count($items) > 0) {
  question('FF01', $items);
}

Zur Erklärung des PHP-Codes: Der IF-Filter am Ende sorgt dafür, dass die Folgefrage übersprungen wird, wenn der Teilnehmer gar kein Eingabefeld ausgefüllt hat. Die Funktion trim() entfernt Leerzeichen am Anfang und Ende des eingegebenen Textes, sodass ein paar Leerzeichen im Textfeld nicht als gültige Antwort interpretiert werden. Die Funktion sprintf() mit dem Parameter %02d sorgt dafür, dass eine Zahl zweistellig mit führender Null angezeigt wird (also z.B. 01 statt nur 1).

Hinweis: Sollte der PHP-Code nicht das gewünschte Ergebnis liefern, sei nochmals auf das Kapitel Problemlösung bei Filterfragen verwiesen.

de/create/transfer-responses.1441137453.txt.gz · Zuletzt geändert: 01.09.2015 21:57 von admin
 
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