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

Hallo,

ich habe es bereits geschafft, zehn Blöcke aus je 1 Text + 1 Frage zu erstellen und in zufälliger Reihenfolge zu rotieren. Das hat mit der Anleitung zu rotierenden Blöcken ganz gut funktioniert. Nun stehe ich allerdings vor dem Problem, dass ich vor jedem Block noch einen weiteren Text stellen möchte. Je nach Position im Fragebogen und (unabhängig vom Block) soll das dann ein anderer sein, d.h. am Anfang Text1 -> Block X, Text 2 -> Block Y, ... usw und ab dem vierten Block soll bis zum zehnten Block immer wieder der selbe Text4 vorangestellt sein.

Außerdem müsste jede Text+Block Kombination auf je einer Seite dargestellt werden. Ist dies möglich?

Bisher habe ich folgendes:

if (!isset($blocks)) {
    // Liste mit Text-Kennungen und zugehörigen Fragen
    $blocks = [
        ['EN12', 'EN02'],
        ['EN13', 'EN11'],
        ['EN14', 'EN10'],
        ['EN15', 'EN09'],
        ['EN16', 'EN08'],
        ['EN17', 'EN07'],
        ['EN18', 'EN03'],
        ['EN19', 'EN04'],
        ['EN20', 'EN05'],
        ['EN21', 'EN06']
        ];
 
    shuffle($blocks);
    registerVariable($blocks);

}
 
$i = loopPage(count($blocks));

question($blocks[$i][0]);
question($blocks[$i][1]);

1 Answer

0 votes
by SoSci Survey (309k points)

Wenn ich Sie korrekt verstehe, möchten Sie die texte unabhängig von der Rotation voranstellen. Am einfachsten machen Sie das in der Schleife, welche Ihre (randomisierten) Inhalte anzeigt. Also hier:

$i = loopPage(count($blocks));

question($blocks[$i][0]);
question($blocks[$i][1]);

Das $i sagt Ihnen ja, welche Wiederholung es ist. Das können Sie wie folgt ausnutzen:

$i = loopPage(count($blocks));
if ($i == 0) {
  show('XY01');
} elseif ($i == 1) {
  show('XY02');
} elseif ($i == 1) {
  show('XY03');
} else {
  show('XY04');
}
question($blocks[$i][0]);
question($blocks[$i][1]);

Das könnte man mit einem Array noch eleganter lösen ... aber im Prinzip ...

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

...