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

0 votes

Guten Tag,

ich hatte anfangs den unteren Code benutzt, um die Reihenfolge von Audiodatein zu randomisieren. Nun möchte ich aber doch die männlichen und weiblichen Audios in zwei Blöcken präsentieren (nicht mehr alle gemischt vorher, egal welches Geschlecht). Die beiden Geschlechterblöcke sollen jeder Versuchsperson in randomisierter Reihenfolge erscheinen.
Nun habe ich also block1 mit weiblichen Audios und block2 mit männlichen Audios. Ich glaube wegen des loop page Elements in meinem Code zum Randomisieren innerhalb eines Blocks habe ich es bisher nicht geschafft, die Geschlechterblöcke zu randomisieren (da es sich soweit ich das verstanden habe nicht mit setpageorder verträgt). Könnten Sie mir vielleicht weiterhelfen?

    if (!isset($block1)) {
  // Liste mit Frage-Kennungen und zugehörigen Audio
  $block1 = [
    ['MT01', 'A001'],
    ['MT02', 'A002'],
    ['MT03', 'A003'],
    ['MT04', 'A004'],
    ['MT05', 'A005'],
    ['MT06', 'A006'],
    ['MT07', 'A007'],
    ['MT08', 'A008'],
    ['MT09', 'A009'],
    ['MT10', 'A010'],
    ['MT11', 'A011'],
    ['MT12', 'A012'],
    ['MT13', 'A013'],
    ['MT14', 'A014'],
    ['MT15', 'A015'],
    ['MT16', 'A016'],
    ['MT17', 'A017'],
    ['MT18', 'A018'],
    ['MT19', 'A019'],
    ['MT20', 'A020'],
    ['MT21', 'A021'],
    ['MT23', 'A023'],
    ['MT24', 'A024'],
    ['MT25', 'A025'],
    ['MT26', 'A026'],
    ['MT27', 'A027'],
    ['MT28', 'A028'],
    ['MT29', 'A029'],
    ['MT30', 'A030'],
    ['MT31', 'A031'],
    ['MT32', 'A032'],
  ];

  // Die Liste mischen
  shuffle($block1);
  // Die Listen auf allen Seiten verfügbar machen
  registerVariable($block1);
}
 
// Anzeige der Blöcke
$i = loopPage(count($block1));
 
// Audio abspielen
question($block1[$i][1]);
 
// Frage anzeigen
question($block1[$i][0]);

Vielen Dank!

MfG

related to an answer for: Seitenblöcke mischen
in SoSci Survey (dt.) by s187730 (140 points)

1 Answer

0 votes

Ich glaube wegen des loop page Elements in meinem Code zum Randomisieren innerhalb eines Blocks habe ich es bisher nicht geschafft, die Geschlechterblöcke zu randomisieren

Wenn Sie es mit setPageOrder() versucht haben, ist diese Einschätzung korrekt. Das lässt sich nicht mit loopPage() kombinieren.

Brauchen Sie aber auch nicht. Erstellen Sie doch einfach eine Liste aller Audio-Files.

$block1 = [...];
$block2 = [...];
shuffle($block1);
shuffle($block2);
if (value('RG01') == 1) {
  $liste = array_merge($block1, $block2);
} else {
  $liste = array_merge($block2, $block1);
}

RG01 bezieht sich hier auf einen Zufallsgenerator für die Abfolge und natürlich fehlt hier noch ein isset($liste) und Ihr loopPage() bezieht sich dann auf $liste ... aber der Rest ist klar, oder? ;)

by SoSci Survey (190k points)
Ah super, okay, vielen Dank!
Da ich hier ziemlich neu und unerfahren bin, bin ich mir nicht sicher wie ich mit question jetzt die jeweiligen Frage-Audio Paare auf einer Seite anzeigen/abspielen lasse. Könnten Sie mir weiterhelfen?
Der obige Code liefert Ihnen eine Liste der Pärchen. So wie Sie das auch in Ihrem ursprünglichen Code hatten. Der Rest des Codes bleibt also wie er war, nur dass Sie den Variablennamen ändern:

// Anzeige der Blöcke
$i = loopPage(count($liste));
 
// Audio abspielen
question($liste[$i][1]);
 
// Frage anzeigen
question($liste[$i][0]);
Vielen Dank! Ja, genau so hatte ich es auch gemacht und es hatte trotzdem nicht funktioniert, da dachte ich es wäre evtl. nicht richtig so. Habe meinen Leichtsinnsfehler woanders gefunden.
...