0 votes
in SoSci Survey (dt.) by s172588 (110 points)

Guten Tag,

ich würde gerne in einem Fragebogen eine Art Loop von Fragen einrichten, der so lange wiederholt wird, bis mindestens 5 Minuten vergangen sind. Jede*r soll dabei mindestens einen Durchlauf von 5 Fragen durchlaufen. Falls danach noch keine 5 Minuten vergangen sind, sollen die 5 Fragen ein weiteres Mal (mit leicht anderer Formulierung) durchlaufen werden. Falls danach immer noch keine 5 Minuten rum sind, noch einmal, usw..

Ist es möglich, dies in sosci survey umzusetzen? Falls ja, können Sie mir dabei weiterhelfen? Ich kenne bereits die Ressourcen zu dem Thema "Weiter-Knopf nach bestimmter Zeit anzeigen", komme aber damit nicht so Recht weiter.

Vielen Dank im Voraus und freundliche Grüße

1 Answer

0 votes
by SoSci Survey (305k points)

Nun, zunächst werden Sie alle Fragen für alle möglichen Wiederholungen im Fragenkatalog anlegen müssen. Ich nehme mal an, das wären die Fragen AB01 bis AB05, AC01 bis AC05 u.s.w. bis AX01 bis AX05.

Anschließend benötigen Sie ein Array mit allen Fragen, das könnte z.B. so erstellt werden:

$sections = ['AB', 'AC', 'AD', ..., 'AX'];
$fragen = [];
foreach ($sections as $section) {
  for ($i=1; $i<=5; $i++) {
    $fragen[] = id($section, $i);
  }
}

Okay, jetzt haben wir eine lange Liste AB01, AB02, AB03, AB04, AB05, AC01, ... , AX05. Das solte reichen. Sagen wir SoSci Survey also mal, dass es diese Fragen schön eine nach er anderen präsentieren soll.

$i = loopPage(count($fragen));
question($fragen[$i]);

Jetzt müssen wir nur noch die Abbruchbedingung erstellen. Also: Wenn 5 Minuten rum sind und ein 5er-Päckchen abgearbeitet ist, dann springen wir aus der Schleife. Dafür muss die folgende Seite im Fragebogen erstmal eine Seitenkennung erhalten, z.B. "part2". Und dann müssen wir zwischen dem loopPage() und der Frage noch die Bedingung einbauen.

if (!isset($t0)) {
  $t0 = time();
}
$i = loopPage(count($fragen));

if ((($i % 5) == 0) && ((time() - $t) > 300)) {
  goToPage('part2');
}

question($fragen[$i]);

Das isset() sorgt dafür, dass wir die Anfangszeit in $t0 speichern. Und der Rest ... % ist der Modulo-Operator. Also Dividieren mit Rest.

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

...