Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:create:filter-texts [28.11.2014 11:03] – Aktualisierung adminde:create:filter-texts [07.10.2025 23:58] (aktuell) – Ersetzung von „man“ durch passive Formulierung; „Teilnehmer“ gegendert. chris.seiferth
Zeile 1: Zeile 1:
 ====== Nach Texteingaben filtern ====== ====== Nach Texteingaben filtern ======
  
-Normalerweise überprüft man, ob in einer Auswahl oder einer Skala ein bestimmter Wert gewählt wurde -- wenn man prüfen möchte, ob ein Teilnehmer etwas bestimmtes in ein offenes Texteingabefeld geschrieben hat, dann läuft das im Prinzip genauso. +Normalerweise wird überprüft, ob in einer Auswahl oder einer Skala ein bestimmter Wert gewählt wurde -- wenn geprüft werden soll, ob eine Teilnehmer:in einen definierten Text in ein offenes Texteingabefeld geschrieben hat, dann läuft das im Prinzip genauso.  
- +
-Der Unterschied besteht darin, dass man nicht mit Zahlen, sondern mit Texten vergleicht.+
  
 +Der Unterschied besteht darin, dass nicht mit Zahlen, sondern mit Texten verglichen wird.
 ===== Prüfen, ob etwas angegeben wurde ===== ===== Prüfen, ob etwas angegeben wurde =====
  
-Meist möchte man einfach nur prüfen, ob irgend etwas in ein Texteingabefeld eingetragen wurde. Oder für Programmierer formuliert: Ob etwas anderes als der leere String (kein Text) eingetragen wurde. Den leeren String schriebt man einfach durch zwei einfache Anführungszeichen (%%''%%) oder durch zwei doppelte Anführungszeichen (%%""%%) mit nichts dazwischen.+Meist wird einfach nur geprüft, ob irgend etwas in ein Texteingabefeld eingetragen wurde. Oder für Programmierer:innen formuliert: Ob etwas anderes als der leere String (kein Text) eingetragen wurde. Der leere String wird einfach durch zwei einfache Anführungszeichen (%%''%%) oder durch zwei doppelte Anführungszeichen (%%""%%) mit nichts dazwischen.
  
 <code php> <code php>
Zeile 15: Zeile 14:
 </code> </code>
  
-Der obige PHP-Code funktioniert -- aber er reagiert recht sensibel auf Leerzeichen: Wenn ein Teilnehmer nur Leerzeichen in ein Textfeld einträgt, dann würde man das eigentlich lieber als "keine Angabe" werten. Dafür gibt es die Funktion ''trim()'', die Leerzeichen am Anfang und Ende einfach entfernt. Im Filter entfernt man also erst die Leerzeichen und vergleicht dann:+Der obige PHP-Code funktioniert -- aber er reagiert recht sensibel auf Leerzeichen: Wenn ein:e Teilnehmer:in nur Leerzeichen in ein Textfeld einträgt, dann würde dies eigentlich lieber als "keine Angabe" gewertet. Dafür gibt es die Funktion ''trim()'', die Leerzeichen am Anfang und Ende einfach entfernt. Im Filter werden also erst die Leerzeichen entfernt und dann verglichen:
  
 <code php> <code php>
Zeile 26: Zeile 25:
 ===== Mindest-Textlänge prüfen ===== ===== Mindest-Textlänge prüfen =====
  
-Eine weitere praktische Funktion ist ''strlen()''. Sie verrät die Länge eines Strings (Textes). Wenn man also weiß, dass jede sinnvolle Angabe mindestens 4 Zeichen haben muss, dann kann man auch die String-Länge prüfen. Damit Leerzeichen keine falschen Entscheidungen zur Folge haben, wird auch hier wieder ''trim()'' verwendet.+Eine weitere praktische Funktion ist ''strlen()''. Sie verrät die Länge eines Strings (Textes). Wenn also bekannt ist, dass jede sinnvolle Angabe mindestens 4 Zeichen haben muss, dann kann auch die String-Länge geprüft werden. Damit Leerzeichen keine falschen Entscheidungen zur Folge haben, wird auch hier wieder ''trim()'' verwendet.
  
 <code php> <code php>
Zeile 34: Zeile 33:
 </code> </code>
  
-Oder etwas lesbarer (falls man bei so vielen Klammern den Überblick verliert):+Oder etwas lesbarer (falls bei so vielen Klammern der Überblick verloren geht):
  
 <code php> <code php>
-$eingabe = value('AB01_01');  // Eingabe des Teilnehmers+$eingabe = value('AB01_01');  // Eingabe der Teilnehmer:in
 $ohneLeer = trim($eingabe);   // Entfernen von Leerzeichen am Anfang und Ende $ohneLeer = trim($eingabe);   // Entfernen von Leerzeichen am Anfang und Ende
 $laenge = strlen($ohneLeer);  // Länge ermitteln $laenge = strlen($ohneLeer);  // Länge ermitteln
Zeile 48: Zeile 47:
 ===== Text vergleichen ===== ===== Text vergleichen =====
  
-Soll überprüft werden, ob der Teilnehmer die richtige Antwort gegeben hat, funktioniert das durch die Vergleichsoperatoren ''=='' (gleich) und ''!='' (ungleich) -- wie bei Zahlen. Der folgende Filter soll überprüfen, ob der Teilnehmer ein Test-Video angesehen hat. Das Test-Video zeigt ein Wort, welches man in ein Eingabefeld eintragen soll. Falls der Teilnehmer nun das falsche Wort einträgt, wird die Seite mit dem Test-Video erneut angezeigt.+Soll überprüft werden, ob die teilnehmenden Person die richtige Antwort gegeben hat, funktioniert das durch die Vergleichsoperatoren ''=='' (gleich) und ''!='' (ungleich) -- wie bei Zahlen. Der folgende Filter soll überprüfen, ob die teilnehmenden Person ein Test-Video angesehen hat. Das Test-Video zeigt ein Wort, welches in ein Eingabefeld eintragen werden soll. Falls die teilnehmenden Person nun das falsche Wort einträgt, wird die Seite mit dem Test-Video erneut angezeigt.
  
 <code php> <code php>
Zeile 56: Zeile 55:
 </code> </code>
  
-Evtl. möchte man bei der Groß- und Kleinschreibung nicht pingelig sein -- dafür konvertiert man die Eingabe des Teilnehmers mittels ''strtolower()'' vor dem Vergleich in Kleinbuchstaben.+Evtl. besteht der Wunsch, bei der Groß- und Kleinschreibung nicht pingelig zu sein -- dafür wird die Eingabe der teilnehmenden Person mittels ''strtolower()'' vor dem Vergleich in Kleinbuchstaben konvertiert.
  
 <code php> <code php>
Zeile 75: Zeile 74:
 ===== Zahlen in der offenen Eingabe ===== ===== Zahlen in der offenen Eingabe =====
  
-PHP ist bei der Unterscheidung von Texten und Zahlen nicht kleinlich. Möchte man überprüfen, ob der Teilnehmer im Eingabefeld ''AB01_01'' eine Zahl eingegeben hat, die größer als 10 ist, kann man das wie folgt tun:+PHP ist bei der Unterscheidung von Texten und Zahlen nicht kleinlich. Soll überprüft werden, ob die teilnehmenden Person im Eingabefeld ''AB01_01'' eine Zahl eingegeben hat, die größer als 10 ist, kann das wie folgt getan werden:
  
 <code php> <code php>
Zeile 83: Zeile 82:
 </code> </code>
  
-Man sollte für das Eingabefeld dann aber tunlichst einstellen, dass der Teilnehmer nur Ziffern eintragen kann (s. [[:de:create:checks#eingabe_von_nummern|Antworten prüfen: Eingabe von Nummern]]). Falls man dies nicht einstellen kann oder möchte, kann man mittels ''is_numeric()'' herausfinden, ob der Teilnehmer eine Zahl eingetragen hat.+Tunlichst sollte für das Eingabefeld dann aber eingestellt, dass die teilnehmenden Person nur Ziffern eintragen kann (s. [[:de:create:checks#eingabe_von_nummern|Antworten prüfen: Eingabe von Nummern]]). Falls dies nicht eingestellt werden kann oder soll, kann mittels ''is_numeric()'' herausgefunden werden, ob die teilnehmenden Person eine Zahl eingetragen hat.
  
-Folgender Filter greift nur, wenn der Teilnehmer eine Zahl eingegeben hat und diese Zahl größer als 10 ist.+Folgender Filter greift nur, wenn die teilnehmenden Person eine Zahl eingegeben hat und diese Zahl größer als 10 ist.
  
 <code php> <code php>
Zeile 94: Zeile 93:
 </code> </code>
  
-Ebenso kann man PHP anweisen, die Eingabe des Teilnehmers so gut wie möglich in eine Zahl umzuwandeln. Aus einem "5b" wird dann ''5''. Die Umwandlung erfolgt mit der Funktion ''intval()'' oder mit einem vorangestellten ''(int)'' (sog. Type Casting).+Ebenso kann PHP angewiesen werden, die Eingabe der teilnehmenden Person so gut wie möglich in eine Zahl umzuwandeln. Aus einem "5b" wird dann ''5''. Die Umwandlung erfolgt mit der Funktion ''intval()'' oder mit einem vorangestellten ''(int)'' (sog. Type Casting).
  
 <code php> <code php>
Zeile 110: Zeile 109:
 </code> </code>
  
-**Vorsicht:** Nachkommastellen werden bei dieser Lösung abgeschnitten. Möchte man mit Dezimalzahlen arbeiten, muss man zunächst dafür sorgen, dass als Dezimaltrennzeichen der Punkt verwendet wird (ggf. in SoSci Survey einstellen, dass eine Texteingabe nur Dezimalzahlen erlaubt) und anschließend mittels vorangestelltem ''(float)'' die Umwandlung in eine Zahl vornehmen.+**Vorsicht:** Nachkommastellen werden bei dieser Lösung abgeschnitten. Soll mit Dezimalzahlen gearbeitet werden, muss zunächst dafür gesorgt werden, dass als Dezimaltrennzeichen der Punkt verwendet wird (ggf. in SoSci Survey einstellen, dass eine Texteingabe nur Dezimalzahlen erlaubt) und anschließend mittels vorangestelltem ''(float)'' die Umwandlung in eine Zahl vornehmen.
de/create/filter-texts.1417169039.txt.gz · Zuletzt geändert: 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