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

Hallo,
leider finde ich keinen Blog-Eintrag, der mir weiter hilft.

Mein Problem:
In FR02 (Texteingabe offen) wird nach einer ganzen Zahl gefragt ("Wie viele Abteilungen haben Sie?"). Die Frage danach (A419, Fragetyp "offene Nennungen") soll - je nachdem welche Zahl (n) bei FR02 angegeben wurde - eine Anzahl (n) an offenen Eingabefeldern zeigen, in die die Teilnehmer*innen dann die entsprecheenden Abteilungsnamen einfügen können.

Ich habe den Code wie folgt geschrieben, aber so klappt es leider nicht:

for (value('FR02') == i) {
  question('A419', array (i)); 
}

Kann man dies ggf. auch auf einer Seite darstellen?

Danke für Eure Hilfe!!

1 Answer

0 votes
by SoSci Survey (330k points)
edited by SoSci Survey

Sie haben die Syntax für die FOR-Schleife noch nicht ganz eingehalten. Versuchen Sie es hiermit:

for ($i=1; $i <= value('FR02_01'); $i++) {
  question('A419', [$i]); 
}

Allerdings haben Sie dann jedes Item in einer eigenen Frage (mit Titel u.s.w.). Deshalb denke ich, Sie möchten eigentlich das hier haben:

$liste = [];
for ($i=1; $i <= value('FR02_01'); $i++) {
  $liste[] = $i;
}
question('A419', $liste);

Da wird erst eine Liste der Zahlen von 1 bis zur eingegeben Zahl erstelle und diese dann an question() übergeben.

by s172230 (210 points)
Danke für Deine schnelle Antwort.
Ich habe es probiert, aber leider kommt dieser Fehlercode (Zeile 3 und 4 rot)

"Im PHP-Code trat ein Fehler auf.
- Fehler im Fragebogen: Befehl oder String (Text) nicht abgeschlossen
- Hinter einem Befehl wie z.B. question() steht kein Strichpunkt oder
    ein String (Text in Anführungszeichen) ist nicht abgeschlossen oder
    im String selbst kommt ein Anführungszeichen vor, z.B. html('Mach's besser!'); – in diesem Fall stellen Sie dem Anführungszeichen einen Backslash (\) voran.
- Möglicherweise stimmen die öffnenenden und schließenden geschweiften Klammern für Anweisungsblöcke auch nicht überein.

PHP-Code

001 namespace s2survey\questionnaire\environment;
002
003 for ($i=1; $i <= value('FR02_01'), $i++) {
004   question('A419', [$i]);
005 }
006 return 'ok';
by SoSci Survey (330k points)
Pardon, da war noch ein Komma in der FOR-Schleife, wo ein Semikolon sein sollte: ..., $i++) {

Ich habe das oben geändert. Und wie schon geschrieben: Vermutlich möchten Sie eher den zweiten Code verwenden.

Anstatt die Anzahl explizit abzufragen könnten Sie übrigens auch einfach eine Frage "Offene Nennungen" verwenden und schauen, wie viel genannt wird.
by s172230 (210 points)
Danke sehr, es funktioniert!!

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

...