Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | |||
— | de:create:checks-php [15.11.2018 10:28] – angelegt admin | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== 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 ([[: | ||
+ | |||
+ | Komplexere Überprüfungen können mit ein wenig [[: | ||
+ | |||
+ | **Wichtig: | ||
+ | |||
+ | **Hinweis: | ||
+ | |||
+ | **Tipp:** Weitere Details zur Programmierung von PHP-Filtern finden Sie unter [[: | ||
+ | |||
+ | **Tipp:** Verwenden Sie die Funktion '' | ||
+ | |||
+ | Eine Fehlermeldung können Sie anzeigen, wenn Sie als Argument in der Funktion '' | ||
+ | |||
+ | |||
+ | ===== 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 [[: | ||
+ | |||
+ | Das folgende Beispiel geht davon aus, dass 4 Mehrfachauswahl-Fragen (" | ||
+ | |||
+ | |||
+ | ==== 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 '' | ||
+ | |||
+ | Die Funktion [[: | ||
+ | |||
+ | <code php> | ||
+ | // 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(' | ||
+ | // Alle Spalten (Fragen) für dieses Item in einer FOR-Schleife durchgehen | ||
+ | $anyChecked = false; | ||
+ | for ($col = 1; $col <= 4; $col++) { | ||
+ | $itemID = id(' | ||
+ | if (value($itemID) == 2) { | ||
+ | $anyChecked = true; | ||
+ | } | ||
+ | } | ||
+ | // Item notieren, falls nichts markiert wurde | ||
+ | if (!$anyChecked) { | ||
+ | $missing[] = $item; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Überprüfung, | ||
+ | if (count($missing) > 0) { | ||
+ | // Die fehlenden Items hervorheben | ||
+ | foreach ($missing as $item) { | ||
+ | markFail(id(' | ||
+ | } | ||
+ | // Meldung anzeigen und Seite wiederholen | ||
+ | repeatPage(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Variante B ==== | ||
+ | |||
+ | Wer lieber mit Zahlenmengen arbeitet, kann pro Spalte die nicht angekreuzten Items (Code: 1) ermitteln und deren Schnittmenge bilden. | ||
+ | |||
+ | <code php> | ||
+ | $missing01 = getItems(' | ||
+ | $missing02 = getItems(' | ||
+ | $missing03 = getItems(' | ||
+ | $missing04 = getItems(' | ||
+ | $missing = array_intersect($missing01, | ||
+ | |||
+ | // Überprüfung, | ||
+ | if (count($missing) > 0) { | ||
+ | // Die fehlenden Items hervorheben | ||
+ | foreach ($missing as $item) { | ||
+ | markFail(id(' | ||
+ | } | ||
+ | // Meldung anzeigen und Seite wiederholen | ||
+ | repeatPage(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Beispiel: Alle Items oder gar keines ===== | ||
+ | |||
+ | Der folgende PHP-Code überprüft, | ||
+ | |||
+ | <code php> | ||
+ | // Eine Liste aller Items in der Frage erstellen | ||
+ | $items = getItems(' | ||
+ | // Ermitteln der beantworteten Items | ||
+ | $answered = getItems(' | ||
+ | // Fehler und zurück, falls nicht alle oder keines beantwortet wurden | ||
+ | if ((count($answered) > 0) and (count($answered) < count($items))) { | ||
+ | repeatPage(' | ||
+ | } | ||
+ | </ |