Sie hatten im Fragebogen 25 Rubriken passend zu den 25 Arbeigebern angelegt. Mit einer Schleife loopToPage()
kann man die 6 Fragen pro Rubrik recht elegante für max. 3 ausgewählte Arbeitgeber anzeigen lassen.
Auf der ersten Seite der Schleife kümmert man sich erstmal um die Zufallsauswahl von max. 3 Arbeitgebern.
if (!isset($selection)) {
$selected = getItems('AG02', 'is', 2);
shuffle($selected);
$selection = array_slice($selected, 0, 3);
// Noch in eine interne Variable speichern
for ($i=0; $i<3; $i++) {
put(id('IV01', $i+1), -1);
}
for ($i=0; $i<count($selection); $i++) {
put(id('IV01', $i+1), $selection[$i]);
}
registerVariable($selection);
}
// Zuordnung Arbeitgeber-Nummern zu Rubriken
$sections = array(
1 => 'AD',
2 => 'AM',
3 => 'BD',
4 => 'BM',
5 => 'BR',
6 => 'CC',
7 => 'DN',
8 => 'DD',
9 => 'DO',
10 => 'DC',
11 => 'DW',
12 => 'DL',
// Evian fehlt
14 => 'FR',
15 => 'GO',
16 => 'GR',
17 => 'HK',
18 => 'LH',
19 => 'MS',
20 => 'NE',
21 => 'PC',
22 => 'PW',
23 => 'PG',
24 => 'RB',
25 => 'UL'
);
registerVariable($sections);
Direkt darunter beginnt man die Schleife - und zwar so oft, wie man Arbeitgeber in der Variable $selection
hat. Also zwischen 0 (dann greift schon vorher ein Filter, der in AG02 definiert wurde) und 3 (dafür sorgt das array_slice()).
Auf dieser Seite zeigt man die Fragen mit den Kennungen XX01, XX02 und XX03 - wobei das XX jeweils durch die Rubrik-Kennung des passenden Arbeitgebers ausgetauscht wird. Welcher Arbeitgeber (Code in AG02) zu welcher Rubrik gehört, haben wir in der Variable $sections
oben definiert.
// Mittels loopToPage() kann man die ganzen Wiederholungen auf 3 Seiten erledigen
$i = loopToPage('LoopEnd', count($selection));
$sectionID = $sections[$selection[$i]];
question(id($sectionID, 1)); // Likes
question(id($sectionID, 2)); // Dislikes
question(id($sectionID, 3)); // Gesamtbewertung
Auf den Folgeseiten wird nun einfach das loopToPage()
durch ein loopIndex()
ersetzt, damit wir wissen, in welcher Wiederholung wir sind.
$i = loopIndex();
$sectionID = $sections[$selection[$i]];
question(id($sectionID, 4)); // Eigenschaften
Und gleich nochmal für die letzten beiden Fragen. Diese Seite hat die Seitenkennung "LoopEnd", die auf der ersten Seite in loopToPage()
angegeben wurde.
$i = loopIndex();
$sectionID = $sections[$selection[$i]];
question(id($sectionID, 5)); // Medien AG
question(id($sectionID, 6)); // Die ultimative Frage (aka AV)
Die geschachtelten Array-Aufrufe $sections[$selection[$i]]
muss man zwei- bis dreimal lesen, um den Sinn zu verstehen. Das ist einmal die Abfrage, welcher Arbeitgeber nun untersucht werden soll ($selection) - abhängig vom Wiederholungsindex $i. Und dann, welche Rubrik ($section) zu diesem Arbeitgeber gehört.