0 votes
in SoSci Survey (dt.) by s343721 (150 points)

Ich möchte einen PHP-Filter erstellen, der von zwei Bedingungen (ja/nein Fragen) abhängt und eine bestimmte Seite ausblenden bzw. anzeigen soll.

Dabei folgende Besonderheit:
Filterfrage 1 (GE09) wird allen Teilnehmenden angezeigt
Filterfrage 2 (GE10) wird nur Partnern (ca. 30% der Stichprobe) angezeigt, d.h. für viele liegt gar keine Antwort für diese Frage vor.
Wenn Frage 1 value == 2 (nein), soll Seite 3 IMMER angezeigt werden (Angabe bei Frage 2 ist dann egal)
Wenn Frage 2 value == 2 (nein), soll Seite 3 IMMER angezeigt werden (Angabe bei Frage 1 ist dann egal)
Ansonsten soll Seite 3 immer ausgeblendet werden (Seite 3 wird vmtl. für 95% ausgeblendet werden)

Es gibt vier Antwortmöglichkeiten:
Frage 1 == 1 (ja) & Frage 2 == 1 (ja) ---> Seite 3 ausblenden
Frage 1 == 1 (ja) & Frage 2 == 2 (nein) ---> Seite 3 anzeigen
Frage 1 == 2 (nein) & Frage 2 == 1 (ja) ---> Seite 3 anzeigen
Frage 1 == 2 (nein) & Frage 2 == 2 (nein) ---> Seite 3 anzeigen

(1) Was wird dieser Code machen, wenn für GE10 gar keine Antwort vorliegt? Ich möchte, dass Seite 3 in dem Fall ausgeblendet wird:
if (
(value('GE09') == 1) &&
(value('GE10') == 1)) {
goToPage('Kind2'); // Fragen auf Seite 3 werden übersprungen
}

(2) Wo platziert man den Filter? Verstehe ich es richtig, dass der Filter NICHT auf der Seite, wo die Filterfragen stehen, platziert wird, sondern auf der Seite 3, die angezeigt bzw. ausgeblendet werden soll?

1 Answer

0 votes
by SoSci Survey (369k points)

(1) Was wird dieser Code machen, wenn für GE10 gar keine Antwort vorliegt?

Der value()-Befehl wird in dem Fall einen leeren Wert liefern, also wird value('GE10') == 1 zu false, und der Filter greift nicht.

Ich möchte, dass Seite 3 in dem Fall ausgeblendet wird:

Dann müssen Sie bitte ein logisches ODER (||) statt dem UND (&&) zwischen die beiden Bedingungen schreiben: Sie möchten Sie Seite ja überspringen, wenn die eine oder die andere Bedingung erfüllt ist.

if (
  (value('GE09') == 1) ||
  (value('GE10') == 1)
) {
  goToPage('next'); // Diese Seite überspringen
}

(2) Wo platziert man den Filter?

Dieser Filter würde direkt bei der Ausführung zur nächsten Seite springen, sondern zu dem Zeitpunkt schon die Antworten für GE09 oder GE10 vorliegen. Er wird demnach entweder zu Beginn der Seite platziert, die übersprungen werden soll, oder auf der vorherigen Seite im Bereich "Antworten mittels PHP-Code verarbeiten".

by s343721 (150 points)
Danke für die schnelle Hilfe! Der Code in der Antwort funktioniert leider nicht, da wir nicht eine Seite überspringen wollen, sondern **anzeigen** wollen, wenn eine der Fragen value == 1 ist. Aber mit der Auflistung der einzelnen Fragen auf der Seite funktioniert es nun:

if (
  (value('GE09') == 2) || // wenn bei einer der 2 Fragen “nein” geantwortet wurde, Fragen anzeigen
  (value('GE10') == 2)) {
  question('GE01');
  question('GE08');
  question('GE03');
  question('GE02');
  question('GE04');
  question('GE05');
  question('GE06');
  question('GE07');
} else {
  goToPage('next'); // wenn bei beiden Fragen "ja" geantwortet wurde, Seite 3 überspringen
}
by SoSci Survey (369k points)
Sie können eine Bedingung auch einfach mit einem Ausrufezeichen (!) verneinen, das wäre im vorliegenden Fall (nur der Vollständigkeit halber):

if (!(
  (value('GE09') == 1) ||
  (value('GE10') == 1)
)) {
  goToPage('next'); // Diese Seite überspringen
}

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

...