Inhaltsverzeichnis

loopPage()

int loopPage(int Startwert, int Endwert, [int Inkrement])

int loopPage(int Wiederholungen)

mixed loopPage(array Elemente)

Wiederholt die Seite – beginnend mit dem Startwert – in einer Schleife so oft, bis der Endwert erreicht ist. Der jeweils aktuelle Wert wird zurückgegeben.

Falls nur ein numerischer Parameter (Wiederholungen) angegeben ist, wird die Seite so oft wie angegeben wiederholt. Die Zählvariable beginnt in diesem Fall mit 0.

Falls nur ein Array als Parameter (Elemente) angegeben ist, wird die Seite für jedes Element des Arrays einmal angezeigt und die Funktion loopPage() gibt jeweils das Element des Arrays zurück.

Hinweis: Um mehrere Seiten zu wiederholen, verwenden Sie loopToPage().

Hinweis: Beispiel-Code zur Verwendung finden Sie in der Anleitung zu loopToPage().

Anwendungsbeispiele

Alle Fragen einer Rubrik in zufälliger Abfolge

if (!isset($fragen)) {
  // Liste aller Fragen aus Rubrik RS
  $fragen = getQuestions('RS');
  // 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

// PHP-Code auf einer der ersten Seiten im Fragebogen
// Liste mit Fragen erstellen, mischen und zwischenspeichern
$fragen = array(
  'AB01', 'AB02', 'AB03',
  'AB04', 'AB05', 'AB06'
);
shuffle($fragen);
registerVariable($fragen);
// PHP-Code später im Fragebogen
$i = loopPage(6);  // 6 Wiederholungen - äquivalent zu loopPage(0,5)
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 isset(), welche im obigen Beispiel ein erneutes Mischen der Liste verhindert.

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.

// PHP-Code auf einer der ersten Seiten im Fragebogen
// Liste mit Fragen erstellen, mischen und zwischenspeichern
$fragen = array(
  'AB01', 'AB02', 'AB03',
  'AB04', 'AB05', 'AB06'
);
shuffle($fragen);
registerVariable($fragen);
// PHP-Code später im Fragebogen - Seite 21
question($fragen[0]);
 
// PHP-Code auf Seite 22
question($fragen[1]);
 
// u.s.w.
 
// PHP-Code auf Seite 26
question($fragen[5]);

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:

setPageOrder(['a1', 'a2', 'a3', 'loop', 'loop', 'loop', 'loop', 'b3', 'b2']);

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.

// 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, müssen Sie statt $firstIndex jeweils einen anderen Variablennamen verwenden.