Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
de:create:functions:looppage [17.09.2019 14:01] adminde:create:functions:looppage [21.11.2022 20:06] (aktuell) – Workaround für setPageOrder() admin
Zeile 26: Zeile 26:
 **Hinweis:** Beispiel-Code zur Verwendung finden Sie in der Anleitung zu ''[[looptopage]]''. **Hinweis:** Beispiel-Code zur Verwendung finden Sie in der Anleitung zu ''[[looptopage]]''.
  
-===== Beispiel: Alle Fragen einer Rubrik in zufälliger Abfolge =====+===== Anwendungsbeispiele ===== 
 + 
 +==== Alle Fragen einer Rubrik in zufälliger Abfolge ====
  
 <code php> <code php>
Zeile 42: Zeile 44:
  
  
-===== Beispiel: Fragen in zufälliger Abfolge präsentieren II =====+==== Fragen in zufälliger Abfolge präsentieren II ====
  
 <code php>// PHP-Code auf einer der ersten Seiten im Fragebogen <code php>// PHP-Code auf einer der ersten Seiten im Fragebogen
Zeile 61: Zeile 63:
  
  
-===== Beispiel: Fragen in zufälliger Abfolge mit Verweildauer =====+==== Fragen in zufälliger Abfolge mit Verweildauer ====
  
 **Hinweis:** Weil dieselbe Seite immer wieder angezeigt wird, werden die Antwortzeiten für alle Wiederholungen addiert. Falls Sie die Bearbeitungszeiten getrennt erheben möchten, müssen Sie anstatt ''loopPage()'' mehrere Seiten verwenden. **Hinweis:** Weil dieselbe Seite immer wieder angezeigt wird, werden die Antwortzeiten für alle Wiederholungen addiert. Falls Sie die Bearbeitungszeiten getrennt erheben möchten, müssen Sie anstatt ''loopPage()'' mehrere Seiten verwenden.
Zeile 85: Zeile 87:
 question($fragen[5]); question($fragen[5]);
 </code> </code>
 +
 +
 +===== Workaround for Seitenabfolge =====
 +
 +Innerhalb einer Seitenabfolge, die mittels ''setPageOrder()'' definiert wurde, kann ''loopPage()'' nicht verwendet werden. Dies würde die Seitenabfolge abbrechen.
 +
 +Wenn Sie eine Seite innerhalb einer Seitenabfolge wiederholen möchten, dann legen Sie diese Wiederholung bereits in der Seitenabfolge fest. Im folgenden Beispiel wird z.B. die Seite mit der Kennung "loop" viermal wiederholt:
 +
 +<code php>
 +setPageOrder(['a1', 'a2', 'a3', 'loop', 'loop', 'loop', 'loop', 'b3', 'b2']);
 +</code>
 +
 +Um zu ermitteln, in welcher Wiederholung sich die Seite gerade befindet, können Sie die Funktion ''loopIndex()'' verwenden. Diese zeigt an, an welcher Stelle der Seitenabfolge Sie gerade sind, wobei mit 0 zu zählen begonnen wird. Auf der Seite "loop" würde sie also die Wert 3, 4, 5 und 6 bekommen.
 +
 +Hier könnte man einfach 3 subtrahieren. Aber wenn die Wiederholung an einer anderen Stelle im Fragebogen erscheint, können Sie mittels ''registerVariable()'' arbeiten. Der folgende Code auf der Seite "loop" würde mit ''$i'' die Wert 0 bis 3 liefern, egal an welcher Stelle die Seite wiederholt wird.
 +
 +<code php>
 +// Die aktuelle Position ermitteln
 +$pos = loopIndex();
 +// Prüfen, ob wir die erste Position dieser Seite schon kennen
 +if (!isset($firstIndex)) {
 +  $firstIndex = $pos;
 +  registerVariable($firstIndex);
 +}
 +// Die Different in Variable $i speichern
 +// dies entspricht in anderen Codes dem $i = loopPage(...)
 +$i = $pos - $firstIndex;
 +</code>
 +
 +Sollten Sie mehrere (unterschiedliche) Seiten wiederholen, müssen Sie statt ''$firstIndex'' jeweils einen anderen Variablennamen verwenden.
de/create/functions/looppage.1568721688.txt.gz · Zuletzt geändert: 17.09.2019 14:01 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