0 votes
in SoSci Survey (dt.) by s264231 (130 points)
edited by SoSci Survey

Liebes SoSci-Team,

ich randomisiere 12 Fragen mit folgendem Code:

// Seitenreihenfolge
if (!isset($seiten)) {
    $DA = array('DA1', 'DA2', 'DA3', 'DA4', 'DA5', 'DA6', 'DA7', 'DA8');
    shuffle($DA);
    $DA = array_chunk($DA, 4);
    $AG = array('AG1', 'AG2', 'AG3', 'AG4');
    shuffle($AG);
    $seiten = array_merge($DA[0], $AG, $DA[1]);
    $seiten[] = 'MC'; //nachfolgende Seite
    registerVariable($seiten);
}
setPageOrder($seiten);

Jetzt habe ich bei den Fragen DA2, DA3, DA4 und DA8 jeweils einen Attention Check (AC) im 8.Item (DAX_08). Ich möchte, dass Versuchspersonen, die bei zwei ACs durchfallen direkt zu Prolific weitegleitet werden. Wie kann ich das einarbeiten? Bei Verarbeitung der Antworten mittelt PHP funktioniert redirect leider nicht.
Grob der Code der auf den Seiten wäre (verkürzt): if ((value('DA2_01') != 3 AND value ('DA2_01') !=3)) {redirect('https://app.prolific.co/submissions/complete?XXX');}

Hier habe ich auch das Problem, dass sofort zu Prolific weitgeleitet wird, auch wenn beide Fragen noch nicht vorkamen.
Vielen Dank schonmal!

1 Answer

0 votes
by SoSci Survey (327k points)

Sie könnten im Karteireiter "PHP-Funktionen" eine Funktion ablegen, welche die Anzahl der falschen Antworten (in allen 8 Fragebatterien) zählt und ggf. den Redirect auslöst.

Diese Funktion würden Sie dann einfach auf allen 8 Seiten plus auf der Seite "MC" jeweils ganz oben einbinden.

by s264231 (130 points)
Ich habe folgenden Code nun eingefügt:

// Define questions and the correct answers
$questions = [
  'DA02_08' => 4,
  'DA03_08' => 1,
  'DA04_08' => 2,
  'DA08_08' => 3,
];
 
// Initialize counter variable
$points = 0;
 
// Check all questions in a loop
foreach ($questions as $variable=>$correct) {
  // Call up participant's answer
  $answer = value($variable);
  // Check and count point if applicable
  if ($answer == $correct) {
    $points++;  // synonymous with $points = $points + 1
  }
}

if($points >= 2) {
redirect('https://app.prolific.co/submissions/complete?XXX');}


Es kommt jetzt zum Teil eine Warnung, dass die Frage vorher nicht abgefragt wurde. Wie kann ich die Warnmldung umgehen? Sie kommt auch nur auf manchen Seiten.

Zudem wird noch nicht zur Seite weitergeleitet. Habe ich einen Fehler im Code?
by SoSci Survey (327k points)
Sie können die Warnung entweder ignorieren (Sie wissen ja, dass die Items noch nicht alle abgefragt wurden), oder Sie können ein 'code:ifany' im value()-Befehl ergänzen, also

$answer = value($variable, 'code:ifany');

> Zudem wird noch nicht zur Seite weitergeleitet.

Fügen Sie noch ein debug($points) ein, und posten Sie, was in der Debug-Information angezeigt wird. Also speziell, wenn Sie zwei Items falsch beantwortet haben.
by s264231 (130 points)
Vielen Dank! Hier die debug-Info:
Debug-Information für $points:
$points = 0 (integer)

Hier noch die restlichen debug-Infos zu dem Teil:
[Verarbeitung]    Erstelle Seite 14 in Fragebogen base
[Information]    value("DA02_08") = 5
[Information]    value("DA03_08") = ???
[Information]    value("DA04_08") = 5
[Information]    value("DA08_08") = ???
debug()    Inhalt: $points = 0 (integer)
by SoSci Survey (327k points)
Okay, sieht soweit gut aus. Sie haben laut Ihrer Liste keine gültigen Antworten gegeben, und entsprechend zählt der Code 0 richtige Antworten.

Dann passen Sie den Code doch mal so an, dass er falsche Antworten zählt. Anstatt

 if ($answer == $correct) {

wäre das dann

 if (($answer > 0) && ($answer != $correct)) {

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

...