0 votes
in SoSci Survey (dt.) by s142736 (215 points)

Liebes Support-Team,

ich brauche bitte Hilfe bei der Verknüpfung von 2 Bedingungen (aus unterschiedlichen Fragen), die sich später auf die Beantwortung einer Folgefrage auswirken soll.
Ich habe schon alles mit PHP-Code versucht und komme leider nicht zum gewünschten Ergebnis und verzweifle langsam... Ich habe auch schon versucht bei den Einstellungen die Filter je Frage zu setzen, aber sie funktionieren nicht.

Frage C001 erhebt die Auswirkung der COVID-19 Krise auf die Arbeitssituation.
Sie enthält 4 Antwortmöglichkeiten.

Frage TS01 erhebt den aktuellen Trainee Status.

Sofern ein Proband bei der Frage C001 Antwort 1,2 oder 4 angibt UND bei der Frage TS01 Antwort 1 wählt soll in Folge die Frage Frage AA01 angezeigt werden. Wenn die Bedingung nicht erfüllt ist soll die Frage nicht erscheinen.

Anbei noch Screenshots zum leichteren Verständnis.

Bitte um Info, wie der PHP - Code lautet bzw. wo ich diesen einfügen muss.

Danke und beste Grüße!!!!

by SoSci Survey (328k points)
> Ich habe schon alles mit PHP-Code versucht und komme leider nicht zum gewünschten Ergebnis

Bitte ergänzen Sie Ihre Frage um den PHP-Code, soweit Sie gekommen sind.
by s142736 (215 points)
Anbei der PHP Code den ich versucht hatte:

if (
(value('C001') == 1) or
(value('C001') == 2) or
(value('C001') == 3)
and
(value('TS01 ') == 1)
) {
question('AA01'); Auswirkung1
}

Vielen Dank!

1 Answer

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

Der PHP-Code sieht schon gut aus - es fehlen m.E. nur noch zwei Klammern. Und zwar gilt beim Programmieren AND vor OR (so ähnlich wie beim Rechnen Punkt vor Strich).

Und lautet Ihrer Angabe müsste es 4 und nicht 3 heißen (aber das können Sie ja nach Bedarf anpassen).

if (
  ((value('C001') == 1) or (value('C001') == 2) or (value('C001') == 4))
  and
  (value('TS01 ') == 1)
) {
  question('AA01'); // Auswirkung1
}
by SoSci Survey (328k points)
> [Content]    Create question AA01
> [Content]    Create question AA01
> Leider wird die Frage jetzt auf der Page 19 doppelt generiert:

Vermutlich haben Sie die Frage noch auf die Seite gezogen - entfernen Sie sie von der Seite, sodass sie nur über question() aufgerufen wird.

Vgl. auch Top 3 hier: https://www.soscisurvey.de/help/doku.php/de:create:filter-solving#top_3
by s142736 (215 points)
Sehr gut, danke.

Es dürfte nun alles soweit funktionieren. Letzte Frage noch: Sofern ich den Fragebogen über den grünen/gelben play-button teste, wird ein Warning angezeigt:

Warning (page 20)
The variable AA01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.

Wenn ich allerdings die gleichen Optionen in der veröffentlichten Version teste kommt dieses Warning nicht und es sieht alles gut aus. Ist dieser Warnhinweis nur als Info zu verstehen, dass eine gewisse Frage nicht erschienen ist weil eine Condition nicht zugetroffen hat oder liegt noch ein Fehler vor?

Dazu der Debug:
[Information]    Interview number 238 is to be continued
[Information]    Questionnaire base from project TraineeNet will be used
[Information]    Retention period on page 18 has been 1 seconds
[Processing]    Reading answers from page 18
[Information]    Answer to C013_01 = ddd
[Information]    100% of the questions have been answered so far
[Processing]    Create page 19 in questionnaire base
[Information]    value("C001") = 3
[Information]    value("C001") = 3
[Information]    value("C001") = 3
[Information]    No visible content on this page, continue with page 20
[Processing]    Create page 20 in questionnaire base
[Information]    value("AA01") = ???
[Information]    No visible content on this page, continue with page 21
[Processing]    Create page 21 in questionnaire base
[Information]    value("C001") = 3
[Information]    value("C001") = 3
[Information]    value("C001") = 3
[Information]    No visible content on this page, continue with page 22
[Processing]    Create page 22 in questionnaire base
[Information]    value("C001") = 3
[Information]    value("C001") = 3
[Information]    value("C001") = 3
[Information]    No visible content on this page, continue with page 23
[Processing]    Create page 23 in questionnaire base
[Content]    Create question D001

Der Warnhinweis steht übrigens auf der Seite wo die demografischen Angaben beginnen.

Besten Dank!
by SoSci Survey (328k points)
> The variable AA01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.

Das passiert, wenn auf Seite 19 nichts angezeigt wird. Dann wird AA01 nicht abgefragt - auf Seite 20 scheinen Sie aber die Antwort auf diese Frage in einem Filter zu verwenden.
by s142736 (215 points)
Ja, korrekt.
Die Bedingung für das Anzeigen der Seite 20 setzt voraus, dass die APN auf der Seite 19 die AA01 angezeigt bekommt und mit =1 antwortet. Hier die PHP-Codes:

Seite 19:
if (
  ((value('C001') == 1) or (value('C001') == 2) or (value('C001') == 4))
  and
  (value('TS01') == 1)
) {
  question('AA01'); // Auswirkung1
}

Seite 20:
if (
  ((value('AA01') == 1))
) {
  question('AA02'); // Auswirkung2
}

Sind jetzt noch Anpassungen notwendig?

Danke!
by SoSci Survey (328k points)
Sie können es so lassen, wie es ist - das gelbe Kästchen ist erstmal nur ein Hinweis für Sie, damit nichs übersehen wird.

Oder Sie können beim ersten Filter mit einem `goToPage()` noch dafür sorgen, dass die Seite 20 explizit übersprungen wird. Aber nur, wenn Sie Lust, haben noch etwas mehr mit PHP zu spielen ;)

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

...