Hallo liebes SoSci-Team,
in unserem Fragebogen gibt es Frage FR02 (Texteingabe offen) nach welcher geloopt wird:
$anzahlabt = (int)value('FR02_01');
// Frageblock wiederholen
loopToPage('blockEnd', $anzahlabt);
// Definition der Rubriken
$rubriken = array('X1','X2','X3','X4','X5');
registerVariable($rubriken);
Zusätzlich dazu, haben wir pro Loop = Rubrik) zwei weitere Auswahlfragen (X103, X203, X303 etc. bzw. X104, X204, X304 etc.) nach denen die Fragen (X105, X205, X305, etc. bzw. X106, X206, X306 etc.) entsprechend dynamisch angepasst werden sollen. Wenn z.B. in X103: "2" angegeben wird und bei X104 "3" angegeben wird, soll bei Frage X105 2 Textfelder erscheinen und bei X106 3 Textfelder erscheinen. Die maximale Zahl, die in X103, ... bzw. X104, ... u.dgl. angegeben werden kann, ist 10.
Dies soll, auch im Loop funktionieren, d.h. für alle Rubriken.
Dazu habe ich ganz viele neue Variablen erstellt, die sozusagen alle Auswahlmöglichkeiten abbilden: X110 zeigt 10 Textfelder, X111 zeigt 10 Textfelder, X112 zeigt 10 Textfelder etc. (Verlinkung mit Frage X103) und dann genau das gleiche für die Verlinkung mit X125, X126, X127 etc. (Verlinkung mit Frage X104).
Ich habe folgenden Code erstellt, der aber leider mehr schlecht als recht funktioniert:
Seite A:
$i = loopIndex();
$itemliste = getItems($frage, 'valid');
$maxitem = max($itemliste);
registerVariable($maxitem);
$rubrik = $rubriken[$i];
$ab = $rubrik.'03';
$quest = $ab;
$anzahl = array();
for ($i=1; $i<=$maxitem;$i++) {
$item = $quest.'_'.$i;
$anzahl[] = value($item);
}
registerVariable($anzahl);
Seite B:
//erster Abschnitt
$i = loopIndex();
$rubrik = $rubriken[$i];
$steps = array();
$steps = range(1,$anzahl[0]);
registerVariable($steps);
question(id($rubrik, 10), $steps);
$i = loopIndex();
$rubrik = $rubriken[$i];
question(id($rubrik, 25), $steps);
if ($maxitem < 2) {
goToPage('blockEnd');
}
//zweiter Abschnitt
$i = loopIndex();
$rubrik = $rubriken[$i];
$steps = array();
$steps = range(1,$anzahl[1]);
registerVariable($steps);
question(id($rubrik, 11), $steps);
//dritter Abschnitt
$i = loopIndex();
$rubrik = $rubriken[$i];
question(id($rubrik, 26), $steps);
if ($maxitem < 3) {
goToPage('blockEnd');
}
//vierter Abschnitt
$i = loopIndex();
$rubrik = $rubriken[$i];
$steps = array();
$steps = range(1,$anzahl[2]);
registerVariable($steps);
question(id($rubrik, 12), $steps);
//fünfter Abschnitt
$i = loopIndex();
$rubrik = $rubriken[$i];
question(id($rubrik, 27), $steps);
if ($maxitem < 4) {
goToPage('blockEnd');
}
etc. etc.
Versteht ihr mein Problem und könnt ihr mir weiterhelfen? Ich habe das Gefühl, dass der Prozess aktuell sehr manuell ist, und das evtl. durch Schleifen schöner zu lösen wäre. Und brauche ich zwingend die neuen Variablen X110 ... bzw. X125... oder kann man das auch anders lösen?
Danke für Eure Hilfe.