0 votes
in SoSci Survey (dt.) by s172230 (180 points)
edited by SoSci Survey

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.

1 Answer

0 votes
by SoSci Survey (309k points)

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.

Das erachte ich für keine gute Idee, denn dann haben Sie am Ende Ihre Daten auf zig Variablen verstreut.

Ich würde stattdessen nur eine Frage mit 10 Eingabefeldern anlegen ud daraus so viele anzeigen, wie benötigt werden: Eingabe in Frage (Texteingabe offen) bestimmt die Anzahl der angezeigten Felder in Folgefrage

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...