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 Morgen,
Weiterführende Frage zum Thema Zufallsgenerator und valueList().
valueList() funktioniert und die Werte im Array können ausgelesen werden.
Jetzt hänge ich an der Frage, wie ich die Arraywerte aus dem Zufallsgenerator wieder mit meinen anzuzeigenden Fragen verknüpfen muss. Die werden nicht angezeigt. Ich hatte versucht sie direkt in den Zufallsgenerator zu schreiben, aber das scheint nicht zu klappen.

// Inhalte in Arrays auflisten
$personen = array(
  1 => '001.jpg',
  2 => '002.jpg',
  3 => '003.jpg',
  4 => '004.jpg',
  5 => '005.jpg',
  6 => '006.jpg',);

// Mischen dürfen wir nur einmal, daher isset()
if (!isset($orderP)) {
  // Sechsmal die Personen
  $orderP = array();
  for ($i=0; $i<6; $i++) {
    $keysP = array_keys($personen);  
// Erstmal die Nummer 1 bis 6 für die Personen ...
    shuffle($keysP);  
// ... mischen
    debug($keysP);
    $orderP = array_merge($orderP, $keysP);  
// Und in eine Liste schreiben, die immer länger wird
  }



 // Aussagen
 // Zufallsgenerator und dann auslesen der Werte als Array
$aussagen = valueList('E006');
debug($aussagen);

  $orderA = array_values($aussagen);
  // Jetzt noch zwischenspeichern, damit es über 36 Seiten hinweg funktioniert
  registerVariable($orderP);
  registerVariable($orderA);
  

// Abfolge speichern
put('E001_01', implode(',', $orderP));
// zum Anzeigen im Debug Mode 
$toShow1 = implode(',', $orderP);
debug($toShow1);


put('E002_01', implode(',', $orderA));
// zum Anzeigen im Debug Mode 
$toShow2 = implode(',', $orderA);
debug($toShow2);


}
// Hier wird das Programm aus den Arrays nur noch "abgespult"
$i = loopPage(count($orderA));


// Person
debug($i);
debug($orderP);
html('<img src="'.$personen[$orderP[$i]].'" alt="">');
// Aussage
show($aussagen[$orderA[$i]]);

Müssen dafür mit if alle Werte mit den Fragen verbunden werden? Und falls ja, an welcher Stelle? Hatte damit bisher auch kein Glück.

if ($aussagen == 1) {
  question('G001');
} elseif ($aussagen == 2) {
  question('G002');
} elseif ($aussagen == 3) {
  question('G003');
} elseif ($aussagen == 4) {
  question('G004');
} elseif ($aussagen == 5) {
  question('G005'); // usw.

Danke und liebe Grüße

in SoSci Survey (dt.) by s015125 (125 points)

1 Answer

+1 vote

Die Funktion valueList() liefert standardmäßig die Codes, nicht die Beschriftungen der Optionen. Da die Codes numerisch sind, klappt es mit den Frage-Kennungen im Zufallsgenerator nicht (das sind die Beschriftungen zu den Codes). Ich müsste nochmal suchen, ob man valueList() schon zur Ausgabe der Beschriftungen ('labels') verleiten kann, glaube aber eher nciht.

Ich empfehle, die Zuordnung in einem Array zu speichern:

$fragen = array(
  1 => 'G001',
  2 => 'G002',
  // u.s.w.
);

Das Speichern der Abfolge der Aussagen können Sie sich speichern - diese steht ja bereits in E006. Also würde der Code für die Aussagen wie folgt aussehen:

$aussagen = valueList('E006');
$fragen = array(
  1 => 'G001',
  2 => 'G002',
  // u.s.w.
);

$i = loopPage(count($aussagen));
$frageID = $fragen[$aussagen[$i]];
show($frageID);
by SoSci Survey (88.6k points)
Wundervoll. Mit ein bisschen rumgebastel klappt jetzt alles.
Vielen Dank.
...