====== repeatPage() ======

''void **repeatPage**([string //Textbaustein//])''

Die Funktion ''repeatPage()'' zeigt die vorhergehende Seite erneut an. Optional wird ein Textbaustein im Stil einer Fehlermeldung angezeigt. Anwendung findet die Funktion v.a. für [[:de:create:checks#individuelle_antwort-pruefung|individuelle Antwortprüfungen]].

  * //Textbaustein// (optional)\\ Falls die Kennung eines Textbausteins angegeben wird (Anzulegen unter **Textbausteine und Beschriftung**), so wird dieser Textbaustein als Hinweis zu Beginn der wiederholten Seite angezeigt. Der Textbaustein wird dabei genauso formatiert wie andere Meldungen zu fehlenden/fehlerhaften Angaben.

Diese Funktion ist vor allem dann sinnvoll, wenn die Angaben des Befragten auf Ihre Gültigkeit hin überprüft werden. Viele Überprüfungen kann man direkt in der Frage oder dem Item aktivieren (z.B. prüfen, ob alle Items einer Skala ausgefüllt wurden oder ob ein bestimmtes Textformat eingehalten wurde), aber manchmal muss man die Prüfung mittels PHP-Code selbst programmieren. Falls diese Prüfung negativ ausfällt, kann man mit ''text()'' einen Textbaustein mit passender Fehlermeldung anzeigen und den Teilnehmer anschließend mit ''repeatPage()'' zur vorigen Seite zurück schicken.

**Wichtig:** Damit repeatPage() korrekt funktioniert, muss die Prüfung auf ungültige Antworten zu Beginn der Fragebogenseite eingebaut werden, welche auf die geprüfte Frage folgt! 


===== Beispiel 1 =====

Im folgenden Beispiel soll der Befragte auf Seite 5 des Fragebogens genau eine von drei Texteingaben (''AB01_01'', ''AB01_02'' oder ''AB01_03'') ausfüllen. Im Textbaustein "error_1von3" steht das noch einmal. Auf der Folgeseite, Seite Nr. 6, wird zur Prüfung folgender PHP-Code eingefügt:

<code php>
$answered = getItems('AB01', 'valid');
if (count($answered) != 1) {
  repeatPage('error_1von3');
}
</code>


===== Beispiel 2 =====

Mithilfe von repeatPage() ist es ebenso möglich, einmalig nachzuhaken, wenn der Befragte eine Frage nicht beantwortet. Im folgenden Beispiel wird überprüft, ob in der Auswahlfrage ''BB01'' eine gültige Option gewählt wurde und ob die Items der Skala ''BC01'' vollständig beantwortet wurden.

Wenn eine der Fragen nicht vollständig beantwortet wurde, wird der Textbaustein "error_missing" angezeigt und die Seite wiederholt. Allerdings nur einmalig, was durch ''registerVariable()'', die Variable ''$rPG6'' und das ''isset()'' zu Beginn sichergestellt wird.

Wenn sich die Fragen auf Seite 6 befinden, muss der folgende PHP-Code auf Seite 7 ganz oben platziert werden.

<code php>
// Nur wenn $repeatedPG6 noch nicht gesetzt ist, wird geprüft
if (!isset($rPG6)) {
  // Prüfen, ob in der Auswahl BB01 die Antwort fehlt (Code -9)
  $failBB01 = (value('BB01') == -9);
  // Prüfen, ob in der Skala BC01 Items unbeantwortet sind
  $failBC01 = (count(getItems('BC01', 'missing')) > 0);

  if ($failBB01 or $failBC01) {
    // Merken, dass Seite 6 wiederholt wird/wurde
    $rPG6 = true;
    registerVariable('rPG6');
    // Vorhergehende Seite erneut anzeigen
    repeatPage('error_missing');
  }
}
</code>