0 votes
in SoSci Survey (dt.) by s239401 (110 points)
edited by SoSci Survey

In meinem Projekt werden 3 Blöcke und die Seiten innerhalb der Blöcke rotiert.
Zusätzlich steht am Start jedes Blocks eine Instruktionscheck (inkl. Counter, der die Fehlversuche zählt), welcher richtig beantwortet werden muss, um mit dem Experiment fortfahren zu können.
Bei falschem Ausfüllen dieses Checks scheint aber die setPageOrder nicht mehr zu greifen.

Code für den Instruktionscheck (auf 2 Seiten):

// Page 1 'InsSub' Initiate instruction check failure counter
if(!isset($nFailSub)){
    $nFailSub = 0;
    registerVariable($nFailSub);
    put('IV08_03', $nFailSub);
}
// Page 2 'SubCheck 'Check if instruction check is solved, Display 'IC06' on Page 'InsSub' if wrong
if (value('IC01_01') != 2 || value('IC01_02') != 1 || value('IC01_03') != 2 || value('IC01_04') != 2) {
    $nFailSub += 1;
    registerVariable($nFailSub);
    put('IV08_01', $nFailSub);
    text('IC06');
    goToPage('InsSub');
}


// Randomisierung
$rotation = array(
  'add' => array('InsAdd', 'AddCheck', 'add1', 'add2', 'add3'),
  'sub' => array('InsSub', 'SubCheck', 'sub1', 'sub2', 'sub3'),
  'dis' => array('InsDis', 'DisCheck', 'dis1', 'dis2', 'dis3')
);
foreach ($rotation as $key => $pages) {
    $firstTwo = array_slice($pages, 0, 2);
    $rest = array_slice($pages, 2);
    shuffle($rest);
    $pages = array_merge($firstTwo, $rest);
  $rotation[$key] = $pages;
}
shuffle($rotation);
setPageOrder($rotation, 'demo');

So wie ich das sehe, scheint dies am goToPage-Befehl zu liegen. repeatPage('IC06') ist eine Alternative die zwar setPageOrder intakt lässt, dort ist aber das Problem, dass der Fehlversuche-Counter bei 1 stehen bleibt.

Wie kann erreichen, dass ich sowohl eine intakte setPageOrder und einen funktionierenden Fehlversuche-Counter in meinem Experiment habe?

Vielen Dank!

by SoSci Survey (328k points)
Eigentlich verträgt sich goToPage() mit setPageOrder(), wenn man innerhalb der Seitenabfolge springt. Was sagt denn die Debug-Information?

Auf welcher Seite steht denn die Randomisierung mit dem setPageOrder() ?

1 Answer

0 votes
by SoSci Survey (328k points)

repeatPage('IC06') ist eine Alternative die zwar setPageOrder intakt lässt, dort ist aber das Problem, dass der Fehlversuche-Counter bei 1 stehen bleibt.

Zählen Sie bitte einfach in eine interne Variable statt über registerVariable(), also zum Beispiel:

$counter = (int)value('IV01_01', 'code:ifany');
...
$counter++;
put('IV01_01', $counter);
by s239401 (110 points)
Mit der internen Variable anstatt registerVariable() und mit repeatPage() anstatt goToPage() funktioniert es tatsächlich ! Besten 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

...