Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

0 votes

Liebes Soscisurvey- Team,

ist es möglich, für jede Versuchsperson bei einem Wissensfragebogen die korregierte Version des Fragebogens auszugeben. Z.b. nach dem Ausfüllen zu markieren, welche Antworten die Person gab und welche die korrekten Antworten gewesen wären.

Viele Grüße

in SoSci Survey (dt.) by s202017 (120 points)

1 Answer

0 votes

Ja, dies ist möglich - aber je nachdem, wie hübsch man es haben will, ist es ein wenig aufwändiger. Denn den PHP-Code, welcher den HTML-Code für die Ausgabe schreibt, muss man "per Hand" bauen.

Für eine Mehrfachauswahl (Multiple Choice) könnte man z.B: zwei Funktionen wie folgt verwenden - eine, welche die Punkte abzählt und eine weitere, welche sich dann auf Basis der ersten um die Anzeige kümmert.

function auswertungMultipleChoice($frage, $muster)
{
    $points = 0;
    $counts = count($muster);
    $responses = [];
    $labels = [];
    $musterGI = [];
        
    foreach ($muster as $index => $korrekt) {
        $item = $index + 1;
        $labels[$item] = getItemtext($frage, $item);
        $response = (int)value(id($frage, $item));
        $responses[$item] = $response;
        if ($response == $korrekt) {
            $points++;
        }
        $musterGI[$item] = $korrekt;
    }
    return [
        'points' => $points,
        'result' => max(0, ($points / $counts) - 0.5) * 2,
        'reference' => $musterGI,
        'responses' => $responses,
        'labels' => $labels
    ];
}

Und deren Ergebnis kommt dann hier hinein.

/**
 * Antworten auf eine Single Choice Frage anzeigen und korrekt/falsche Antworten hervorheben
 */
function htmlSingleChoice($frage, array $correct)
{
    $html = '<div class="print s2question" id="'.$frage.'_prn">'.NL.
        '<div class="items">'.NL;

    // Need the right and eventually given answer
    $response = value($frage); 
    $answers = array_unique(array_merge([$response], $correct));

    foreach ($answers as $item) {
        if ($item == $response) {
            if (in_array($response, $correct)) {
                $symbol = '✓'; // '✅';
                $color = '#00b050';
            } else {
                $symbol = ''; // '↯'; //'❌;
                $color = '#a51e37';
            }
        } else {
            $symbol = '';
            $color = '#00b050';
        }
        if ($response == $item) {
            $box = '☒';
        } else {
            $box = '☐';
        }
        if (in_array($item, $correct)) {
            $info = '(richtig)';
        } else {
            $info = '(falsch)';
        }
        $html.=
            '<div class="option print selected prefixed" style="position: relative; overflow: visible;">
                <span style="display: block; position: absolute; top: 0; left: -20px;">'.$symbol.'</span>
				<span class="prefix" style="color: '.$color.'; font-weight: bold; font-size: 150%;">'.$box.'</span>
				<div class="content">'.getItemtext($frage, $item).' '.$info.'</div>
			</div>'.NL;
    }
    
    $html.= '</div>'.NL;
    return $html;
}

Das ist aber nur eine Möglichkeit ... je nach Fragetyp und was man genau vorhat, kann es man es auch ganz anders bauen.

by SoSci Survey (229k points)
...