0 votes
in SoSci Survey (dt.) by s277160 (160 points)
edited by SoSci Survey

Liebes Support Team,

ich möchte am Ende meines Fragebogens "Kontrollfragen" stelle, ob die Vpn den Fragebogen aufmerksam beantwortet haben und die "Verhaltensaufgabe ihrer Bedingung" versanden haben. Dafür habe ich entsprechend einen Filter erstellt, der aber leider nicht funktioniert.
Unter dem if-Befehl habe ich die richtigen Antworten aufgeführt, also für KO04 ist es Antwort 4, für KO03 ist es Antwort 1, für KO04 sind es 2 richtige Antworten (KO04_01 und KO04_03).
Bei KO05 ist es etwas komplizierter, hier ist für Bedingung 1 (ZG01=1) Antwort 3 richtig und für Bedingung 2 (ZG01=2) Antwort 1, deshalb wollte ich hier in den Filter setzen, dass die eine ODER andere Kombination vorhanden sein muss.

Wenn alles richtig (also wie im Filter angegeben) beantwortet ist, sollen die Personen zum Ende geleitet werden und einen Text sehen, wenn etwas falsch ist werden sie zu einer Seite weitergeleitet auf der sie wiederum entschieden können, ob sie die Studie beenden wollen oder nochmal einen Teil bearbeiten wollen.

Das ist mein bisheriger PHP-Code:

if
(value('KO02') == 4) &&
(value('KO03') == 1) &&
((value('KO04_01') == 2) && (value('KO04_03') == 2)) &&
((value('KO05') == 3) && (value('ZG01')== 1) || (value('KO05') == 1) && (value('ZG01') == 2))

{text('KO08');
goToPage('vpn1');
}

else {goToPage('failed');
}


Die Debug Information sagt folgendes:

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

002
003
004
005 if
006 (value('KO02') == 4) &&
007 (value('KO03') == 1) &&
008 ((value('KO04_01') == 2) && (value('KO04_03') == 2)) &&
009 ((value('KO05') == 3) && (value('ZG01')== 1) || (value('KO05') == 1) && (value('ZG01') == 2))

Ich habe schon mehrfach überprüft, aber bin ratlos, was der Fehler ist...

Tausend Dank für jede Hilfe!
Beste Grüße

1 Answer

0 votes
by SoSci Survey (327k points)

Syntaktisch muss um die komplette Bedingung eine Klammer stehen - vorher führt PHP den Code überhautp nicht aus. Die Fehlermeldung erscheint also, weil Sie vorne noch eine öffnende und am Ende noch eine schließende Klammer ergänzen müssten.

if (
    (value('KO02') == 4) &&
    (value('KO03') == 1) &&
    ((value('KO04_01') == 2) && (value('KO04_03') == 2)) &&
    (
        ((value('KO05') == 3) && (value('ZG01')== 1)) ||
        ((value('KO05') == 1) && (value('ZG01') == 2))
    )
) {
    text('KO08');
    goToPage('vpn1');
} else {
    goToPage('failed');
}

Inhaltlich sieht der Filter ganz gut aus. Alleinfalls könnte es bei KO04 noch passieren, dass Personen weitere (alle) Optionen auswählen - wenn Sie also möchten, dass dort etwas nicht ausgewählt wird, müssten sie das noch mit ==1 prüfen.

by s277160 (160 points)
Super, ganz lieben Dank!

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

...