Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:create:transfer-responses [09.01.2017 14:14] – [Sonstiges-Eingabefelder] karriereentscheidungde:create:transfer-responses [10.05.2023 16:47] (aktuell) – [Antworten in einer Folgefrage anzeigen] admin
Zeile 1: Zeile 1:
 ====== Antworten in einer Folgefrage anzeigen ====== ====== Antworten in einer Folgefrage anzeigen ======
  
-Mittels [[::de:create:placeholders|Platzhaltern]] ist es möglich, eine geschossene oder offene Antwort des Teilnehmers an anderer Stelle im Fragebogen anzuzeigen (auch als "Piping" bezeichnet).+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?") **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?")
Zeile 8: Zeile 8:
  
 **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.
  
  
Zeile 67: Zeile 69:
 ===== Sonstiges-Eingabefelder ===== ===== 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 Teilnehmer ersetzt.+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> <code php>
Zeile 101: 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 119: 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.1483967665.txt.gz · Zuletzt geändert: 09.01.2017 14:14 von karriereentscheidung
 
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