0 votes
in SoSci Survey (dt.) by s268020 (200 points)

Liebes Support Team,

Ich hätte gern, dass mein Fragebogen folgendermaßen aufgebaut ist:

  • Bild
  • Zitat
  • Frage
  • Bild
  • Zitat
  • Frage
  • usw

mit insgesamt 15 Bildern, Zitaten und Fragen. Ich würde die Bilder, Zitate und Fragen gern jeweils in einer randomisierten Reihenfolge zeigen, aber so, dass die "Kategorien" Bild/Zitat/Frage einander trotzdem systematisch folgen, wie oben. Leuchtet meine Erklärung ein?

Ich weiß bereits, wie ich es bewerkstelligen könnte, wenn es auf aufeinanderfolgenden Seiten wäre, aber hier ist mir wirklich wichtig, dass es alles auf einer Seite sein soll.

Vielen Dank im Voraus!

1 Answer

+1 vote
by SoSci Survey (345k points)

hier ist mir wirklich wichtig, dass es alles auf einer Seite sein soll.

Okay, das wird ein wenig lang - aber machbar ist es natürlich :)

Am einfachten legen Sie die Bilder als Array ab, z.B.

$bilder = [
  1 => 'bildA.jpg',
  2 => 'bildB.jpg',
  3 => 'bildC.jpg',
  // u.s.w.
];

Dann mischen Sie die Indizes

if (!isset($indices)) [
    $indices = array_keys($bilder);
    shuffle($indices);
}

Und dann spulen Sie das über eine Schleife ab:

foreach ($indices as $index) {
  $bild = $bilder[$index];
  html('<div><img src="'.$bild.'" alt=""></div>');
  text(id('ZT', $index));  // Zitat ZT01 bis ZT15 anzeigen
  question(id('QN', $index));  // Frage QN01 bis QN15 anzeigen
}
by s268020 (200 points)
Vielen Dank! Mehrere Folgefragen:
1. den Array und allen weiteren PHP Code lege ich auf der Fragebogenseite selbst an, korrekt?
2. wenn die Zitate und Fragen auch in einer randomisierten Reihenfolge sein sollen, brauche ich dann den Shuffle Befehl mehrmals? In dem Beispiel sieht es aus, als würde ich nur die Bilder shuffeln, aber vielleicht verstehe ich das falsch?

Liebe Grüße
by SoSci Survey (345k points)
ad 1) Ja. Einfach mal ausprobieren.

ad 2) Ich ging davon aus, dass Sie BIld und Frage immer beisammen halten möchten. Falls dem nicht so ist, müsste man den Code ein wenig anders aufbauen. Ist das der Fall?

Denken Sie bitte auch daran, dass Sie Reihenfolge im Moment nicht abgespeichert wird. Falls Sie diese Information in der Auswertung benötigen, müssten Sie da noch ein wenig Code aus der Anleitung ergänzen.
ago by s268020 (200 points)
Danke! Ich habe es inzwischen ausprobiert und auch versucht, den Code anzupassen, aber es bisher nicht ganz geschafft - genau, ich würde die Bilder, Zitate und Fragen gern zufällig kombinieren :)
Ich hätte jetzt 3 Arrays gemacht, je für die verschiedenen Stimuli, dann eine if-command wo ich sie alle drei shuffle, und dann eine for-loop wo ich alle drei untereinander anzeige? Ich weiß nur nicht so richtig, wie dieser Code korrekt geschrieben wird.
ago by SoSci Survey (345k points)
> ich würde die Bilder, Zitate und Fragen gern zufällig kombinieren :)

Dann sind die drei Arrays der richtige Weg. Wobei ... wenn Sie wild mischen, dann müssen Sie in der Auswertung wahrscheinlich rekonstruieren, welches Kombination jeweils angezeigt wurde.

Ich würde daher empfehlen, statt dreimal shuffle() drei Zufallsgeneratoren zu verwenden, die jeweils 15 Zettel (1-15) enthalten. Als Beschriftung für die Zettel würde ich die Dateinamen der Bilder und die Kennungen der Texte bzw. Fragen empfehlen.

$bilder = array_values(valueList('RG01', null, 'label'));
$texte = array_values(valueList('RG01', null, 'label'));
$fragen = array_values(valueList('RG01', null, 'label'));

foreach ($bilder as $i => $bild) {
  html('<div><img src="'.$bild.'" alt=""></div>');
  text($texts[$i]);
  question($fragen[$i]);
}
ago by s268020 (200 points)
edited ago by s268020
Update seit dem unten stehenden Kommentar: jetzt funktionieren nur die Bilder nicht (werden einfach nicht angezeigt), aber die Zitate immerhin schon.
Für die Bilder habe ich in einem Zufallsgeneratoren jeweils ihre Namen im Format "bild1.jpg", "bild2.jpg" usw eingetragen. Wie kann ich es stattdessen machen, damit es funktioniert?

Liebe Grüße


#######################

Wenn ich Dateinamen der Bilder und Kennungen der Texte in Zufallsgeneratoren einsetze funktioniert es aktuell nicht, und ich weiß nicht, woran es liegt.
Ich habe weiterhin versucht, zusätzlich zu Ihrem Code noch weiteren PhP Code für Bilder und Texte hinzu zu fügen

(wie jeweils hier https://www.soscisurvey.de/help/doku.php/de:create:randomization-text und hier https://www.soscisurvey.de/help/doku.php/de:create:randomization-media beschrieben),

aber auch das hat nicht funktioniert.

Wenn ich nur Ihren Code + Zufallsgeneratoren verwende (ohne zusätzlichen PhP Code), lauten die Fehler: "Für die Funktion text() wurde anstatt einer Kennung ein Parameter vom Typ NULL angegeben.", und die Bilder werden nicht angezeigt. Nur die Fragen werden normal gezeigt.

Wenn ich Ihren Code + Zufallsgeneratoren + PhP (nach Anweisungen der Links oben) verwende, lautet ein Fehler ebenfalls "Für die Funktion text() wurde anstatt einer Kennung ein Parameter vom Typ NULL angegeben.", aber zusätzlich bekomme ich auch "Im Befehl question() wurde keine Frage-Kennung angegeben." und "Die Variable ZG35 gibt es in diesem Projekt nicht (siehe Variablen-Übersicht). Daher kann kein Antwort-Wert dafür ermittelt werden."

Insgesamt bin ich sehr verwirrt und zweifle gerade daran, dass es überhaupt funktionieren kann, wie ursprünglich gedacht. Wissen Sie, wie es umsetzbar wäre bzw. weshalb Ihr Code nicht funktioniert? Gibt es einen nicht-erwähnten Zwischenschritt, mit dem ich die Fehler beheben würde?

Liebe Grüße
ago by SoSci Survey (345k points)
> jetzt funktionieren nur die Bilder nicht

Gut, dann müssen wir mal nachsehen, wo es klemmt. Ergänzen Sie bitte mal eine debug()-Zeile und teilen Sie mit, was angezeigt wird.

foreach ($bilder as $i => $bild) {
  debug($bild);
ago by s268020 (200 points)
Oh, super, danke! Mit der Debug Info habe ich es lösen können. :)
Fehler war (string) und es lag wohl daran, dass ich Anführungszeichen benutzt habe.

Vielen dank nochmal!

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

...