Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
de:create:functions:markfail [21.12.2014 22:35] – angelegt adminde:create:functions:markfail [28.06.2021 18:04] (aktuell) – [Unterschiedliche Feedback-Texte] sophia.schauer
Zeile 7: Zeile 7:
   * //VariablenKennung//\\ Die Kennung einer Variable im Datensatz (s. **Variablen-Übersicht**).   * //VariablenKennung//\\ Die Kennung einer Variable im Datensatz (s. **Variablen-Übersicht**).
  
-===== Beispiel 1 =====+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. 
 + 
 +===== Mindestens ein Feld ausgefüllt =====
  
 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". 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".
Zeile 26: Zeile 28:
  
  
-===== Beispiel 2 =====+===== Mehrere Items prüfen =====
  
 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. 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.
Zeile 36: Zeile 38:
 $items = getItems('AC01', 'all'); $items = getItems('AC01', 'all');
 foreach ($items as $item) { foreach ($items as $item) {
-  $idH = 'AC01_'.sprintf('%02d', $item); +  $idH = id('AC01', $item); 
-  $idM = 'AC02_'.sprintf('%02d', $item); +  $idM = id('AC02', $item); 
-  $idX = 'AC03_'.sprintf('%02d', $item);+  $idX = id('AC03', $item);
   if ((trim(value($idH)) == '') and (trim(value($idM)) == '') and (value($idX) != 2)) {   if ((trim(value($idH)) == '') and (trim(value($idM)) == '') and (value($idX) != 2)) {
     markFail($idH);     markFail($idH);
Zeile 49: Zeile 51:
 } }
 </code> </code>
 +
 +
 +===== Unterschiedliche Feedback-Texte =====
 +
 +Mitunter sollen die Fehlermeldungen genauer auf die fehlenden Variablen angepasst werden. Der folgende PHP-Code demonstriert, wie man die passenden Texte auswählt und die doppelte Anzeige vermeidet.
 +
 +<code php>
 +// Variablen und zugehörige Fehlertexte
 +$checks = [
 +  'AW01' => 'Text1',
 +  'AW02' => 'Text2',
 +  'AW03_01' => 'Text3',
 +  'AW03_02' => 'Text3',
 +  'AW03_03' => 'Text3',
 +  'AW03_04' => 'Text4',
 +  // u.s.w.
 +];
 +
 +// Alle Variabeln überprüfen, markieren und Fehlermeldungen sammeln
 +$messages = [];
 +foreach ($checks as $variable => $text) {
 +  $antwort = value($variable);
 +  if ((trim($antwort) === '') || ($antwort < 1)) {
 +    markFail($variable);
 +    $messages[] = $text;
 +  }
 +}
 +
 +// Ggf. Fehlermeldungen anzeigen und Seite wiederholen
 +if (!empty($messages)) {
 +  $messages = array_unique($messages);
 +  html('<div class="feedback" role="status">');  // Roter Rahmen
 +  foreach ($messages as $text) {
 +    text($text, 'spacing=10');
 +  }
 +  html('</div>');
 +  repeatPage();
 +}
 +</code>
 +
 +Der PHP-Code besteht aus drei Teilen. Im ersten Teil werden in einem Array die zu prüfenden Variablen definiert und welche Fehlermeldung jeweils angezeigt werden soll, wenn die Variable nicht beantwortet wird.
 +
 +Im zweiten Teil werden dann in einer FOR-Schleife alle Variablen einzeln geprüft. Das ''%%(trim($antwort) === '')%%'' ist nur erforderlich, wenn man auch Texteingaben prüfen möchte. Ansonsten prüft ''%%($antwort < 1)%%'' auf einen Fehlercode. Nicht beantwortete Eingabefelder werden direkt mit ''markFail()'' markiert und die zur Fehlermeldung gehörige Text-Kennung wird in das Array ''$messages'' notiert.
 +
 +Im dritten Teil wird dann geprüft, ob Meldungen im Array ''$messages'' vorliegen, doppelte werden mit ''array_unique()'' entfernt. Das ''<div>'' im HTML-Code sorgt für die Formatierung als Feedback-Meldung (z.B. markiert durch einen roten Rahmen) und innerhalb davon werden dann die Fehlermeldungen ausgegeben. Das ''repeatPage()'' schließlich sorgt für die erneute Anzeige der Seite.
de/create/functions/markfail.1419197753.txt.gz · Zuletzt geändert: 21.12.2014 22:35 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