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

0 votes

Sehr geehrte Damen und Herren,

ich habe folgendes Problem:

ich möchte in einer Frage meines Fragebogens eine Kategorie "Sonstiges" mit freier Texteingabe platzieren und im Anschluss soll der hier geschriebene Text weiter als Item angezeigt werden.

Dazu habe ich in der Frage über

prepare_input('ZE01_01'); // offene Texteingabe "Sonstiges" an die Frage PI01 hängen
question('PI01');

das Feld "Sontiges" angehängt.

Nun habe ich das Problem, dass ich nicht weiß, wie ich folgend dem Programm sagen kann, dass er das Feld "Sontiges" nur dann weiter übernehmen soll, wenn es auch ausgefüllt ist.

über: replace('%Sonstiges%', 'ZE01_01','response');

klappt es super, das Feld "Sonstiges" zu übernehmen, wenn etwas eingetragen wurde.
Ich komme leider mit der Anleitung nicht zurecht, wie ich den Befehl ergänzen muss, damit bei keinem Eintrag auf der nächsten Seite nicht der Fehler

"Die Variable ZE01_01 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion replace() keinen Antwort-Wert ermitteln"

Ich war schon so weit, dass mir anstelle von keinem Item auf der nächsten Seite die Zahl -9 für "nicht beantwortet" gezeigt wurde...

Wie muss ich den Befehl ergänzen, damit er das Item in der nächsten Frage nicht anzeigt, wenn nichts eingetragen wurde?

Würde mich sehr freuen, wenn Sie mir helfen können.

Vielen Dank im Voraus für eine Antwort!!

in SoSci Survey (dt.) by s082921 (110 points)

1 Answer

0 votes

Die Zeile

replace('%Sonstiges%', 'ZE01_01','response');

sollte - wenn nichts eingetragen wurde - einen leeren String (=nichts) in den Platzhalter speichern. Das ist insofern vollkommen okay, als die Verwendung des Platzhalters %Sonstiges% sonst zu einer Fehlermeldung führen würde.

Allerdings möchten Sie vermutlich in einer anderen Frage (Skala?) die ganze Zeile gar nicht anzeigen. Nehmen wir einmal an, die Frage hat die Kennung "AB01" und das Item 10 ist %Sonstiges%, dann würden Sie dieses Item wie folgt ein-/ ausblenden:

$other = value('ZE01_01');
if (trim($other) == '') {
  // Kein "Sonstiges" - den Platzhalter benötigen wir nicht
  question('AB01', '1-9');  // Nur Items 1-9, nicht Item 10 anzeigen
} else {
  replace('%Sonstiges%', $value);
  question('AB01');  // Ganze Frage anzeigen
}
by SoSci Survey (76.5k points)
Super! Vielen Dank, das hat sehr geholfen.

Ich habe nun noch eine weiter Frage:

Aus einer zuvor gestellten Frage (F201 über "Informationen") erhalte ich verschiedene Antworten zu den Items. (Nein=1, Ja=2 und weiß nicht=3) Alle Ja und Weiß nicht, sollen in einer Folgefrage angezeigt werden.

$Information = getItems('F201', 'min', 2);
 if (count($Information) > 0) {
question('F202',$Information);  
}

das klappt.

Jetzt möchte ich aber, dass hier eine zweite Frage angedockt wird als kombinierte Frage. Die Frage ('F205') soll aber nur dort angedockt werden, wo auch ein Ja oder Weiß nicht vorher ausgewählt wurde. Kann man dies programieren? Da die kombinierte Frage die gleichen Items wie Frage F201 aufweißt, da ich im Vorfeld nicht weiß welche Items mit Ja oder Weiß nicht beantwortet werden.

Lieben Dank im Voraus für Ihre Bemühungen!
Bei einer kombinierten Frage kann man nur zeilenweise entscheiden, welche Items gezeigt werden sollen und welche nicht - zwei Itemlisten für eine Frage sind so nicht vorgesehen. Spontan fällt mir als einzig möglich Lösung ein, eine Tabelle mittels HTML zu "basteln" und dann jede Zelle einzeln zu füllen - aber das ist m.E. weder elegant noch sinnvoll.

Eine Alternative bestünde darin, die "überflüssigen" Zellen in der zweiten Spalte dynamisch mittels JavaScript auszublenden. Aber auch das ist nicht ganz trivial - und mit einer Antwortpflicht nicht vereinbar.
...