Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
de:create:transfer-responses [21.07.2018 17:49]
ncruz [Antworten in einer Folgefrage anzeigen]
de:create:transfer-responses [25.09.2018 19:59] (aktuell)
admin Code vereinfacht mittels id()
Zeile 101: Zeile 101:
 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 116:
   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.txt · Zuletzt geändert: 25.09.2018 19:59 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