Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
de:create:transfer-responses [01.09.2015 21:57] – angelegt adminde:create:transfer-responses [10.05.2023 16:47] (aktuell) – [Antworten in einer Folgefrage anzeigen] admin
Zeile 1: Zeile 1:
-====== Textantworten in eine Folgefrage übernehmen ======+====== Antworten in einer Folgefrage anzeigen ======
  
-Mitels [[::de:create:placeholders]] ist es möglich, eine offene Antwort des Teilnehmers an anderer Stelle im Fragebogen zu verwenden. In diesem Kapitel finden Sie einige Beispiele.+Mittels [[::de:create:placeholders|Platzhaltern]] ist es möglich, eine geschlossene oder offene Antwort des Teilnehmers an anderer Stelle im Fragebogen anzuzeigen (auch als "Piping" bezeichnet). 
 + 
 +**Beispiel:** Der Teilnehmer wählt zu Beginn des Fragebogens aus, welches Online-Netzwerk er persönlich am häufigsten verwendet. In späteren Fragen soll dann der Names des Netzwerks (z.B. "diaspora*") in Frage- und Itemtexten erscheinen (z.B. "Wie häufig nutzt du diaspora* an einem üblichen Werktag?")
  
 **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 [[:de:create:filter-items]]. **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 [[:de:create:filter-items]].
  
 **Hinweis:** Falls Sie bisher noch nicht mit Filtern und PHP-Code gearbeitet haben, lesen Sie vorab bitte die Kapitel [[:de:create:php]] und [[:de:create:filter-solving]]. **Hinweis:** Falls Sie bisher noch nicht mit Filtern und PHP-Code gearbeitet haben, lesen Sie vorab bitte die Kapitel [[:de:create:php]] und [[:de:create:filter-solving]].
 +
 +**Tipp:** Das Vorgehen für eine Auswahl mit "Sonstiges"-Eingabefeld wird im Video-Tutorial [[https://www.soscisurvey.de/de/screencast#extra5|Item Piping]] Schritt für Schritt erklärt.
  
  
-===== Einzelne Antwort verwenden =====+===== Offene Textantwort 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. 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.
Zeile 38: Zeile 42:
 replace('%moderator%', $name); replace('%moderator%', $name);
 </code> </code>
 +
 +
 +===== Geschlossene Antworten verwenden =====
 +
 +Die Verwendung geschlossener Antworten funktioniert genauso, wie bei offenen Antworten.
 +
 +Das folgende Beispiel geht davon aus, dass der Teilnehmer in Auswahlfrage ''SN01'' das Onlinenetzwerk ausgewählt hat, das er am häufigsten verwendet. Folgender PHP-Code (platziert auf der folgenden Seite oder später) sorgt dafür, dass der Platzhalter ''%sns%'' anschließend immer durch den Namen des ausgewählten Netzwerks ersetzt wird.
 +
 +<code php>
 +replace('%sns%', 'SN01', 'response');
 +</code>
 +
 +Würde man die Antwort auf ''SN01'' mittels ''[[:de:create:functions:value]]'' auslesen, bekommt man zunächst den numerischen Antwort-Code. Möchte man den Text der Antwortoption zur weiteren Verarbeitung auslesen, kann man entweder den Befehl ''[[:de:create:functions:getitemtext]]'' verwenden -- oder wesentlich einfacher -- bei ''value()'' als zweiten Parameter '''label''' angeben.
 +
 +<code php>
 +$antwort = value('SN01', 'label');
 +html('<h1>'.$antwort.'</h1>');
 +</code>
 +
 +Eine Sonderrolle nehmen Mehrfachauswahl-Fragen ein. Hier kann man entweder die einzelnen Auswahloptionen betrachten (jede wird durch eine eigene Variable repräsentiert, vgl. **Variablen-Übersicht**) oder die gesamte Frage.
 +
 +  * Der Befehl ''value('MA01')'' angewendet auf die Mehrfachauswahl ''MA01'' liefert nicht (!) den Code der ersten ausgewählte Option, sondern die Anzahl der ausgewählten (nicht-exklusiven) Optionen.
 +  * Der Befehl ''value('MA01', 'label')'' liefert eine Komma-getrennte Liste der ausgewählten Optionen. Gleiches gilt für die Verwendung von ''replace('%platzhalter%', 'MA01', 'response')''.
 +
 +
 +===== Sonstiges-Eingabefelder =====
 +
 +Verwendet man eine Auswahlfrage mit einer offenen Residualkategorie "Sonstiges: %%___%%", dann funktioniert ''replace('%sns%', 'SN01', 'response')'' weiterhin. Wählt der Teilnehmer eine der vorgegeben Auswahloptionen, wird der Platzhalter durch diese ersetzt. Wählt er eine Auswahloption mit offenen Eingabefeld, so wird der Platzhalter durch die Texteingabe des Teilnehmers ersetzt.
 +
 +<code php>
 +replace('%sns%', 'SN01', 'response');
 +</code>
 +
 +Die Funktion ''value()'' ist ein wenig strenger. ''value('SN01', 'label')'' liefert den Text "Sonstiges:". Gibt man hingegen als dritten Parameter '''free''' an (''value('SN01', 'free')''), so erhält man entweder die ausgewählte Option oder -- falls eine Option mit offenen Eingabefeld gewählt wurde -- die offene Eingabe des Teilnehmers.
  
  
Zeile 65: Zeile 103:
 Der folgende PHP-Code liest mittels ''[[:de:create:functions: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. Der folgende PHP-Code liest mittels ''[[:de:create:functions: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"). +<code php>
- +
-^Offene Texteingabe^Offene Nennungen^ +
-|<code php>+
 $frage = 'TX01'; $frage = 'TX01';
 $items = array(); $items = array();
 for ($i=1; $i<=10; $i++) { for ($i=1; $i<=10; $i++) {
-  $itemID = $frage.'_'.sprintf('%02d', $i);+  $itemID = id($frage, $i);
   $antwort = value($itemID);   $antwort = value($itemID);
   if (trim($antwort) != '') {   if (trim($antwort) != '') {
Zeile 83: Zeile 118:
   question('FF01', $items);   question('FF01', $items);
 } }
-</code>|<code php> +</code>
-$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); +
-+
-</code>|+
  
-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'').+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 [[:de:create:filter-solving]] verwiesen. **Hinweis:** Sollte der PHP-Code nicht das gewünschte Ergebnis liefern, sei nochmals auf das Kapitel [[:de:create:filter-solving]] 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