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

Hallo zusammen,
ich benötige eine Funktion in PHP, die verschiedene Bedingungen abprüft - und die zugleich überprüft, ob die jeweilige Variable überhaupt in der Datenbank vorhanden ist.

Quasi analog zu dem Javascript Code

var dropdown = document.getElementById("BT25");  // Auswahlfrage
var textfeld = document.getElementById("BT06_01");  // offenes Textfeld

        if (
                (dropdown && (dropdown.value != -9)) ||
                (textfeld && (textfeld.value.replace(/\s/g, "") != ""))
           )

Der folgende PHP Code führt nicht zu dem gewünschten Ergebnis, da sich die Bedingungen vermutlich gegenseitig behindern bzw. aufheben.

if ((trim(value('BT06_01')) != '') or (value('BT25') != -9)) {
html('
<b> Fragetext</b>
<p>Trifft nicht zu</p>
');
} else ...

Auch wenn BT06_01 nicht leer ist, wird der Fragetext und "trifft nicht zu" eingeblendet.
Ich habe online geschaut, bin mir aber unsicher, welchen Code man verwendet: !isset() oder !empty() oder eine andere Möglichkeit.
Man merkt ich bin leider kein gelernter Programmierer :(
Danke schon mal für die Unterstützung.

in SoSci Survey (dt.) by s081613 (425 points)
Das sieht so schlecht nicht aus.... was sagt denn die Debug-Information?
https://www.soscisurvey.de/help/doku.php/de:create:debugging
PS: value() liefert neben eine Warnung den leeren String ('') oder `false`, wenn die Variable nicht abgefragt wurde. Also z.B. `(value('BT25') != '')`
Die Debug-Information liefert folgende Informationen:

Wenn zuvor die Frage BT06 angezeigt (BT25 nicht aktiv bzw. nicht angezeigt) wird:
[Information]    value("BT06_01") = ""
[Information]    value("BT25") = ???
--> if-Bedingung wird nicht richtig ausgeführt, vermutlich wegen "value("BT25") = ???"

Wenn zuvor die Frage BT25 angezeigt (BT06 nicht aktiv bzw. nicht angezeigt) wird:
[Information]    value("BT06_01") = ""
[Information]    value("BT25") = -9
--> if-Bedingung wird korrekt ausgeführt

1 Answer

0 votes

Danke für die Debug-Information.

Funktioniert die Lösung, die ich im zweiten Kommentar zur Frage angedeutet haben?

if ((trim(value('BT06_01')) != '') or ((value('BT25') != -9) and (value('BT25') != ''))) {
  html('
    <b> Fragetext</b>
    <p>Trifft nicht zu</p>
  ');
} else ...
by SoSci Survey (81.7k points)
...