Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
de:create:functions:looptopage [23.07.2018 21:08] adminde:create:functions:looptopage [10.10.2018 09:12] – Neues Beispiel zu Frageblöcken admin
Zeile 12: Zeile 12:
   * //Wiederholungen// Die Anzahl, wie oft die Abfolge der Seiten wiederholt werden soll.   * //Wiederholungen// Die Anzahl, wie oft die Abfolge der Seiten wiederholt werden soll.
  
-**Hinweis:** Verwenden Sie die Funktion ''loopIndex()'', um auf anderen Seiten der Abfolge zu ermitteln, wie häufig die Seiten bereits wiederholt wurden.+**Hinweis:** Verwenden Sie die Funktion ''loopIndex()'', um innerhalb der Wiederholungen zu ermitteln, welche Wiederholung gerade läuft.
  
 +**Hinweis:** Die Funktion ''loopToPage()'' erlaubt die Wiederholung von gleichartigen "Frageblöcken", wobei die Fragen entsprechend oft im Fragenkatalog angelegt werden müssen. Wenn mehrere Fragen mehrfach wiederholt werden sollen, kann eine [[:de:create:multilevel]] die bessere Lösung darstellen.
  
-===== Beispiel =====+===== Beispiel: Seite mit unterschiedlichen Fragen wiederholen =====
  
 Sie möchten im Fragebogen die Seiten 5 bis 8 insgesamt 3-mal wiederholen. Dabei sollen jeweils andere Fragen angezeigt werden. Sie möchten im Fragebogen die Seiten 5 bis 8 insgesamt 3-mal wiederholen. Dabei sollen jeweils andere Fragen angezeigt werden.
Zeile 62: Zeile 63:
  
  
-===== Beispiel =====+===== Beispiel: Variable Anzahl an Wiederholungen =====
  
 Sie möchten, wie in Beispiel 1, die Seiten 5 bis 8 wiederholen und haben Seite 8 dafür die Kennung "loopend" gegeben. Vorab haben Sie auf 3 mit einer Frage vom Typ "offene Nennungen" (''ON01'') bis zu 10 Markennennungen abgefragt -- und für jede Nennung des Teilnehmers sollen nun die Seiten wiederholt werden. Sie möchten, wie in Beispiel 1, die Seiten 5 bis 8 wiederholen und haben Seite 8 dafür die Kennung "loopend" gegeben. Vorab haben Sie auf 3 mit einer Frage vom Typ "offene Nennungen" (''ON01'') bis zu 10 Markennennungen abgefragt -- und für jede Nennung des Teilnehmers sollen nun die Seiten wiederholt werden.
Zeile 152: Zeile 153:
 $set = $fragen[$id]; $set = $fragen[$id];
 question($set[2]);  // Index 2 zeigt Frage 3, denn die Zählung des Index beginnt bei 0 question($set[2]);  // Index 2 zeigt Frage 3, denn die Zählung des Index beginnt bei 0
 +</code>
 +
 +
 +===== Beispiel: Frageblöcke wiederholen =====
 +
 +Ein Block mit 5 Fragen (über 3 Seiten "blockStart" bis "blockEnd") soll für jedes Geschwister eines Teilnehmers wiederholt werden. Anschließend geht es mit der Seite "demografie" weiter.
 +
 +**Hinweis:** Dieses Beispiel ist dem ersten vergleichbar, geht aber davon aus, dass Sie für jede Wiederholung eine gleichartige Rubrik im Fragebogen vorliegen haben (beim ersten Beispiel können die Fragen einer Wiederholung aus unterschiedlichen Rubriken oder alle aus derselben stammen).
 +
 +Als Vorbereitung wurden die 5 Fragen in Rubrik "G1" angelegt und die Rubrik wurde 4-mal kopiert ("G2" bis "G5"), um Fälle bis zu 5 Geschwistern abbilden zu können. Darüber hinaus wurde in Frage GS01 abgefragt, wie viele Geschwister eine Person hat (1=ein Geschwister, 5=Fünf oder mehr Geschwister, -1=keine Geschwister).
 +
 +Auf der ersten Seite des "Fragenblocks" ("blockStart") wird zunächst die Anzahl der Geschwister ermittelt und dementsprechend ''loopToPage()'' aufgerufen.
 +
 +<code php>
 +$anzahl = value('GS01');
 +// Filter: Keine Geschwister
 +if ($anzahl < 0) {
 +  goToPage('demografie');
 +}
 +// Frageblock wiederholen
 +loopToPage('blockEnd', $anzahl);
 +// Definition der Rubriken
 +$rubriken = array('G1', 'G2', 'G3', 'G4', 'G5');
 +registerVariable($rubriken);
 +</code>
 +
 +Auf der ersten Seite werden nun die Fragen ''01'' und ''02'' aus der jeweiligen Rubrik angezeigt.
 +
 +<code php>
 +$i = loopIndex();
 +$rubrik = $rubriken[$i];
 +
 +question(id($rubrik, 1));  // Fragt G101, G201, G301, ...
 +question(id($rubrik, 2));  // Fragt G102, G202, G302, ...
 +</code>
 +
 +Solch ein Code findet sich entsprechend auf Seite 2 des Blocks, welcher die Frage ''03'' aus der Rubrik zeigt.
 +
 +<code php>
 +$i = loopIndex();
 +$rubrik = $rubriken[$i];
 +
 +question(id($rubrik, 3));  // Fragt G103, G203, G303, ...
 +</code>
 +
 +Und auf der dritten und letzten Seite schreiben wir es für die Fragen ''04'' und ''05'' etwas kompakter:
 +
 +<code php>
 +$rubrik = $rubriken[loopIndex()];
 +
 +question(id($rubrik, 4));
 +question(id($rubrik, 5));
 </code> </code>
de/create/functions/looptopage.txt · Zuletzt geändert: 10.10.2018 21:33 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