Fangen wir mit dem Fehler an. Sie kombinieren html()
mit question()
- und das funktioniert so nicht, weil question()
heinen HTMl-Code zurückliefert, sondern diesen direkt ins Dokument schreibt. Sie müssten also
html('<li>' . $combinations[$i][0] . ' - ' . $combinations[$i][1] . question('MS01_' . $i) . '</li>') ;
aufteilen wie folgt:
html('<div>' . $combinations[$i][0] . ' - ' . $combinations[$i][1] . '</div>');
question(id('MS01', $i));
Ich habe hier das 'MS01_' . $i
auch gleich gegen id('MS01', $i)
getauscht, denn MS01_1 ist nicht dassebe wie das korrekte MS01_01.
der Fragetext wird vor jedem Item wiederholt angezeigt
Sie könnten den Fragetext ab der zweiten Wiederholung ausblenden oder ganz entfernen. Aber wenn Sie ohnehin alle Items der Frage untereinander angezeigen wollen, dann gehen Sie besser einen anderen Weg.
Und zwar verwenden Sie Platzhalter, um die Kombinationen ganz regulär als Itemtexte anzuzeigen. Ändern Sie die Frage MS01 erstmal so, dass Sie den 56 Items die folgenden Texte geben:
%combination1%
%combination2%
...
%combination56%
Und dann erstellen Sie ein Array, in welchem diese 56 Kombinationen als Text stehen.
$labels = [];
foreach ($combinations as $i => $combination) {
$labels['%combination'.$i.'%'] = $combination[0] . ' - ' . $combination[1]
}
Jetzt nur noch die Frage mit diesen Platzhaltern anzeigen:
show('MS01', $labels);
Machen Sie sich aber bitte noch rechtzeitig Gedanken, wie Sie die Daten auswerten wollen. Denn so eine "flache" Datenstruktur ist nicht ganz trivial in der Auswertung. Vielleicht möchten Sie noch x-mal 56 intene Variablen anlegen, damit Sie die in der Auswertung gleich nutzen können.