0 votes
in SoSci Survey (dt.) by s117388 (120 points)
edited by SoSci Survey

Guten Abend!

Für ein Experiment möchte ich mehrere Bilder mit jeweils einer zugehörigen Frage (auf separater Seite) in randomisierter Reihenfolge darbieten.
Mit Hilfe des Online-Supports ist dies auch schon gut gelungen :)
Allerdings möchte ich noch die Verweildauer auf der Seite mit der Frage erfassen (für jede Frage einzeln und nicht aufsummiert!). Das Problem ist nun, dass ich die Verweildauer für beide Seiten zusammen erhalten, also die Seite mit dem Bild plus die Seite mit der Frage. Ich möchte aber nur die Zeit von den einzelnen Frageseiten erhalten.

Folgende Codes habe ich hierfür bisher verwendet:

Seite 1:

$blocks = array(  // Liste der Frage-Kennungen und zugehöriger Bilder
    array('D101', 'Inc_Other1x.png'),
    array('D102', 'Inc_Other2x.png'),
    array('D103', 'Inc_Other3x.png'),
    array('D104', 'Inc_Other4x.png'),
    array('D105', 'Inc_Other5x.png'),
    array('D106', 'Inc_Other6x.png'),
    array('D107', 'Inc_Other7x.png'),
    array('D108', 'Inc_Other8x.png'),
    array('D201', 'Inc_Self1x.png'),
    array('D202', 'Inc_Self2x.png'),
    array('D203', 'Inc_Self3x.png'),
    array('D204', 'Inc_Self4x.png'),
    array('D205', 'Inc_Self5x.png'),
    array('D206', 'Inc_Self6x.png'),
    array('D207', 'Inc_Self7x.png'),
    array('D208', 'Inc_Self8x.png'),
    array('D301', 'Inst_Other1x.png'),
    array('D302', 'Inst_Other2x.png'),
    array('D303', 'Inst_Other3x.png'),
    array('D304', 'Inst_Other4x.png'),
    array('D305', 'Inst_Other5x.png'),
    array('D306', 'Inst_Other6x.png'),
    array('D307', 'Inst_Other7x.png'),
    array('D308', 'Inst_Other8x.png'),
    array('D401', 'Inst_Self1x.png'),
    array('D402', 'Inst_Self2x.png'),
    array('D403', 'Inst_Self3x.png'),
    array('D404', 'Inst_Self4x.png'),
    array('D405', 'Inst_Self5x.png'),
    array('D406', 'Inst_Self6x.png'),
    array('D407', 'Inst_Self7xx.png'),
    array('D408', 'Inst_Self8x.png')
);


registerVariable($blocks);

if (!isset($order)) {
  $order = array_keys($blocks);
  // Die Liste mischen
  shuffle($order);
  // Die Listen auf allen Seiten verfügbar machen
  registerVariable($order);


for ($i=0; $i<count($order); $i++) {
  $id = id('IV02', $order[$i] + 1);
  put($id, $i + 1);
}
}


// Anzeige der Blöcke
$i = loopToPage('frage', count($order));
html('<p><img src="'.$blocks[$order[$i]][1].'" alt="Dilemma"></p>');


if (getRoute() == 'next') {
  put(id('IV01', $order[$i] + 1), time());
  if ($i > 0) {
    $prevTime = value(id('IV01', $order[$i - 1] + 1));
    put(id('IV03', $order[$i - 1] + 1), time() - $prevTime);    
  }
}

Seite 2 (die Frage-Seite mit der Seitenkennung 'frage'):

$i = loopIndex();
question($blocks[$order[$i]][0]);

Seite 3:

if (getRoute() == 'next') {
  $i = count($order);
  $prevTime = value(id('IV01', $order[$i - 1] + 1));
  put(id('IV03', $order[$i-1] + 1), time() - $prevTime);    
}

Ich bin leider sehr überfordert, da ich dieses Programm und PHP-Codes im Allgemeinen das erste Mal verwende. Deshalb bin ich sehr dankbar für Unterstützung in Form von konkreten Code-Vorschlägen! :D

Vielen lieben Dank im Voraus und liebe Grüße,
Sonja :)

by SoSci Survey (328k points)
Tipp: Mit dem Knopf {} kann man Code als solchen formatieren. Ich habe das soeben in Ihrer Frage geändert.

1 Answer

0 votes
by SoSci Survey (328k points)

Die Frage wird au Seite 2 präsentiert. Wennn ich es richtig sehe, haben Sie Seite 3 nur ergänzt, um die Zeit zu messen, korrekt? Das ist schonmal nicht ganz schlecht, um auch die Zeit im letzten Durchlauf zu bekommen.

Ich würde folgendes empfehlen: Speichern Sie auf Seite 2 die Zeit, wann die Seite mit der Frage geöffnet wurde:

if (getRoute() == 'next') {
  $timeRef = time();
  registerVariable($timeRef);
}

Und auf Seite 3 können Sie dann die Differenz speichern.

if (getRoute() == 'next') {
  $timeDiff = time() - $timeRef;
  $i = loopIndex();
  put(id('IV03', $order[$i] + 1), $timeDiff);
}
by s117388 (120 points)
edited by s117388
Vielen Dank für Ihre Antwort!

Ich habe jetzt den letzten Absatz von Seite 1 gelöscht, also

{

if (getRoute() == 'next') {
  put(id('IV01', $order[$i] + 1), time());
  if ($i > 0) {
    $prevTime = value(id('IV01', $order[$i - 1] + 1));
    put(id('IV03', $order[$i - 1] + 1), time() - $prevTime);    
  }
}

}


Die anderen beiden Codes von Ihnen habe ich entsprechend den Seiten 2 und 3 hinzugefügt. Leider erhalte ich aber in IV03 keine Daten, also die Zeiten werden nicht gespeichert.
Muss ich noch etwas von den alten Codes entfernen oder ergänzen?:)

Liebe Grüße,
Sonja
by SoSci Survey (328k points)
Was zeigt denn die Debug-Information auf Seite 3?

Nur zur SIcherheit: Die Seite 3 hat die Seitenkennung "frage", wie sie bei loopToPage() eingetragen ist? Wenn nicht, dann müssten Sie die Seiten-Kennung von Seite 2 entfernen und sie bei Seite 3 eintragen. Sonst wird nur für die letzte Frage die Zeit gespeichert.
by s117388 (120 points)
Alles klar!
Seite 2 hatte die Seitenkennung "frage".
Ich habe jetzt Seite 3 diese Kennung gegeben und jetzt klappt es!

Vielen Dank für die Hilfe!

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

...