0 votes
in SoSci Survey (dt.) by s218152 (125 points)
edited by SoSci Survey

Guten Tag,

ich habe auf einer Seite meines Fragebogens drei Instrumente mittels PHP zusammengefügt, vollständig rotiert und die rund 200 Items gleichmäßig auf 11 einzeln angezeigte Seiten verteilt, die die Versuchspersonen bearbeiten. Nun ergibt sich das Problem, dass nur eine Seite bei der Zusammenstellung des Fragebogens angelegt ist, die Versuchspersonen aber tatsächlich 11 Seiten bearbeiten.

Es wäre für mich wichtig, die Bearbeitungsdauer pro angezeigter Seite zu ermitteln. Momentan wird wegen des LoopPage Befehls nur ein Wert für die PageTime ausgegeben. Biete SoSci-Survey hier eine Möglichkeit?

Beste Grüße und vielen Dank im Voraus

Der Vollständigkeit halber hier noch der komplette PHP-Code

if (!isset($blocks)) {
$fragen = array('HO02', 'HX02', 'HX03', 'KI01');
$items = array();
foreach ($fragen as $frage) {
$itemsF = getItems($frage, 'all');
foreach ($itemsF as $itemID) {
$items[] = array($frage, $itemID);
}
}

shuffle($items);

$blocks = array_chunk($items, 19);
registerVariable($blocks);
}

$shading = 'start-shaded';
$i = loopPage(count($blocks));
foreach ($blocks[$i] as $pos => $item)
{
$frage = $item[0];
$itemID = $item[1];
if ($shading == 'start-shaded') {
$shading = 'start-unshaded';
} else {
$shading = 'start-shaded';
}
if ($pos == 0) {
question($frage, $itemID, 'spacing=-1');
} elseif ($pos == 18) {
question($frage, $itemID, 'anchor=none', 'show-title=no', 'show-explanation=no',
'shading='.$shading);
} else {
question($frage, $itemID, 'spacing=-1', 'anchor=none', 'show-title=no', 'show-explanation=no',
'shading='.$shading);
}
}

1 Answer

+1 vote
by SoSci Survey (327k points)

Es wäre für mich wichtig, die Bearbeitungsdauer pro angezeigter Seite zu ermitteln.

Die einfache (aber wenig elegante) Lösung wäre, dass Sie 10 Seiten einbauen, und das

$i = loopPage(count($blocks));

auf der ersten seite ersetzen durch

$i = 0;

auf der zweiten Seite

$i = 1;

und so weiter. Den Code vor $shading = 'start-shaded'; brauchen Sie natürlich nicht zu wiederholen, den Rest ab dort aber schon.

Die elegante Lösung würde die Bearbeitungszeit z.B. via time() bestimmen und in interne Variablen speichern, also z.B.

$i = loopPage(count($blocks));
put(id('IV01', $i + 1), time());

Allerdings reicht das noch nicht ganz, falls eine Seite aufgrund fehlender Antworten wiederholt wird, dafür bräuchten sie

$i = loopPage(count($blocks));
if (getRoute() == 'next') {
    put(id('IV01', $i + 1), time());
}

Und falls Sie zudem noch einen Zurück-Knopf hätten, wäre es nochmal ein gutes Stück komplexer. Außerdem müssen Sie zur Ermittlung der Verweildauer auf der letzten Seite des Blocks auf der nächsten Fragebogen-Seite noch folgendes ergänzen:

put('IV01_12', time());

Und natürlich müssen Sie in der Auswertung ein wenig subtrahieren.

by s218152 (125 points)
Herzlichen Dank, das war sehr hilfreich!!

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

...