Hallo nochmal,
ich habe mich jetzt an folgenden 2 Varianten versucht und unterschiedliche, nicht funktionierende ;) Ergebnisse bekommen.
1. Versuch:
if (!isset($questions)) {
// Liste mit Frage-Kennungen und zugehörigen Bildern als array definieren
$blocks = [
['ES04', 'ES17'],
['ES06', 'ES18'],
['ES08', 'ES20'],
['ES10', 'ES19'],
['ES12', 'ES22'],
['ES14', 'ES21']
];
// Die Liste mischen
shuffle($blocks);
// Liste mit Folgefragen als array definieren
$questions = ['AT04', 'AT08', 'AT10', 'AT06', 'AT02', 'AT12'];
// Zuordnung der Blöcke zu Folgefragen
foreach ($blocks as $blocks) {
$questions = array_merge($questions, $blocks);
}
// Die Listen auf allen Seiten verfügbar machen
registerVariable($questions);
// Anzeige der Blöcke und Fragen
$id = loopPage($questions);
question($id);
}
}
Das Ergebnis dabei war, dass mir die Intro+Video-Kombis nicht mehr angezeigt wurden, sondern sofort die erste Folgefrage AT04. Daneben stand in den Debug-Infos, dass die Seite jetzt 18 mal wiederholt würde, obwohl es nur 6 Blöcke sind?
Bei einem Klick auf WEITER wird nichts angezeigt und die Debug-Info sagt 18 mal "Die Seite zeigt keine Inhalte.".
Weil die Blöcke iwie verschwunden schienen, habe ich es im 2. Anlauf dann mit zwei isset() - Befehlen versucht. Aber das war wahrscheinlich nicht so schlau und hat im Ergebnis auch nicht funktioniert.
2. Versuch:
if (!isset($blocks)) {
// Liste mit Frage-Kennungen und zugehörigen Bildern als array definieren
$blocks = [
['ES04', 'ES17'],
['ES06', 'ES18'],
['ES08', 'ES20'],
['ES10', 'ES19'],
['ES12', 'ES22'],
['ES14', 'ES21']
];
// Die Liste mischen
shuffle($blocks);
// Die Listen auf allen Seiten verfügbar machen
registerVariable($blocks);
}
// Anzeige der Blöcke auf einzelnen Seiten
$i = loopPage(count($blocks));
// Blöcke anzeigen
foreach ($blocks[$i] as $frage) {
question($frage);
}
if (!isset($questions)) {
// Liste mit Folgefragen als array definieren
$questions = [
'AT04',
'AT08',
'AT10',
'AT06',
'AT02',
'AT12'
];
// Zuordnung der Blöcke zu Folgefragen
foreach ($blocks as $blocks) {
$questions = array_merge($questions, $blocks);
}
// Die Listen auf allen Seiten verfügbar machen
registerVariable($questions);
// Anzeige der Blöcke und Fragen
$id = loopPage($questions);
question($id);
}
}
Ergebnis:
Hier wurden mir dann wieder die Blöcke auf einzelnen Seiten richtig angezeigt.
Leider wurde die erste Folgefrage AT04 (die richtig zugeordnet wurde) direkt darunter angezeigt und nicht auf einer Folgeseite. Daneben zeigt die Debug-Info auch hier, dass die Seite nun 18 mal wiederholt wird, obwohl es nur 6 Wiederholungen sein dürften.
Klicke ich dann auf WEITER um den nächsten Block aufzurufen, kriege ich einen Hinweis zu einem Fehler im Fragebogen zu der Zeile
"030 foreach ($blocks[$i] as $frage) {"
Sicher habe ich einen Fehler in der Abfolge der einzelnen Code-Bausteine gemacht?