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

Ich verwende ein realtiv konpliziertes Design bei dem ich zwei Blöcke habe die randomisiert angezeigt werden (also entweder Block 1 zuerst und dann Block 2 oder anders herum) und zusätzlich die Seiten (je 48) Innerhalb der Blöcke auch randomisiert angezeigt werden. Dazu kommt noch, dass zwei Seiten (die Instuktionen der Blöcke) fix, je am Anfang der Blöcke stehen.
Soweit konnte ich alles umsetzen, nun kommt jedoch eine weitere Schwierigkeit hinzu:

Auf jeder Fragebogen-Seite ist eine Frage abgebildet, zusätzlich zu dieser soll nun auch ein Bild auf jeder Seite angezeigt werden, die Schwierigkeit ist dabei jedoch, dass aus einem Pool aus Bildern für jede Frage (also auf jeder Seite) randomisert ein Bild ausgewählt werden soll. Dabei sollen in Block 1 einmal alle Bilder angezeigt und im Block 2 auch noch einmal. Wie setze ich es um das ich auf jeder Seite ein Bild ziehen kann und am Ende des Blocks einmal alle Bilder (je eins auf einer Seite) angezeigt wurden?

Ich wäre dankbar für jede Hilfe und hoffe, dass es sich umsetzen lässt!

Liebste Grüße

1 Answer

0 votes
by SoSci Survey (335k points)

Ich würde empfehlen, dass Sie eine zusätzlichen Zufallsgenerator mit allen 48 Bildnamen anlegen. Aus diesem lassen Sie dann pro Interview auch jeweils alle 48 Bilder ziehen. Dadurch haben Sie 48 zusätzliche Variablen, wobei jede auf ein (immer anderes) Bild verweist.

Sie können nun relativ einfach bei der ersten Frage das erste Bild anzeigen, bei der zweiten Frage das zweite gezogene Bild u.s.w.

Ob Sie für Block zwei noch einen dritten Zufallsgenerator brauchen oder nicht, kommt auf Ihre Design an.

by s294359 (110 points)
vielen Dank schonmal.

Ich habe es mal Probeweise mit drei Bildern versucht, aber es klappt noch nicht. Es wird kein Bild angezeit und nur der Fehlercode:
"Die Variable RD04 gibt es in diesem Projekt nicht (siehe Variablen-Übersicht). Daher kann kein Antwort-Wert dafür ermittelt werden."
In der Variablen-Übersicht ist jedoch die Variable RD04 als solche dargestellt (siehe erste Nachricht)

Was ich gemacht habe war den Zufallsgenerator (RD04) mit den drei Bildnamen zu erstellen und pro Interview 3 Zettel ziehen zu lassen. Dann habe ich den Zufallsgenerator auf die drei Seiten platziert, auf denen die Bilder angezeigt werden sollten mit folgendem PHP-Code:

$zahl = value('RD04');  // Auslesen der gezogenen Zufallszahl
 
// Grafik in Abhängigkeit von der Zahl anzeigen
// (dafür wird HTML-Code verwendet)
if ($zahl == 1) {
  html('<p><img src="10_A_KI_1.png"></p>');
} elseif ($zahl == 2) {
  html('<p><img src="80_A_KI_1.png"></p>');
} elseif ($zahl == 3) {
  html('<p><img src="10_j_1.png"></p>');
}

Können Sie mir noch weiterhelfen, dieses Problem zu lösen?
Vielen Herzlichen Dank im Voraus!
by SoSci Survey (335k points)
> Die Variable RD04 gibt es in diesem Projekt nicht (siehe Variablen-Übersicht)

Haben Sie denn man in die Variablen-Übersicht oder in den Karteireiter "Variablen" Ihres Zufallsgenerator geschaut?

Generell ist die Lösung mit einem IF-Konstrukt bei einer größeren Anzahl Bilder nicht sehr elegant. Sinnvoller wäre es, wenn Sie direkt die Bildnamen im Zufallsgenerator ablegen, und diese im HTML-Code vewenden, z.B.

html('<p><img src="'.value('RD04x01', 'label').'" alt=""></p>');

Zum Verständnis: Die Punkte (.) verknüpfen Teilstrings zu einem durchgehenden String - in dem Fall zum HTML-Code für das Bild.
by s294359 (110 points)
Vielen Dank, das Variablen-Problem konnte ich lösen, es stand neben "RD04" auch "RD04_CP" in der Variablen-Übersicht und damit hat es dann geklappt. Leider wird nun aber auf drei Seiten das gleiche Bild angezeigt anstelle von den drei unterschiedlichen, wie könnte ich dieses Problem noch lösen? (Der Code ist weiterhin derselbe aus meiner voherigen Nachricht)

Wenn Sie jedoch meinen, das das IF-Konstrukt keine ideale Lösung ist dann würde ich mich der anderen Option zuwenden. Leider konnte ich hier bisher noch nicht ganz folgen und mit ausprobieren und weiterer Recherche hat es nie problemlos geklappt. Mein letzer Versuch war folgender:

Ich habe die Bildnamen (z.B. 10_A_KI_1.png) beim Zufallsgernerator als Zettel (Inhalte) hinterlegt.
Den HTML-Code habe ich wie folgt auf jede Seite unter dem Zufallsgenerator platziert:
<p><img src="'.value('RD04x01', 'label').'" alt=""></p>
<p><img src="'.value('RD04x02', 'label').'" alt=""></p>
<p><img src="'.value('RD04x03', 'label').'" alt=""></p>

Was jetzt passiert ist jedoch auch, dass auf den drei Seiten immer das gleiche Bild angezeigt wird. Wie kann ich sichersteller, dass die randomiserung funktioniert und auf jeder Seite eine andere Zufallszahl und damit ein anderes Bild gezogen wird?

Ich habe echt viel ausprobiert aber komme alleine nicht weiter, also vielen Dank nochmal!
by SoSci Survey (335k points)
>  es stand neben "RD04" auch "RD04_CP" in der Variablen-Übersicht und damit hat es dann geklappt.

Ich befürchte, da haben Sie genau die falsche Variable erwischt! Die CP-Variable zählt einfach nur, wie häufig der Zufallsgenerator schon vollständig geleert wurde.

> Den HTML-Code habe ich wie folgt auf jede Seite unter dem Zufallsgenerator platziert

Bitte fügen Sie doch den Code aus meiner letzten Antwort mal als PHP-Code (!) ein.
by s294359 (110 points)
Ich habe je beide Varianten nochmal ausprobiert, bin jedoch mit beiden noch nocht an mein Ziel gekommen. ..

>Ich befürchte, da haben Sie genau die falsche Variable erwischt! Die CP-Variable zählt einfach nur, wie häufig der Zufallsgenerator schon vollständig geleert wurde

Okay, danke, dass ist gut zu wissen, jedoch war ja mein eigentliches Problem, dass mir mit der Variable  "RD04" der Fehlercode angezeigt wurde. Woran könnte es denn liegen, das die Variable nicht gefunden wird?

>Bitte fügen Sie doch den Code aus meiner letzten Antwort mal als PHP-Code (!) ein.

Ich habe den Zufallsgenerator wie folgt auf den Seiten plaziert (je unter den Zufallsgenerator):
html('<p><img src="'.value('RD04x01', 'label').'" alt=""></p>');

Die Zufallsauswahl klappt auch auf der ersten Seite, jedoch wird nun natürlich das gleiche Bild auf den folgenden Seiten auch angezeigt. Wie schaffe ich es, dass auf jeder Seite neu (ohne Zurücklegen) ein Bild gezogen wird?
by SoSci Survey (335k points)
> Wie schaffe ich es, dass auf jeder Seite neu (ohne Zurücklegen) ein Bild gezogen wird?

Sie haben ja einen Pool an Bildern im Zufallsgenerator und lassen daraus so viele ziehen (ggf. alle), wie Sie anzeigen möchten. Dadurch bekommen Sie vom Zufallsgenerator eine Reihen von Variablen, also RD04x01, RD04x02, u.s.w.

Wenn Sie manuell eine Seite pro Bild anlegen wollten, würden Sie die Kennung immer variieren.

 Aber wahrscheinlich wäre es wesentlich sinnvoller, dass Sie mit loopPage() arbeiten, um die Seiten anzuzeigen. Geben Sie mir nochmal Infos:

1. Wie viele Bilder sind es?
2. Zeigen sie zu den Bildern auch eine Frage an?
3. In welcher Struktur benötigen Sie ggf. die Antworten aus (2) für die Auswertung?
by s294359 (110 points)
Das heißt ich müsste in dem php-Code auf jeder seite eine andere Variable aus dem Zufallsgenerator angeben - gebe ich dann damit nicht vor, das dann genau das zugehörige Bild zu dieser Variable gezogen wird und nicht mehr zufällig oder verstehe ich das falsch?

loopPage würde wahrscheinlich mit meinen anderen Randomisierungen kollidieren, wäre ansonsten eine Option mit Urnen ihrer Meinung nach denkbar?

Zu ihren Fragen:
Also es sind je 48 Bilder die jeweils alle zufällig in zwei von zwei Blöcken angezeigt werden sollen (in einem Interview sollen also zweimal alle 48 Bilder angezeigt werden). Zu jedem Bild soll auch eine Frage gezeigt werden. Die Schwierigkeit hier sowohl Bilder als auch Items sollen randomisiert angezeigt werden, bisher habe ich es so gelöst das ich pro Seite ein Item platziert habe und mit folgendem Code und drei Zufallsgeneratoren die Blöckezuteilung (auch welcher Block zu erst kommt ist randomisiert) sowie die Randomosierung der Seiten erziehle (falls das hier auch als Kontext relevant sein sollte):

$blockfolge = array_values(valueList('RD01'));
$blocks = [
  1 => valueList('RD02', null, 'label'),
  2 => valueList('RD03', null, 'label'),
];
$gesamtliste = array_merge(
  ['IN02'],
  $blocks[$blockfolge[0]],
  ['IN03'],
  $blocks[$blockfolge[1]]
);
setPageOrder($gesamtliste, 'ED');

Für die Auswertung ist es wichtig zu wissen welches Bild bei welchem Item angezeit wurde, beantwortet das ihre Frage 3?

Vielen lieben Dank!
by SoSci Survey (335k points)
> loopPage würde wahrscheinlich mit meinen anderen Randomisierungen kollidieren

Ja, das ist korrekt. Und ja, Ihr Code als Kontext ist hilfreich, danke. setPageOrder() und loopPage()  können nicht kombiniert werden. Man könnte den Loop bestenfalls  schon in der Seitenabfolge vorsehen ... aber wenn Sie jetzt ohnehin schon alle Seiten haben, dann brauchen wir es nicht unnötig kompliziert zu machen.

> Das heißt ich müsste in dem php-Code auf jeder seite eine andere Variable aus dem Zufallsgenerator angeben - gebe ich dann damit nicht vor, das dann genau das zugehörige Bild zu dieser Variable gezogen wird

Das ist das schöne am Zufallsgenerator. RD04x01 wird ja in jedem Interview auf ein anderes Bild verweisen :)

> Für die Auswertung ist es wichtig zu wissen welches Bild bei welchem Item angezeit wurde, beantwortet das ihre Frage 3?

Diese Zuordnung würden Sie anhand von RD04x01 im Datensatz sehen.

Aber meine Frage ist eigentlich eher, ob Sie die Rating untereinander (long format) oder nebeneinander (wide format) haben möchten. Konkret meine ich das hier: https://www.soscisurvey.de/help/doku.php/de:create:multilevel

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

...