Liebes Support Team,
ich möchte gerne die Leistungsmotivation der Teilnehmer am Ende visuell von niedrig bis hoch darstellen. Dafür habe ich die PHP Anleitungen für verschiedene Punktwerte zählen
https://www.soscisurvey.de/help/doku.php/de:create:points
mit der PHP Anleitung für visuelle Darstellung
https://www.soscisurvey.de/help/doku.php/de:create:feedback-visual
kombiniert.
Mir erscheint die Auswertung auch nur besitzt der Anzeiger immer einen vollen Ausschlag nach rechts.
Hier mein PHP Code:
// Definition der Fragen und der Werte möglicher Antworten
$fragen = array(
'LM01' => array(1 => 3, 2 => 3),
'LM02' => array(1 => 5, 2 => 1),
'LM03' => array(1 => 1, 2 => 5),
'LM04' => array(1 => 3, 2 => 3),
'LM05' => array(1 => 5, 2 => 1),
'LM06' => array(1 => 1, 2 => 5),
'LM07' => array(1 => 3, 2 => 3),
'LM08' => array(1 => 5, 2 => 1),
'LM09' => array(1 => 3, 2 => 3),
'LM10' => array(1 => 5, 2 => 1),
'LM11' => array(1 => 5, 2 => 1),
'LM12' => array(1 => 3, 2 => 3),
'LM13' => array(1 => 5, 2 => 1),
'LM14' => array(1 => 5, 2 => 1),
'LM15' => array(1 => 1, 2 => 5),
'LM16' => array(1 => 3, 2 => 3),
'LM17' => array(1 => 1, 2 => 5),
'LM18' => array(1 => 3, 2 => 3),
'LM19' => array(1 => 5, 2 => 1),
'LM20' => array(1 => 5, 2 => 1),
);
// Zähl-Variable initialisieren
$points = 0;
// Mittels foreach kann man einfach die Schlüssel-Wert-Paare durchlaufen
foreach ($fragen as $variable => $values) {
// Antwort des Teilnehmers abrufen
$answer = value($variable);
// Prüfen, ob für diese Antwort ein Wert vorliegt (sonst keinen Punkt vergeben)
if (isset($values[$answer])) {
// Zählen des Wertes
$points += $values[$answer];
}
}
// Das Ergebnis anzeigen oder anderweitig verarbeiten
// z-Transformation
$zpoints = ($points - 5) / 2.8;
// Extremwerte filtern
if ($zpoints < -3) {
$zpoints = -3;
}
if ($zpoints > 3) {
$zpoints = 3;
}
// Textbaustein verwenden (nur, wenn $points einen gültigen Wert geliefert hat)
if ($points > 0) {
show('BF02', array(
'%title%' => 'Leistungsmotivation',
'%zValue100%' => (int)round($zpoints * 100)
));
}
Wo liegt der Fehler?
Oder ist diese Herangehensweise überhaupt richtig?
Vielen Dank für Ihre Hilfe