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.