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,
wir möchten unseren Teilnehmern am Ende der Befragung eine kurze Rückmeldung Ihrer Lebenszufriedenheit geben.
Allerdings funktioniert die Auswertung 'durchschnittlichzufrieden' nicht, d.h. selbst wenn man die Items dementsprechend beantwortet, erhält man stattdessen die Rückmeldung 'zufrieden'. Hier ist der entsprechende PHP-Code dazu:

$sumSW = valueSum ('SW02', array(1,2,3,4,5,)); 
if ($sumSW > 30) {
  text('SW_extremzufrieden');
} elseif ($sumSW < 20) {
  text('SW_eherunzufrieden');
} elseif ($sumSW <= 30) {
  text('SW_zufrieden');
} elseif ($sumSW > 20) {
  text('SW_zufrieden');
} elseif ($sumSW = 20) {
  text('SW_durchschnittlichzufrieden');
}

Wo könnte der Fehler sein?

Vielen Dank im Voraus.

in SoSci Survey (dt.) by s081908 (300 points)
Tipp: Verwenden Sie den {}-Knopf, um PHP-Code als Code zu markieren und entsprechend zu formatieren. Ich habe mit erlaubt, das der Leserlichkeit halber in der Frage anzupassen.

1 Answer

0 votes

Bitte kontrollieren Sie die Reihenfolge der Bedingungen im IF-Filter. Ich nehme einmal den Wert 20 als Beispiel:

Der erste Filter trifft nicht zu ($sumSW > 30) und auch der zweite nicht ($sumSW < 20), aber der dritte schon, denn 20 ist kleiner/gleich 30 ($sumSW <= 30). An dieses Stelle wird der Text 'SW_zufrieden' ausgegeben und der Filter nicht weiter verarbeitet.

by SoSci Survey (60k points)
Vielen Dank für die schnelle Antwort. Ich habe die Reihenfolge entsprechend angepasst:

{ $sumSW = valueSum ('SW02', array(1,2,3,4,5,));
if ($sumSW > 30) {
  text('SW_extremzufrieden');
} elseif ($sumSW <= 30) {
  text('SW_zufrieden');
} elseif ($sumSW > 20) {
  text('SW_zufrieden');
} elseif ($sumSW = 20) {
  text('SW_durchschnittlichzufrieden');
} elseif ($sumSW < 20) {
  text('SW_eherunzufrieden');
} }

Leider funktioniert die Auswertung immer noch nicht.
Ups jeweils erste und letzte Klammer war ein Formatierungsversuch und ist natürlich nicht im PHP-Code im Fragebogen enthalten.
Nun ja ... das <= 30 (nun an Stelle 2) trifft ja immer noch auf den Wert 20 zu. Versuchen Sie es doch einmal mit: >30, >20, =20, <20. Wo dann der Text "SW_zufrieden" noch hineinpassen soll, ist mir allerdings nicht ganz klar. Was wäre denn ein Wert, wo dieser auftauchen soll?
PS: Die Formatierung als Code klappt nur in der Frage - nicht in Kommentaren :)
Mit der von Ihnen vorgeschlagenen Reihenfolge funktioniert jetzt die Rückmeldung 'durchschnittlich zufrieden'. Dafür aber allerdings komischerweise nicht mehr die Rückmeldung 'eher unzufrieden', stattdessen erscheint erneut 'durchschnittlichzufrieden'.
Für welchen Wert denn? Möchten Sie Ihre Frage oben einfach nochmal editieren und den aktuellen Code zusätzlich ergänzen? Oder den aktuellen Code in einem Kommentar posten?
$sumSW = valueSum ('SW02', array(1,2,3,4,5,));
if ($sumSW > 30) {
  text('SW_extremzufrieden');
} elseif ($sumSW > 20) {
  text('SW_zufrieden');
} elseif ($sumSW = 20) {
  text('SW_durchschnittlichzufrieden');
} elseif ($sumSW < 20) {
  text('SW_eherunzufrieden');
}


für einen Wert unter 20 (ich hab es für den Wert 5 ausprobiert) erscheint jetzt die Rückmeldung 'durchschnittlichzufrieden'
Oh ja ... ein Klassiker :) Für den Vergleich müssen Sie ein doppeltes Gleichheitszeichen verwenden, nicht das einfache. Das einfache in der dritten Bedingung sorgt dafür, dass Sie der Variable $sumSW den Wert 20 zuweisen.
Juhu, jetzt klappt es! Vielen Dank!
...