0 votes
in SoSci Survey (dt.) by s192117 (400 points)

Sehr geehrter Sosci-Support,

ich habe zur Lösung einer Filter-Frage versucht,
1. Eine Frage (TF01) zu erstellen, deren Antworten 1-3 (von oben nach unten) mit einer if-Konstruktion zur Fragebogenseite 8, Frage BD33 weitleiten. Diese Seite habe ich extra für diese weiterführende Frage erstellt.
2. Eine Bedingung hinzuzufügen, wonach bei Antwort 4 (Nein) direkt zur Seite 9 weitergeleitet wird.
Mir wird eine Fehlermeldung angezeigt
Ich habe die Anleitung für php gelesen und komme dennoch hier nicht weiter.

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 if (value ('TF 01'); ('TF02'); ('TF03') {
004 } else {
005 if (value ('TF04')
006 } return 'go:Zeiteinsatz';

Bitte sehen Sie doch einmal nach, vielleicht kann es mit dem wissenden Blick schnell gelöst werden.

Pretest-Link: https://s2survey.net/Biodiv2021/?act=w2mhPG4wfeK91wTejSz8Py11

Mit einem freundlichen Gruß,
Milan Matouschek

1 Answer

0 votes
by s109993 (10.3k points)
if (value('TF01') == 4) {
  goToPage('seite_9');
}

-> schauen sie wie ihre Variable heißt und welche Wert das Item "Nein" bekommt, In meinem Beispie bin ich von 4 ausgegangen, da muss aber nicht sein

-> geben sie der Seite 9 eine Kennung (unter Fragebogen zusammensetzen). In meinem Beispiel ist die KEnnung 'seite_9'

-> wenn jetzt das Item 4 (Nein) der Frage TF01 ausgewählt wird, wird Seite 8 übersprungen und direkt zur Seite 9 gegangen.

Weitere Beispiele finden sie hier:
https://www.soscisurvey.de/help/doku.php/de:create:php-filters

PS: ich bin nicht der Support, es gibt also keine Garantie von mir, dass der Lösungsansatz funktioniert :)

PS2: bitte den Pretest Link immer direkt auf die entsprechende Seite setzen

by s192117 (400 points)
edited by s192117
Vielen Dank, dass Sie sich die Zeit nehmen. Schade allerdings, dass vom Support keine Antwort erfolgt.

Mit der neuen Eingabe funktioniert es auch nicht:

if (value ('TF 01';'TF02';'TF03') == 4) {
   goToPage('Zeiteinsatz');
}

Der Fehlercode: 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 if (value ('TF1';'TF2';'TF3') == 4) {
004    return 'go:Zeiteinsatz';
005 }
006 return 'ok';



Ich stehe etwas unter Zeitdruck. Eine Antwort des Supports wäre wünschenswert!
by s109993 (10.3k points)
edited by s109993
Mein Weg war schon richtig, nur ihr Code ist falsch :)
Versuchen Sie es doch einmal wie ich es Ihnen gezeigt habe.
Mehrere Variablen/Items können so per php gefiltert werden:

if ((value('E004_01') == 2) or (value('E005_01') == 2)) {
goToPage('Zeiteinsatz');
}

Aber das ist bei Ihnen eigentlich nicht notwendig.

Wenn sie mir einen Pretestlink direkt auf die Frage TF1 setzen, kann ich Ihnen den Filter auch setzen.

Alternativ probieren Sie es einmal nicht über Code, sondern über direkte Fragefilter: https://www.soscisurvey.de/help/doku.php/de:create:simple-filters

Der Support meldet sich regelmäßig morgens und abends.
by SoSci Survey (308k points)
Der Support schließt sich der Empfehlung an, zunächst einmal den Variablen-Namen und die relevanten Ausprägungen anhand der "Variablen-Übersicht "zu klären.

Außerdem bitte ich Sie um eine Erklärung (mit Variablennamen), wann genau der Filter was machen soll?
by s192117 (400 points)
Lieber Nutzer,

meinen herzlichsten Dank. Aufgrund ihres Vorschlages, es mit dem direkten Fragefilter noch einmal zu versuchen, hat es jetzt geklappt. Ich habe 3 verschiedene Bedingungen für jede Antwortoption angelegt.
Wie kommt es, dass Sie sich so engagieren?

Wie funktioniert es, den Pretest-Link auf eine bestimmte Frage zu setzen?

Mit dem php-Code hatte ich es nochmal probiert, was aber wieder daran gescheitert ist (nehme ich an), dass die Variablenkennung nicht korrekt von mir eingegeben wurde. In der Variablenübersicht stand TF01 und dann für jede Antwortoption eine Zahl von 1-4. Also bin ich davon ausgegangen, dass die jeweilige Antwortvariable TFjeweilige Zahl heißt. Und so habe ich es dann versucht einzugeben:

if ((value('TF1') == 4) or (value('TF2') == 4) or (value('TF3') ==4 ) {
goToPage('Zeiteinsatz');
}

die Zahl 4 hinter den Gleichzeichen steht doch dann für die der Filter nicht zutrifft oder?

Also noch einmal herzlichen Dank.

Alles Gute.
by SoSci Survey (308k points)
>  In der Variablenübersicht stand TF01

Bitte beachten Sie, dass Sie im Code "TF1" schreiben:

> (value('TF1') == 4)

Das sollte wieder zu einer Fehlermeldung führen. Gleiches gilt auch für die anderen beiden Variablennamen. Übernehmen Sie diese bitte unverändert aus der Variablen-Übersicht.

Wenn es danach noch nicht funktioniert, posten sie gerne auch die Debug-Information von der Seite: https://www.soscisurvey.de/help/doku.php/de:create:debugging

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

...