====== markFail() ======

''void **markFail**(string //VariablenKennung//)''

Die Funktion ''markFail()'' wird in Verbindung mit einer individuellen Antwortprüfung ([[:de:create:checks#individuelle_antwort-pruefung|Antworten prüfen: Individuelle Antwort-Prüfung]]) und der Funktion ''[[:de:create:functions:repeatpage|repeatPage()]]'' verwendet. Damit kann ein Eingabefeld so markiert werden, dass dem Teilnehmer erkennbar ist, wo die Angaben nicht korrekt sind.

  * //VariablenKennung//\\ Die Kennung einer Variable im Datensatz (s. **Variablen-Übersicht**).

Die Verwendung von ''markFail()'' hat zwei Effekte: Erstens wird das Eingabefeld optisch hervorgehoben und zweitens wird die Antwort bei der Berechnung der Variablen ''MISSING'' und ''MISSREL'' ([[:de:results:variables|Zusätzliche Variablen in der Datenausgabe]]) als fehlende Antwort gezählt. Letzteres ist vor allem dann relevant, wenn ''markFail()'' ohne ''repeatPage()'' verwendet wird.

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

Im folgenden Beispiel wird auf Seite 1 des Fragebogens abgefragt, wie viele Stunden und Minuten eine Person pro Tag fernsieht, und zwar mit den offenen Texteingabefeldern "AB01_01" und "AB01_02". Zusätzlich gibt es eine Mehrfachauswahl-Option "Ich sehe gar nicht fern" mit der Kennung "AB02_01".

Auf Seite 2 wird nun geprüft, ob in einem der Texteingabefelder etwas steht -- oder ob das Auswahlfeld markiert ist. Wenn dies alles nicht zutrifft, wird die Seite erneut angezeigt, der Textbaustein "missing_tv" als Fehlermeldung angezeigt und die Eingabefelder werden hervorgehoben.

<code php>
if (
  (trim(value('AB01_01')) == '') and
  (trim(value('AB01_02')) == '') and
  (value('AB02_01') != 2)
) {
  markFail('AB01_01');
  markFail('AB01_02');
  repeatPage('missing_tv');
}
</code>


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

Auch hier werden Stunden, Minuten und eine Residualoption abgefragt wie in Beispiel 1. Diesmal allerdings in einer kombinierten Frage für 10 verschiedene Medienangebote. Die Stunden werden in der ersten Spalte (Frage "AC01") abgefragt, die Minuten in der zweiten Spalte ("AC02") und als dritte Spalte muss eine Mehrfachauswahl "AC03" herhalten.

Auf der folgenden (!) Seite wird nun mittels PHP-Code überprüft, ob in jeder Zeile eine Angabe gemacht oder das Auswahlfeld markiert wurde. Falls nicht, wird die Seite erneut angezeigt und die Zeilen mit fehlenden Angaben werden hervorgehoben.

<code php>
$missing = false;
$items = getItems('AC01', 'all');
foreach ($items as $item) {
  $idH = id('AC01', $item);
  $idM = id('AC02', $item);
  $idX = id('AC03', $item);
  if ((trim(value($idH)) == '') and (trim(value($idM)) == '') and (value($idX) != 2)) {
    markFail($idH);
    markFail($idM);
    $missing = true;
  }
}
if ($missing) {
  repeatPage('zeitangabe');
}
</code>