0 votes
in SoSci Survey (dt.) by s128789 (240 points)
edited by SoSci Survey

Liebes Support-Team,
ich möchte im Fragebogen 4 Bilder auf jeweils 4 Seiten zufällig darstellen lassen. Deren zufälliger Reihenfolge soll mittels interner Variable gespeichert werden.
Hinzu kommt, dass jede einzelne Seite (jedes Bild) aufgrund der zusätzlichen Darstellung einzelner Aussagen 7 Mal wiederholt wird.

Anbei mein Versuch die Bilder zufällig rotieren zu lassen und deren Reihenfolge abzuspeichern. Mein Problem, das Bild wechselt einmal nach einmaliger Darstellung gemeinsam mit einer Aussage, mal nach viermaliger Darstellung gemeinsam mit einer Aussage, usw.. Eigentlich sollte das Bild nach 7 maligen bewerten von Aussagen wechseln...

$blocks = array (
   1 => array('2_Spuren_Auto_v_Rad_w_Auto.jpg'),
   2 => array('2_Spuren_Auto_w_Rad_v_Auto.jpg'),
   3 => array('PBL_Rad_v_Auto_w_Auto.jpg'),
   4 => array('PBL_Rad_w_Auto_v_Auto.jpg')
);
$keys = array_keys($blocks);

shuffle($keys);

$bilder=array();

foreach ($keys as $key) {
   $bilder = array_merge($bilder, $blocks[$key]);
}

for ($i=0; $i<count($keys);$i++) {
   $id = id ('IV01', $keys[$i]);
   put($id,$i+1);
}

$bild=$bilder[0];
   html ('
     <img src ="'.$bild.'"/>
   ');

Hier schliesst sich der PHP-Code für meine Aussagen an. (Rotation von Aussagen; erstmalige Reihenfolge der Rotation der Aussagen merken, um auf die weiteren Bedingungen (Bilder) übernommen werden zu können; Loop für die Darstellung einer Frage pro Seite (neben dem Bild)--> die Darstellung für 'Elemente nebeneinander' präsentieren würde ich jetzt mal weg lassen.)

if (!isset($array1_shuffled)) {
    $array1 = array('RD01','RD05','RD11','SK04','SK06','SK08','BP02');
    $array2 = array('RD02','RD06','RD12','SK10','SK13','SK16','BP04');
    $array3 = array('RD03','RD07','RD13','SK11','SK14','SK17','BP05');
    $array4 = array('RD04','RD08','RD14','SK12','SK15','SK18','BP06');

    $array1_shuffled = [];
    $array2_shuffled = [];
    $array3_shuffled = [];
    $array4_shuffled = [];

    $indizes = array_keys($array1);
    shuffle($indizes);

    for ($i = 0; $i < count($indizes); $i++) {
        array_push($array1_shuffled, $array1[$indizes[$i]]);
        array_push($array2_shuffled, $array2[$indizes[$i]]);
        array_push($array3_shuffled, $array3[$indizes[$i]]);
        array_push($array4_shuffled, $array4[$indizes[$i]]);
    }

    registerVariable($array1_shuffled);
    registerVariable($array2_shuffled);
    registerVariable($array3_shuffled);
    registerVariable($array4_shuffled);
}

$frage1=loopPage($array1_shuffled);
question($frage1);

Ganz herzlichen Dank schon mal im Voraus.

Viele Grüße

by s128789 (240 points)
Achso, auf der nächsten Seite erscheint kein Bild, da mein Code nicht funktioniert.
 $bild = $bilder[0] ...

1 Answer

0 votes
by SoSci Survey (304k points)

Hinzu kommt, dass jede einzelne Seite (jedes Bild) aufgrund der zusätzlichen Darstellung einzelner Aussagen 7 Mal wiederholt wird.

Sehen Sie sich bitte einmal den Fragetyp "Auswahlabfolge" an. VIelleicht vereinfacht das Ihre Konstruktion erheblich.

Der PHP-Code sieht schon ganz ordentlich aus. Hier ein paar Optimierungen:

foreach ($keys as $key) {
   $bilder = array_merge($bilder, $blocks[$key]);
}

Sie möchten keine Arrays verbinden, sondern nur ein Element anhängen. Das erzielen Sie wie folgt:

foreach ($keys as $key) {
   $bilder[] = $blocks[$key];
}

Darüber hinaus sollen die Bilder nur ein einziges Mal gemischt werden. Fügen Sie dafür zu Beginn des Codes folgende Zeile ein:

if (!isset($bilder)) {

Und vor dem $bild=$bilder[0]; noch:

    registerVariable($bilder);
}

Der zweite PHP-Code sieht auch gut aus. Mit einer Ausnahme: Ich denke, Sie möchten zum Bild 1 immer die $fragen1 anzeigen, zu Bild 2 die $fragen2 u.s.w.

Damit das Klappt, speichern Sie mit regisiterVariable($keys) noch die Schlüssel für Die Bildabfolge. Dann können Sie im zweiten Teil immer das richtige Fragen-Set auswählen. Wenn Sie die 4 Sets in ein verschachteltes Array packen, dann tun Sie sich damit leichter.

Mehr Tipps gerne auf Nachfrage. Der Übersichtlichkeit halber am besten als "related question" (Knopf unter dieser Antwort). Ach ja: PHP-Code mitte mit dem Knopf {} als solchen formatieren. Danke.

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

...