Damit das funktioniert, müssen Sie für jedes Item den question()
Befehl aufrufen. Und Sie benötigen eine Liste, die nicht nur die Item-Nummern, sondern auch noch die Frage-Kennung pro Item beinhaltet. Diese könnten Sie etwa wie folgt erstellen:
$fragen = array('AB01', 'AB02', 'AB03');
$items = array();
foreach ($fragen as $frage) {
// Items für jede einzelne Frage
$itemsF = getItems($frage, 'all');
foreach ($itemsF as $itemID) {
$items[] = array($frage, $itemID);
}
}
Jetzt haben wir in der Variable $items
eine Liste von Arrays (also Arrays in einem Array), wobei jedes Array = jeder Eintrag die Kennung der Frage auf Index 0 und die Nummer des Items auf Index 1 enthält. Das sieht dann etwa so aus:
AB01, 1
AB01, 2
AB01, 3
AB02, 1
AB02, 2
AB02, 3
u.s.w.
Das Ganze einmal kräftig mischen und in 10er-Blöcke aufteilen...
shuffle($items);
$blocks = array_chunk($items, 10);
Es bietet sich an, den Teil bisher in einen Filter if(!isset($blocks)) {
zu packen und ein registerVariable($blocks)
zu ergänzen.
Und dann noch abfragen:
$i = loopPage(count($blocks));
$block = $blocks[$i];
foreach ($block as $item) {
$frage = $item[0];
$itemID = $item[1];
question($frage, $itemID, 'spacing=5');
}
Das Ganze nochmal in der Gesamtschau:
if (!isset($blocks)) {
$fragen = array('AB01', 'AB02', 'AB03');
$items = array();
foreach ($fragen as $frage) {
// Items für jede einzelne Frage
$itemsF = getItems($frage, 'all');
foreach ($itemsF as $itemID) {
$items[] = array($frage, $itemID);
}
}
shuffle($items);
$blocks = array_chunk($items, 10);
registerVariable($blocks);
}
$i = loopPage(count($blocks));
foreach ($blocks[$i] as $item) {
$frage = $item[0];
$itemID = $item[1];
question($frage, $itemID, 'spacing=5');
}
Das 'spacing=5'
kann man natürlich noch um weitere Parameter für question() ergänzen, sodass zum Beispiel kein Fragetitel angezeigt wird.
Damit die Skalenverankerung z.B. nur beim ersten Item pro Seite angezeigt wird und nur das letzte Item Abstand nach unten lässt, würden Sie im letzten Teil einen Zähler mitlaufen lassen.
$i = loopPage(count($blocks));
foreach ($blocks[$i] as $pos => $item) {
$frage = $item[0];
$itemID = $item[1];
if ($pos == 0) {
// Verankerung nicht deaktiviert beim ersten Item (=Index 0)
question($frage, $itemID, 'spacing=5');
} elseif ($pos == 9) {
// Kein reduzierter Abstand beim 10-ten Item (=Index 9)
question($frage, $itemID, 'anchor=none');
} else {
// Alles dazwischen ohne Verankerung und mit weniger Abstand nach unten (5 Pixel)
question($frage, $itemID, 'spacing=5', 'anchor=none');
}
}