Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
de:create:points [01.10.2014 16:06] – Verbales Feedback ergänzt admin | de:create:points [05.07.2020 15:22] – admin | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Punkte für Antworten zählen ====== | ====== Punkte für Antworten zählen ====== | ||
- | In den meisten sozialwissenschaftlichen Befragungen ist man an der Meinung der Teilnehmer interessiert -- nicht so, wenn man mit oFb ein Quiz baut. Hier gibt es i.d.R. | + | In den meisten sozialwissenschaftlichen Befragungen ist man an der Meinung der Teilnehmer interessiert -- nicht so, wenn man Feedback zu einem Wissenstest geben möchte. Hier gibt es richtige und falsche Antworten und man kann einen Punktwert ermitteln. Auch bei live-Auswertungen (z.B. einer Thurstone- oder Likert-Skala) darf man mitunter Punkte zählen. So lässt sich als Incentive etwa eine Auswertung des Persönlichkeitstests am Ende des Fragebogens bauen. |
- | **Tipp:** Die PHP-Code Beispiele auf dieser Seite sehen sehr lang aus -- das liegt daran, dass jeder Schritt einzeln ausgeführt und kommentiert wurde. Lassen Sie sich von der Länge nicht erschrecken, | + | **Tipp:** Die PHP-Code Beispiele auf dieser Seite sehen sehr lang aus -- das liegt daran, dass jeder Schritt einzeln ausgeführt und kommentiert wurde. Lassen Sie sich von der Länge nicht erschrecken. |
+ | |||
+ | **Tipp:** Lesen Sie zum Verständnis der Code-Beispiele die Kapitel [[: | ||
+ | |||
+ | **Tipp:** Wenn Sie für eine Auswertung lediglich [[: | ||
- | **Tipp:** Lesen Sie zum Verständnis der Code-Beispiele die Kapitel [[php|Einführung in PHP-Code]] und [[array|Einführung in Arrays]]. | ||
===== Richtige und falsche Antworten ===== | ===== Richtige und falsche Antworten ===== | ||
- | Die einfachste Anwendung, bei der man Punkte zählt ist ein Quiz. Hier gibt es eine Reihe von Auswahl-Fragen und es ist jeweils eine der Optionen | + | Die einfachste Anwendung, bei der man Punkte zählt ist ein Quiz bzw. Wissentest. Hier gibt es eine Reihe von Auswahl-Fragen und es ist jeweils eine der Auswahloptionen |
- | Der folgende PHP-Code definiert zunächst, welche Fragen ausgewertet werden und wie die richtige Antwort lautet. Dafür wird ein verschachteltes | + | Der folgende PHP-Code definiert zunächst, welche Fragen ausgewertet werden und wie die richtige Antwort lautet. Dafür wird ein [[: |
+ | |||
+ | Anschließend werden alle Fragen in einer FOR-Schleife geprüft -- das ist wesentlich kompakter als dutzende IF-Konstruktionen. | ||
<code php> | <code php> | ||
// Definition der Fragen und der korrekten Antworten | // Definition der Fragen und der korrekten Antworten | ||
- | $fragen = array( | + | $fragen = [ |
- | | + | ' |
- | | + | ' |
- | | + | ' |
- | | + | ' |
- | | + | ' |
// u.s.w. | // u.s.w. | ||
- | ); | + | ]; |
// Initialisierung einer Zähler-Variable | // Initialisierung einer Zähler-Variable | ||
Zeile 28: | Zeile 33: | ||
// Prüfung aller Fragen in einer Schleife | // Prüfung aller Fragen in einer Schleife | ||
- | $anzahl = count($fragen); | + | foreach |
- | for ($i=0; $i< | + | // Die Antwort des Teilnehmers abrufen |
- | | + | $answer |
- | $richtig = $fragen[$i][1]; | + | |
- | // Jetzt die Antwort des Teilnehmers abrufen | + | |
- | $antwort | + | |
// Überprüfen und ggf. einen Punkt zählen | // Überprüfen und ggf. einen Punkt zählen | ||
- | if ($antwort | + | if ($answer |
$points++; | $points++; | ||
} | } | ||
} | } | ||
- | // Das Ergebnis anzeigen | + | // Das Ergebnis anzeigen |
html('< | html('< | ||
+ | // ... oder in einer internen Variable speichern | ||
+ | put(' | ||
</ | </ | ||
- | Anstatt der FOR-Schleife kann man etwas eleganter auch eine FOREACH-Schleife verwenden. Hier eine kompaktere Programmierung des Zähl-Teils: | + | Eine kompaktere Programmierung des Zähl-Teils |
<code php> | <code php> | ||
Zeile 50: | Zeile 54: | ||
// Prüfung aller Fragen in einer Schleife | // Prüfung aller Fragen in einer Schleife | ||
- | // Die foreach-Schleife kopiert jedes Array-Element (hier ja wieder ein Array) in eine Variable (hier $info) | + | foreach ($fragen as $variable=> |
- | foreach ($fragen as $info) { | + | if (value($variable) == $correct) { |
- | if (value($info[0]) == $info[1]) { | + | $points++; |
- | $points++; | + | |
} | } | ||
} | } | ||
Zeile 61: | Zeile 64: | ||
</ | </ | ||
- | ===== Verschieden Punktwerte ===== | ||
- | Bei einer Skala nach Thurstone hat jede Antwort einen anderen Wert - auch dies lässt sich in einer Array-Struktur gut abbilden. Dabei wird zu jeder Frage ein Array mit Antwort-Werten gespeichert. Beachten Sie, dass das Array hier nicht einfach eine fortlaufende Liste ist (Index 0, 1, 2, ...), sondern dass sowohl die Frage-Kennungen als auch die Antwort-Codes als Schlüssel fungieren (sog. assozitative Arrays) -- in PHP wird dies durch die Zeichenfolge '' | + | ===== Verschiedene Punktwerte ===== |
+ | |||
+ | Bei einer Skala nach Thurstone hat jede Antwort einen anderen Wert -- auch dies lässt sich in einer Array-Struktur gut abbilden. Dabei wird zu jeder Frage ein Array mit Antwort-Werten gespeichert. | ||
<code php> | <code php> | ||
// Definition der Fragen und der Werte möglicher Antworten | // Definition der Fragen und der Werte möglicher Antworten | ||
- | $fragen = array( | + | $fragen = [ |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
// u.s.w. | // u.s.w. | ||
- | ); | + | ]; |
// Zähl-Variable initialisieren | // Zähl-Variable initialisieren | ||
Zeile 80: | Zeile 84: | ||
// Mittels foreach kann man einfach die Schlüssel-Wert-Paare durchlaufen | // Mittels foreach kann man einfach die Schlüssel-Wert-Paare durchlaufen | ||
- | foreach ($fragen as $kennung | + | foreach ($fragen as $variable |
// Antwort des Teilnehmers abrufen | // Antwort des Teilnehmers abrufen | ||
- | $antwort | + | $answer |
- | // Prüfen, ob für diese Antwort ein Wert vorliegt | + | // Prüfen, ob für diese Antwort ein Wert vorliegt |
- | if (isset($werte[$antwort])) { | + | if (isset($values[$answer])) { |
// Zählen des Wertes | // Zählen des Wertes | ||
- | $points += $werte[$antwort]; | + | $points += $values[$answer]; |
} | } | ||
} | } | ||
Zeile 93: | Zeile 97: | ||
html('< | html('< | ||
</ | </ | ||
+ | |||
===== Skalen mit gedrehten Items ===== | ===== Skalen mit gedrehten Items ===== | ||
Zeile 117: | Zeile 122: | ||
foreach ($items as $item) { | foreach ($items as $item) { | ||
// Die Frage-Kennung muss man noch zusammenbauen | // Die Frage-Kennung muss man noch zusammenbauen | ||
- | $kennung = ' | + | $kennung = ' |
// Antwort des Teilnehmers abrufen | // Antwort des Teilnehmers abrufen | ||
$antwort = value($kennung); | $antwort = value($kennung); | ||
Zeile 131: | Zeile 136: | ||
</ | </ | ||
- | Die Codes reichen in oFb jeweils von 1 bis zum Skalenniveau. Falls man statt des Wertebereichs 1-5 lieber 0-4 aufaddieren möchte, muss man lediglich bei jeder Antwort 1 subtrahieren: | + | Die Codes reichen in SoSci Survey |
<code php> | <code php> | ||
Zeile 143: | Zeile 148: | ||
<code php> | <code php> | ||
// Liste der Items - jeweils mit Angabe der Polung | // Liste der Items - jeweils mit Angabe der Polung | ||
- | $items = array( | + | $items = [ |
' | ' | ||
' | ' | ||
Zeile 150: | Zeile 155: | ||
' | ' | ||
// u.s.w. | // u.s.w. | ||
- | ); | + | ]; |
// Initialisierung der Summenvariable | // Initialisierung der Summenvariable | ||
Zeile 179: | Zeile 184: | ||
html('< | html('< | ||
</ | </ | ||
+ | |||
===== Multiple Choice Antwortmuster ===== | ===== Multiple Choice Antwortmuster ===== | ||
- | Mitunter müssen für die Überprüfung einer Antwort mehrere Bedingungen kombiniert werden. Hat man zum Beispiel eine Mehrfachauswahl mit 4 Antwortvorgaben und will prüfen, ob die ersten beiden Optionen ausgewählt wurden, die letzten beiden aber nicht, so könnte man das mittels IF-Konstruktion wie folgt lösen: | + | Mitunter müssen für die Überprüfung einer Antwort mehrere Bedingungen kombiniert werden. Hat man zum Beispiel eine Mehrfachauswahl mit 4 Antwortvorgaben und will prüfen, ob die ersten beiden Optionen ausgewählt wurden, die letzten beiden aber nicht, so könnte man das mittels IF-Konstruktion wie folgt lösen. |
<code php> | <code php> | ||
Zeile 198: | Zeile 204: | ||
</ | </ | ||
- | Die Verwendung Bool' | + | Die Verwendung Bool' |
<code php> | <code php> | ||
// Definition der Fragen und der korrekten Antworten | // Definition der Fragen und der korrekten Antworten | ||
// Es werden nur jene Items definiert, die auch überprüft werden sollen | // Es werden nur jene Items definiert, die auch überprüft werden sollen | ||
- | $fragen = array( | + | $fragen = [ |
// In der Frage AB01 müssen 1 und 2 angekreuzt sein, 3 und 4 dürfen nicht angekreuzt sein | // In der Frage AB01 müssen 1 und 2 angekreuzt sein, 3 und 4 dürfen nicht angekreuzt sein | ||
- | ' | + | ' |
// In der Frage AB02 müssen 2 und 3 angekreuzt sein, 4 darf nicht und der Wert für 1 ist irrelevant | // In der Frage AB02 müssen 2 und 3 angekreuzt sein, 4 darf nicht und der Wert für 1 ist irrelevant | ||
- | ' | + | ' |
// In AB03 müssen alle 4 Kreuzchen gesetzt sein | // In AB03 müssen alle 4 Kreuzchen gesetzt sein | ||
- | ' | + | ' |
// u.s.w. | // u.s.w. | ||
- | ' | + | ' |
- | ' | + | ' |
- | ); | + | ]; |
// Punktezähler initialisieren | // Punktezähler initialisieren | ||
Zeile 243: | Zeile 249: | ||
html('< | html('< | ||
</ | </ | ||
+ | |||
===== Bewertungstexte anzeigen ===== | ===== Bewertungstexte anzeigen ===== | ||
- | In Abhängigkeit vom erreichten Punktwert können Sie auch unterschiedliches Feedback geben. Folgender Code zeigt im Bereich von 0 bis 9 Punkten den Textbautein " | + | In Abhängigkeit vom erreichten Punktwert können Sie auch unterschiedliches Feedback geben. Folgender Code zeigt im Bereich von 0 bis 9 Punkten den Textbautein " |
<code php> | <code php> | ||
Zeile 258: | Zeile 265: | ||
</ | </ | ||
- | Natürlich lässt sich do auch mehrdimensionales Feedback erstellen. Im folgenden Beispiel werden für die beiden Skalen '' | + | Natürlich lässt sich so auch mehrdimensionales Feedback erstellen. Im folgenden Beispiel werden für die beiden Skalen '' |
<code php> | <code php> |