0 votes
in SoSci Survey (dt.) by s092446 (200 points)

Hallo zusammen,

für meinen Fragebogen möchte ich Teilnehmern ermöglichen, sich ihren eigenen Wert zur Computerselbstwirksamkeit ausgeben zu lassen. Dafür habe ich die Konfidenzintervalle berechnet. Der Mittelwert des Teilnehmers müsste gemäß der Konfidenzintervalle einmal mit 12 addiert und einmal subtrahiert werden. Dann müsste der Wert mit dem Mittelwert 118,77 verglichen werden und gemäß dieses Vergleichs müsste ein Textbaustein erscheinen. In dem Item F402 sind auch invertierte Items. Muss ich hier etwas bestimmtes beachten?

Ich habe folgenden Code geschrieben:

// Wert/Ergebnis ermitteln
$value = valueMean('F402');
// Anzeige des richtigen Textbausteins
if ($value < 0) {
  // Keine gültigen Daten in $value - keine Ausgabe
} elseif ($sum = valueSum($value, '12')) < 118.77 {;
  text('Ergebnis_gering');
} elseif ($sum = valueSum($value, '-12')) > 118.77 {;
  text('Ergebnis_hoch');
} else {
  text('Ergebnis_mittel');
}

Folgende Fehlermeldung erhalte ich:
There is an error in the PHP code:
Questionnaire Error: Command or string (text) unfinished

A command, e.g. question() is missing a semicolon or
a string (text in quotation marks) is unclosed or
the string itself contains an apostrophe, e.g. html('Let's do it!'); – if the latter is the case, please type in a backslash (\) first.
Perhaps the opening and closing braces for the statement blocks are mismatched.
PHP code

003 
004 $value = valueMean('F402');
005 
006 if ($value < 0) {
007   
008 } elseif ($sum = valueSum($value, '12')) < 118.77 {;
009   text('Ergebnis_gering');
010 } elseif ($sum = valueSum($value, '-12')) > 118.77 {;
011   text('Ergebnis_hoch');

Vielen Dank im Voraus!!

1 Answer

0 votes
by SoSci Survey (305k points)
edited by SoSci Survey
 
Best answer

PHP möchte bei IF-Bedingungen generell eine Klammer u die Bedingung. Statt

if ($sum = valueSum($value, '12')) < 118.77 {

muss es heißen

if (($sum = valueSum($value, '12')) < 118.77) {

Und das Semikolon dahinter sollte auch weg ... vermutlich hat es keinen Effekt, aber benötigt wird es auf alle Fälle nicht.

Inhaltlich macht es vermutlich keinen Sinn, dass Sie als Parameter in der Funktion valueSum() den Mittelwert aus F402 eintragen, denn an erster Stelle muss die Kennung einer Frage stehen. Gegenvorschlag:

// Wert/Ergebnis ermitteln
$value = valueMean('F402');
$valSum = valueSum('F402');
// Anzeige des richtigen Textbausteins
if ($value < 0) {
  // Keine gültigen Daten in $value - keine Ausgabe
} elseif ($valSum < 118.77) {
  text('Ergebnis_gering');
} elseif ($valSum > 118.77) {
  text('Ergebnis_hoch');
} else {
  text('Ergebnis_mittel');
}
by s092446 (200 points)
Vielen Dank für die schnelle Rückmeldung! Ich glaube nur, dass hinter 118.77 noch die Klammern geschlossen werden müssen, oder? So hat der Code auf jeden Fall funktioniert. :-)
by s092446 (200 points)
Eine Frage habe ich jedoch noch dazu: Wie gehe ich mit dem +12 und -12 vor? Denn eigentlich soll der Wert des Teilnehmers mit + 12 addiert werden, bevor überprüft wird, ob der Wert  <118.77 ist und der Wert des Teilnehmers soll ebenfalls mit - 12 subtrahiert werden, bevor überprüft wird, ob der Wert noch >118.77 ist... Können Sie mir hier noch weiterhelfen? Vielen Dank!
by SoSci Survey (305k points)
Ja, was die Klammer angeht, haben Sie natürlich recht - ich habe es oben korrigiert, falls jemand einmal über diese Antwort stolpert.

> Wie gehe ich mit dem +12 und -12 vor? Denn eigentlich soll der Wert des Teilnehmers mit + 12 addiert werden, bevor überprüft wird, ob der Wert  <118.77 ist

Das können Sie einfach ergänzen. Entweder direkt bei der Berechnung der Summe...

$valSum = valueSum('F402') + 12;

... das macht aber nur Sinn, wenn die Summe in beiden Fällen um 12 verschoben werden soll. Sonst addieren/subtrahieren Sie direkt bei der Prüfung der Summe

} elseif (($valSum + 12) < 118.77)

Ich denke aber, dass Sie am besten einfach gleich die richtigen Grenzwerte nehmen:

} elseif ($valSum < 106.77) {
  text('Ergebnis_gering');
} elseif ($valSum > 130.77) {
  text('Ergebnis_hoch');
}
by s092446 (200 points)
Perfekt, vielen Dank für die schnelle Unterstützung!

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

...