0 votes
in SoSci Survey (dt.) by s071753 (120 points)
edited by SoSci Survey

Hallo,

In meinem Experiment sollen die VPn eine aus vier Boxen mit verschiedenen Wahrscheinlichkeiten wählen. Der Gewinn soll über die Zuordnung der Antwort (A, B, C, D) zu einem Wert, der auf eine interne Variable läuft, am Ende ermittelt werden.

Dazu habe ich folgendes gemacht:

Es werden auf 4 aufeinanderfolgenden Seiten jeweils 4 Boxen mit den Antworten A, B, C, D gezeigt. Die Werte der Variable müssten hierzu 1, 2, 3, 4 sein.

Die jeweilige Antwort soll als Zahlenwert (jeweiliger Gewinn) in einer internen Variable gespeichert werden (eine IV für jede der vier Aufgaben).

Das sieht dann für die erste Auswahlaufgabe so aus:

if (value('CH01') == 1) {
  put('IV01_01', 10);
}
else if (value('CH01') == 2) {
  put('IV01_01', 10);
}
else if (value('CH01') == 3) {
  put('IV01_01', 15);
}
else if (value('CH01') == 4) {
  put('IV01_01', 12);
}

Es sind jeweils Zahlenwerte, die in der IV01_01 gespeichert werden sollen.

So ein Code wurde für alle vier aufeinander folgenden Entscheidungsaufgaben erstellt, so dass es Werte für die Variablen IV01_01, IV01_01, IV01_03 und IV01_04 gibt.

Diese Werte sollen am Ende zusammenaddiert werden. Dafür habe ich folgenden Code geschrieben:

$sum = valueSum(
         array(
           'IV01_01',
           'IV01_02',
           'IV01_03',
           'IV01_03'
         )
       );

Dann noch einen php:

replace('%winning%', '$sum');

Auf der Folgeseite dann der html-Code:

Congratulations! You have won %winning% cents!

-->Irgendwie wird aber am Ende der Platzhalter %winning% nicht durch den berechneten Wert $sum ersetzt, sondern durch den String $sum.

Muss ich den berechneten Wert von $sum irgendwo abspeichern bzw. stimmen die Codes?

Ganz großen Dank im Voraus!!

1 Answer

0 votes
by SoSci Survey (304k points)

Irgendwie wird aber am Ende der Platzhalter %winning% nicht durch den berechneten Wert $sum ersetzt, sondern durch den String $sum.

Das liegt daran, dass Sie den Text "$sum" setzen:

replace('%winning%', '$sum');

Lassen Sie die Anführungszeichen weg, um den Inhalt der Variable zu übergeben:

replace('%winning%', $sum);
by s071753 (120 points)
Danke für die schnelle Antwort!!

Jetzt kommt leider folgende Fehlermeldung:

**There are not enough parameters for the function replace(). 2 parameters are essential for proper processing. Please refer to the user manual for further details.**

und:

**There is an error in the PHP code:
Questionnaire Error: The PHP variable $sum has been used but the variable is yet undefined (the variable has no value).

PHP code

001 namespace s2survey\questionnaire\environment;
002
003 replace('%winning%', $sum);
004 return 'ok';**

Ich habe doch die Variable $sum wie folgt definiert: $sum = valueSum(
         array(
           'IV01_01',
           'IV01_02',
           'IV01_03',
           'IV01_03'
         )
       );


Warum funktioniert das nicht?
by SoSci Survey (304k points)
Bitte schreiben Sie das replace() in denselben PHP-Code, wo die Variable auch definiert wird, also unter das valueSum(). Variablen sind jesweils nur innerhalb eines PHP-Code-Blocks gültig, wenn die Gültigkeit nicht mittels registerVariable() erweitert wird.
by s071753 (120 points)
Juhuu, jetzt hat es funktioniert! Tausend 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

...