Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
de:create:functions:looppage [27.07.2019 22:45] – admin | de:create:functions:looppage [21.11.2022 20:06] (aktuell) – Workaround für setPageOrder() admin | ||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
'' | '' | ||
+ | |||
+ | '' | ||
Wiederholt die Seite -- beginnend mit dem // | Wiederholt die Seite -- beginnend mit dem // | ||
Zeile 11: | Zeile 13: | ||
* // | * // | ||
- | Falls nur ein Parameter (// | + | Falls nur ein numerischer |
* // | * // | ||
+ | |||
+ | |||
+ | Falls nur ein Array als Parameter (// | ||
+ | |||
+ | * // | ||
**Hinweis: | **Hinweis: | ||
Zeile 19: | Zeile 26: | ||
**Hinweis: | **Hinweis: | ||
- | ===== Beispiel | + | ===== Anwendungsbeispiele |
+ | |||
+ | ==== Alle Fragen einer Rubrik in zufälliger Abfolge ==== | ||
+ | |||
+ | <code php> | ||
+ | if (!isset($fragen)) { | ||
+ | // Liste aller Fragen aus Rubrik RS | ||
+ | $fragen = getQuestions(' | ||
+ | // Die Liste der Fragen (Array) mischen und zwischenspeichern | ||
+ | shuffle($fragen); | ||
+ | registerVariable($fragen); | ||
+ | } | ||
+ | // Alle Kennungen aus der Liste $fragen abarbeiten | ||
+ | $frage = loopPage($fragen); | ||
+ | question($frage); | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== 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 34: | Zeile 59: | ||
question($fragen[$i]); | question($fragen[$i]); | ||
</ | </ | ||
+ | |||
+ | In diesem Beispiel wird die Liste der Fragen bereits weiter vorne im Fragebogen definiert und gemischt. Dadurch entfällt die IF-Konstruktion mit '' | ||
+ | |||
+ | |||
+ | ==== Fragen in zufälliger Abfolge mit Verweildauer ==== | ||
**Hinweis: | **Hinweis: | ||
+ | |||
+ | <code php>// PHP-Code auf einer der ersten Seiten im Fragebogen | ||
+ | // Liste mit Fragen erstellen, mischen und zwischenspeichern | ||
+ | $fragen = array( | ||
+ | ' | ||
+ | ' | ||
+ | ); | ||
+ | shuffle($fragen); | ||
+ | registerVariable($fragen);</ | ||
<code php>// PHP-Code später im Fragebogen - Seite 21 | <code php>// PHP-Code später im Fragebogen - Seite 21 | ||
Zeile 48: | Zeile 87: | ||
question($fragen[5]); | question($fragen[5]); | ||
</ | </ | ||
+ | |||
+ | |||
+ | ===== Workaround for Seitenabfolge ===== | ||
+ | |||
+ | Innerhalb einer Seitenabfolge, | ||
+ | |||
+ | 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 " | ||
+ | |||
+ | <code php> | ||
+ | setPageOrder([' | ||
+ | </ | ||
+ | |||
+ | Um zu ermitteln, in welcher Wiederholung sich die Seite gerade befindet, können Sie die Funktion '' | ||
+ | |||
+ | Hier könnte man einfach 3 subtrahieren. Aber wenn die Wiederholung an einer anderen Stelle im Fragebogen erscheint, können Sie mittels '' | ||
+ | |||
+ | <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; | ||
+ | </ | ||
+ | |||
+ | Sollten Sie mehrere (unterschiedliche) Seiten wiederholen, |