0 votes
in SoSci Survey (dt.) by s275430 (140 points)

In meinem Fragebogen habe ich drei Aufmerksamkeits-Check-Items. Die Teilnehmenden sollen bei zwei falsch beantworteten dieser Kontroll-Items automatisch einen Screen-Out sehen und über den Quality Fail-Link zurück zum Panel-Anbieter geleitet werden.

An anderer Stelle im Forum hier habe ich diesen PHP-Code gefunden

if (
(value('AB01_04') == 5) &&
(value('BC02_08') == 1) &&
(value('CD03_06') == 5)
) {
put('IV01_01', 1);
} else {
put('IV01_01', 2);
}

frage mich aber, wo dieser und wo weitere PHP-Code-Schnipsel WO im Fragebogen platziert werden müssen, damit es funktioniert?

In meinem Fall müssen bestimmte Zahlen angekreuzt werden, daher hab ich den Code so angepasst:

if (
(value('KF_01_01') ≠ 4) &&
(value('KF_01_02') ≠ 3) &&
(value('KF_01_03') ≠ 3)
) {
put('IV01_01', 1);
} else {
put('IV01_01', 2);
}

  1. So würde der Code aber ja erst greifen, wenn alle 3 Kontrollitems falsch beantwortet wurden, dies soll aber bei bei 1 und 2 falsch, bei 1 u. 3 falsch und bei 2 u. 3 falsch, greifen.
  2. Wo wird dieser Code platziert, am Ende des Fragebogens?
  3. ...oder auf einer eigenen Seite direkt jeweils nach dem zweiten und dritten Aufmerksamkeitscheck, damit die TN den Fragebogen dann auch nicht umsonst noch zuende klicken sondern direkt zum Screenout kommen?
  4. Muss ich für die Nutzung der put-Funktion eine interne Variable anlegen und wenn ja, wo?
  5. Muss ich diese am Ende des Fragebogens nochmal aufrufen und abspeichern? Wenn ja wie?

Sie sehen, ich bin hier leider noch etwas verloren und hoffe auf Ihre Unterstützung...

1 Answer

0 votes
by SoSci Survey (327k points)

So würde der Code aber ja erst greifen, wenn alle 3 Kontrollitems falsch beantwortet

Das ist korrekt. Sie können aber auch einfach zählen:

$richtig = (value('KF01_01') == 4) + (value('KF01_02') == 3) + (value('KF01_03') == 3);

if ($richtig < 2) {
  // Screenout
  text('XY01');
  buttonHide();
  pageStop();
}

Das Symbol für "ungleich" wäre übrigens !=

Wo wird dieser Code platziert, am Ende des Fragebogens?

Genau an der Stelle, wo Sie den Screenout zeigen möchten. Also z.B. auf der Seite nach KF01.

...oder auf einer eigenen Seite direkt jeweils nach dem zweiten und dritten Aufmerksamkeitscheck,

Eine eigene Seite muss es nicht sein, oben auf der nächsten Seite reicht.

Muss ich für die Nutzung der put-Funktion eine interne Variable anlegen und wenn ja, wo?

Sie brauchen gar kein put(), wenn Sie nur einen Screenout und keine weitere Markierung im Datensatz haben möchten. Aber wenn Sie put() verwenden möchten, dann müssen Sie eine interne Variable anlegen, ja. Wie das geht, steht in der Anleitung zu internen Variablen, die übrigens auch in der Anleitung zu put() verlinkt wäre.

Muss ich diese am Ende des Fragebogens nochmal aufrufen und abspeichern? Wenn ja wie?

Sie müssen nicht - aber wenn Sie mit put() etwas im Datensatz notieren, erleichtert es Ihnen die Auswertung vielleicht ein wenig.

by s275430 (140 points)
danke für die Antwort! Ich habe daran anschließend noch eine Frage:
Lässt sich der redirect-Link (zur automatischen Aussortierung der TN, die 2 Kontroll-Items falsch beantworten) hier auch direkt einbauen? Also:

$richtig = (value('KF_01_01') == 4) + (value('KF_01_02') == 3) + (value('KF_01_03') == 3);

if ($richtig < 2) {
  redirect('https://survey.maximiles.com/quality?p=123907&m=%reference%');
}

?

Leider werden ich derzeit mit dieser Lösung noch (an unerwarteten Stellen) "zu Unrecht" aussortiert. Ich habe den folgenden PHP-Code auf der Seite der Items, in die auch das zweite Kontrollitem integriert ist, eingefügt:

Nach KF_01_02 (dieses Kontroll-Item ist zwischen andere Items zu perceived trustworthiness items gemischt):

$richtig = (value('KF_01_01') == 4) + (value('KF_01_02') == 3);

if ($richtig < 2) {
  redirect('https://survey.maximiles.com/quality?p=123907&m=%reference%');
}

...und Nach KF_01_03 (dieses Kontrollitem ist zwischen distributive justice items gemischt):

$richtig = (value('KF_01_01') == 4) + (value('KF_01_02') == 3) + (value('KF_01_03') == 3);

if ($richtig < 2) {
  redirect('https://survey.maximiles.com/quality?p=123907&m=%reference%');

Mögliche Fehlerquelle a)
Ich habe auf der Frageseite gesehen, dass unter "Variablen" folgende Antwortskala bei 'KF_01_02' beschrieben wird:
1 = stimme überhaupt nicht zu [0]
2 = [1]
3 = [2]
4 = [3]
5 = [4]
6 = stimme voll und ganz zu [5]

(gleiche Antwortskala bei KF_01_03 )
--> ist es wirklich == 3 wenn 3 angekreuzt werden soll und == 4 wenn 4 angekreuzt werden soll, oder der Antwortskala zufolge eher == 4 wenn 3 angekreuzt werden soll und ==5 wenn 4 angekreuzt werden soll?

Mögliche Fehlerquelle b)
Die Kontrollitems dürfen nicht zwischen andere Items gemischt werden, sondern müssen eine eigene "Frage" darstellen?
by SoSci Survey (327k points)
Meines Erachtens sind die Variablenkennungen im PHP-Code nicht korrekt. Es müsste wahrscheinlich KF01_01 statt KF_01_01 heißen.

Ansonsten kommantieren Sie das redirect() erstmal aus, zeigen Sie stattdessen nur eine Info an, z.B. mittels html('Redirect'); und prüfen Sie in der Debug-Information, was da im Hintegrund gerechnet wird.
by s275430 (140 points)
Danke für den Support!
Die Variablenbezeichnung war korrekt, aber die Antwortskala hat Probleme gemacht...jetzt läuft aber alles :)

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

...