Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:create:functions:looppage [14.05.2016 21:26] – [loopPage()] 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 |
| * // | * // | ||
| - | **Hinweis: | + | |
| - | ===== Beispiel | + | Falls nur ein Array als Parameter (// |
| + | |||
| + | * // | ||
| + | |||
| + | **Hinweis: | ||
| + | |||
| + | **Hinweis: | ||
| + | |||
| + | ===== 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 25: | Zeile 53: | ||
| ); | ); | ||
| shuffle($fragen); | shuffle($fragen); | ||
| - | registerVariable('fragen');</ | + | registerVariable($fragen);</ |
| <code php>// PHP-Code später im Fragebogen | <code php>// PHP-Code später im Fragebogen | ||
| Zeile 31: | 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 45: | 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, | ||