Übersetzungen dieser Seite:
 

Individuelle Antwortprüfung

Formale Anforderungen an eine Antwort – zum Beispiel dass alle Items einer Skala beantwortet wurden oder dass eine offene Texteingabe einem bestimten Muster folgt – lassen sich mit wenigen Klicks in der Frage festlegen (Antworten prüfen).

Komplexere Überprüfungen können mit ein wenig PHP-Code realisiert werden. Dabei wird ein PHP-Filter gemeinsam mit der Funktion repeatPage() verwendet.

Wichtig: Der PHP-Code zur Überprüfung der Antwort muss auf der Seite nach der Frage ganz oben platziert werden. Wenn also die zu prüfende Frage auf Seite 2 gestellt wird, dann muss der PHP-Code zur Prüfung auf Seite 3 ganz oben stehen.

Hinweis: Überlegen Sie vorab, ob eine Überprüfung der Antwort tatsächlich zielführend ist. Das ist dann der Fall, wenn Teilnehmer ihre Angaben versehentlich in einem falschen Format machen. Wenn Sie hingegen erwarten, dass sich die Teilnahmer mangels Motivation („nur mal durchklicken“) oder absichtlich nicht an die Vorgaben halten, dann ist es oftmals besser, die fehlerhaften Angaben in Kauf zu nehmen und bei der Datenbereinigung zu filtern.

Tipp: Weitere Details zur Programmierung von PHP-Filtern finden Sie unter Filterfragen (PHP-Filter).

Tipp: Verwenden Sie die Funktion markFail(), um Eingabefelder mit fehlerhaften Angaben zu markieren.

Eine Fehlermeldung können Sie anzeigen, wenn Sie als Argument in der Funktion repeatPage() die Kennung eines Textbausteins eintragen (s. unten). Alternativ können Sie auch einen entsprechenden Textbaustein mittels text() anzeigen. Für die zweite Variante wählen Sie beim Anlegen des Textbausteins aus, dass der Text im Stil einer Warnung angezeigt wird – dann erhält er dieselbe Formatierung wie die Standard-Fehlermeldungen.

Beispiel: Mehrfachauswahl-Matrix

In einer gewöhnlichen Skala kann man einfach überprüfen lassen, ob der Teilnehmer in jeder Zeile eine Option markiert hat. Wenn man aber eine kombinierte Frage verwendet, welche dem Teilnehmer mehrere Kruezchen pro Zeile erlaubt (Mehrfachauswahl-Matrix), dann benötigt man ein wenig PHP-Code zur Überprüfung, ob wirklich in jeder Zeile etwas ausgewählt wurde.

Das folgende Beispiel geht davon aus, dass 4 Mehrfachauswahl-Fragen („MA01“ bis „MA04“) mit jeweils 10 Items zu einer Mehrfach-Auswahlmatrix kombiniert wurden. Falls in einer Zeile kein Kreuzchen gesetzt wurde, soll diese hervorgehoben werden und es soll der Text „MA05“ als Fehlermeldung angezeigt werden.

Variante A

Eine Möglichkeit besteht darin, einfach für jede Zeile (Item) die auswählten Items abzuzählen. Wurde nichts gewählt, kommt die Item-Nummer auf eine Liste $missing und anschließend werden die Fehler markiert.

Die Funktion id() erstellt aus der Kennung der Rubrik („MA“), der Nummer der Frage (z.B. 1) und der Nummer des Items (z.B. 5) die Variablen-Kennung zum Abruf der Antwort (z.B. „MA01_05“).

// Die nicht-beantworteten Items werden in der Liste $missing gesammelt
$missing = array();
// Die Funktion getItems() liefert eine Liste mit Item-Nummern (=Zeilen)
// De Konstruktion FOREACH durchläuft diese alle in einer Schleife
foreach (getItems('MA01', 'all') as $item) {
  // Alle Spalten (Fragen) für dieses Item in einer FOR-Schleife durchgehen
  $anyChecked = false;
  for ($col = 1; $col <= 4; $col++) {
    $itemID = id('MA', $col, $item);
    if (value($itemID) == 2) {
      $anyChecked = true;
    }
  }
  // Item notieren, falls nichts markiert wurde
  if (!$anyChecked) {
    $missing[] = $item;
  }
}
 
// Überprüfung, ob ein Item unbeantwortet blieb
if (count($missing) > 0) {
  // Die fehlenden Items hervorheben
  foreach ($missing as $item) {
    markFail(id('MA01', $item));
  }
  // Meldung anzeigen und Seite wiederholen
  repeatPage('MA05');
}

Variante B

Wer lieber mit Zahlenmengen arbeitet, kann pro Spalte die nicht angekreuzten Items (Code: 1) ermitteln und deren Schnittmenge bilden.

$missing01 = getItems('MA01', '==', 1);
$missing02 = getItems('MA02', '==', 1);
$missing03 = getItems('MA03', '==', 1);
$missing04 = getItems('MA04', '==', 1);
$missing = array_intersect($missing01, $missing02, $missing03, $missing04);
 
// Überprüfung, ob ein Item unbeantwortet blieb
if (count($missing) > 0) {
  // Die fehlenden Items hervorheben
  foreach ($missing as $item) {
    markFail(id('MA01', $item));
  }
  // Meldung anzeigen und Seite wiederholen
  repeatPage('MA05');
}

Beispiel: Alle Items oder gar keines

Der folgende PHP-Code überprüft, ob in einer Skala alle Items beantwortet wurden – oder gar keines. Die Kennung der Frage (im Beispiel AB01) muss entsprechend der tatsächlichen Frage-Kennung geändert werden, die Fehlermeldung muss als Textbaustein abgespeichert werden. Sofern die Kennung dieses Textbausteins nicht „error_AB01“ lautet, muss auch diese Kennung angepasst werden.

// Eine Liste aller Items in der Frage erstellen
$items = getItems('AB01');
// Ermitteln der beantworteten Items
$answered = getItems('AB01', '>', 0);
// Fehler und zurück, falls nicht alle oder keines beantwortet wurden
if ((count($answered) > 0) and (count($answered) < count($items))) {
  repeatPage('error_AB01');
}
de/create/checks-php.txt · Zuletzt geändert: 15.11.2018 10:28 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki