Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision |
de:create:transfer-responses [09.12.2016 10:18] – [Antworten in einer Folgefrage anzeigen] admin | de:create:transfer-responses [25.09.2018 19:59] – Code vereinfacht mittels id() admin |
---|
====== 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. | 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?") |
===== 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 Auswahloptino 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 Teilnehmer ersetzt. |
| |
<code php> | <code php> |
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) != '') { |
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. |