Liebes SoSci Survey Support Team,
ich habe ein Problem bei der abwechselnden Schattierung von Items. Ich habe aus mehreren Fragen die Items rotiert und in Blöcken über mehrere Seiten verteilt. Die Schattierung soll, nachdem das erste Item unschattiert ist, immer abwechselnd weiter laufen.
In zwei Fällen hat das mit dem folgenden php-code geklappt, beim dritten ist die Schattierung jetzt völlig zufällig. Ich habe den Code nur kopiert und die Fragennamen angepasst, sowie die Länge der Blöcke. Ich weiß nicht wo der Fehler liegt und wäre sehr dankbar, wenn ihr mir weiterhelfen könntet!
Hier funktioniert die Schattierung nicht:
if (!isset($blocks)) {
$fragen = array('BM01', 'BM02', 'BM03', 'BM04', 'BM05');
$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, 11);
registerVariable($blocks);
}
$shading = 'start-shaded';
$i = loopPage(count($blocks));
foreach ($blocks[$i] as $pos => $item)
{
$frage = $item[0];
$itemID = $item[1];
// Shading immer umschalten (das ginge auch eleganter, ist dann aber nicht mehr so anschaulich)
if ($shading == 'start-shaded') {
$shading = 'start-unshaded';
} else {
$shading = 'start-shaded';
}
if ($pos == 0) {
// Verankerung nicht deaktiviert beim ersten Item (=Index 0)
question($frage, $itemID, 'spacing=5');
} elseif ($pos == 10) {
// Kein reduzierter Abstand beim 11-ten Item (=Index 10)
question($frage, $itemID, 'anchor=none', 'show-title=no', 'show-explanation=no', 'shading='.$shading);
} else {
// Alles dazwischen ohne Verankerung und mit weniger Abstand nach unten (5 Pixel)
question($frage, $itemID, 'spacing=5', 'anchor=none', 'show-title=no', 'show-explanation=no', 'shading='.$shading);
}
}
Während sie hier funktioniert:
if (!isset($blocks)) {
$fragen = array('SE08', 'SE02', 'SE03', 'SE04', 'SE05');
$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);
}
$shading = 'start-shaded';
$i = loopPage(count($blocks));
foreach ($blocks[$i] as $pos => $item)
{
$frage = $item[0];
$itemID = $item[1];
// Shading immer umschalten (das ginge auch eleganter, ist dann aber nicht mehr so anschaulich)
if ($shading == 'start-shaded') {
$shading = 'start-unshaded';
} else {
$shading = 'start-shaded';
}
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', 'show-title=no', 'show-explanation=no', 'shading='.$shading);
} else {
// Alles dazwischen ohne Verankerung und mit weniger Abstand nach unten (5 Pixel)
question($frage, $itemID, 'spacing=5', 'anchor=none', 'show-title=no', 'show-explanation=no', 'shading='.$shading);
}
}