0 votes
in SoSci Survey (dt.) by s095605 (350 points)

Lieber Support,

leider komme ich nicht weiter.
Ich habe einige Bilder, die von den Probanden anhand eines bestimmten Kriteriums bewertet werden sollen (mit Schieberegler).
Eine Seite soll ein Bild enthalten und darunter erscheint der Regler.
Ich möchte, dass die Reihenfolge der Bilder pro Proband zufällig ist. Muss ich nun auf jeweils eine Seite extra ein Bild und einen Regler einfügen? Und kann ich dann einstellen, dass diese Seiten in der Reihenfolge zufällig erscheinen?
Oder gibt es eine Möglichkeit, einen Bilderordner einzufügen, aus welchem Sosci dann pro Proband zufällig die Bilder wählt?

Vielen Dank vorab für die Hilfe!

2 Answers

0 votes
by SoSci Survey (302k points)

Oder gibt es eine Möglichkeit, einen Bilderordner einzufügen, aus welchem Sosci dann pro Proband zufällig die Bilder wählt?

Ja, mittels Zufallsgenerator und loopPage() ist das prinzipiell möglich. Aber dafür müssten Sie in der Frage bitte zwei Informationen ergänzen:

  1. Um wie viele Bilder geht es insgesamt und wie viele davon soll jeder Proband bewerten?
  2. Nur relevant, wenn es insgesamt deutlich mehr Bilder sind als pro Proband angezeigt werden: Wie soll die Datenstruktur aussehen? Möchten Sie ein Variable pro Bild (insgesamt) oder eine Variable pro angezeigtem Bild, die sich jeweils auf ein anderes Bild bezieht? Oder soll es gar ein Datensatz pro Bild werden?
by s095605 (350 points)
Vielen Dank für die schnelle Antwort!

1. es geht um etwa +/- 50 Bilder. Jeder Proband soll alle Bilder bewerten, nur eben in unterschiedlicher Reihenfolge
Ich möchte, dass auf der Seite je ein Bild erscheint und darunter zwei dichotome Regler.
Einmal 'attraktiv - nicht attraktiv' und einmal 'gestresst - nicht gestresst'

Hier eine zusätzliche Frage: Kann ich einstellen, dass es weiter geht, sobald die Regler platziert wurden? Damit der Proband nicht jedes Mal auf weiter klicken muss?  
 
2. ist dann nicht relevant, verstehe ich das richtig?!  
2.
0 votes
by SoSci Survey (302k points)

Okay, Sie benötigen also 50 Kopien der Frage (z.B. RT01 bis RT50). Dafür keinen Zufallsgenerator, weil Sie ja ohnehin alle Bilder zeigen möchten.

Zunächst einmal benötigen Sie eine Liste Ihrer Bilder:

$bilder = array(
  1 => 'kleinerMann.jpg',
  2 => 'kleineFrau.jpg',
  3 => 'grosserMann.jpg',
  4 => 'grosseFrau.jpg',
  // u.s.w.
);

Mischen Sie die Indizes (1, 2, ...., 50)

$bildIDs = array_keys($bilder);
shuffle($bildIDs);

Und dann zeigen Sie die Bilder und zugehörige Fragen eine nach der anderen an.

$i = loopPage(count($bildIDs));
$bildID = $bildIDs[$i];
$bild = $bilder[$bildID];
$frageID = id('RT', $bildID);
html('<p><img src="'.$bild.'" alt=""></p>');
question($frageID);

Dann brauchen Sie noch ein wenig isset() und registerVariable(), damit es auch über mehrere Seiten korrekt funktioniert. Hier der gesamte Code:

$bilder = array(
  1 => 'kleinerMann.jpg',
  2 => 'kleineFrau.jpg',
  3 => 'grosserMann.jpg',
  4 => 'grosseFrau.jpg',
  // u.s.w.
);

if (!isset($bildIDs)) {
  $bildIDs = array_keys($bilder);
  shuffle($bildIDs);
  registerVariable($bildIDs);
}

$i = loopPage(count($bildIDs));
$bildID = $bildIDs[$i];
$bild = $bilder[$bildID];
$frageID = id('RT', $bildID);
html('<p><img src="'.$bild.'" alt=""></p>');
question($frageID);

Die Reihenfolge der Darstellung wird hier noch nicht gespeichert, aber das ließe sich relativ einfach ergänzen, falls gewünscht.

Hier eine zusätzliche Frage: Kann ich einstellen, dass es weiter geht, sobald die Regler platziert wurden? Damit der Proband nicht jedes Mal auf weiter klicken muss?

Könnte man mittels JavaScript, aber ich würde bei einem Schieberegler explizit davon abraten. Denn beim Schieberegler darf der Teilnehmer (zu Recht) erwarten, dass man ihn nach dem Platzieren noch verschieben kann.

Wenn Sie nur Klicken möchten, dann können Sie es sich insgesamt einfacher machen: Legen Sie eine Frage vom Typ "Auswahlabfolge" an, verwenden Sie die Bilder (bzw. deren HTML-Code) als Itemtext und die Antwortoptionen (z.B. 0, 1, 2, 3, 4, 5) als Antwortoptionen, die Sie allerdings für jede Teilfrage eintragen müssen. Dann noch eine zufällige Abfolge für die Teilfragen einstellen - und Sie benötigen überhaupt keinen PHP-Code mehr.

by s095605 (350 points)
Hallo,

auch wenn die zweite Version für mich deutlich einfacher umsetzbar wäre, muss ich die erste Option wählen, mit Schieberegler. Auch wenn die Probanden dann jedes Mal 'weiter' klicken müssen...
Wo muss ich hierzu den Code einsetzen? Auf jeder Seite, auf der ein Bild zur Bewertung erscheint oder nur auf der ersten Seite der Bilderserie?
Und muss ich, außer den Namen meiner Bilder, etwas im Code ersetzen? Was bedeutet '$bildIDs'?

Zweite Frage: Muss ich hierzu einen Fragentyp 'Schieberegler' anlegen und als Unterfragen die Bilder. Oder muss ich je eine neue Fragebogenseite (je einen neuen Fragebogentyp) pro Bild erstellen?

Vielen Dank!
by SoSci Survey (302k points)
> Wo muss ich hierzu den Code einsetzen? Auf jeder Seite, auf der ein Bild zur Bewertung erscheint oder nur auf der ersten Seite der Bilderserie?

Das loopPage() sorgt dafür, dass Sie nur eine einzige Seite anlegen müssen - im Fragebogen aber für jedes Bild eine eigene Seite angezeigt wird.

> Und muss ich, außer den Namen meiner Bilder, etwas im Code ersetzen? Was bedeutet '$bildIDs'?

Die PHP-Variable $bildIDs speichert die Nummern der Bilder - genauer: Die randomisierte Reihenfolge dieser Nummern und damit der Bilder.

> Zweite Frage: Muss ich hierzu einen Fragentyp 'Schieberegler' anlegen und als Unterfragen die Bilder.

Der Code geht bisher davon aus, dass Sie für jedes Bild eine Frage anlegen (RT01, RT02, RT03, ...).

Wenn es wirklich nur ein ein Schieberegler pro Bild ist, könnten Sie aber eigentlich auch nur eine (!) Frage anlegen und zwar mit so vielen (gleichartigen) Items, wie Sie bilder haben. Die Zeilen

$frageID = id('RT', $bildID);
html('<p><img src="'.$bild.'" alt=""></p>');
question($frageID);

Müssten Sie dann nur wie folgt ändern:

html('<p><img src="'.$bild.'" alt=""></p>');
question('RT01', $bildID);
by s095605 (350 points)
edited by s095605
Ich revidiere meine vorangegangen Frage. Ich habe geschafft, was ich vorhatte. Allerdings erscheint noch ganz oben auf jeder Seite folgende Fehlermeldung:

" alt="">
by SoSci Survey (302k points)
Haben SIe auf der Fragebogenseite noch irgend (!) etwas anderes als den PHP-Code? Dort darf sonst nichts anderes (Bilder oder Fragen) sein.
by s095605 (350 points)
Es erscheint noch ganz oben auf jeder Seite (auf der ein Bild zur Bewertung erscheint) folgende Fehlermeldung:

" alt="">

Was bedeutet diese?
by SoSci Survey (302k points)
Da scheint etwas mit den Anführungszeichen (einfache und/oder doppelte) nicht zu stimmen. Möchten Sie vielleicht einmal Ihren PHP-Code posten?
by s095605 (350 points)
Leider weiß ich nicht, wie man den Code so schön, wie oben hier rein kopiert...

$bilder = array(
  1 => '<img src="pro://ANGE07.jpg">',
  2 => '<img src="pro://ANGE16.jpg">',
  3 => '<img src="pro://ANHE31.jpg">',
  4 => '<img src="pro://ANST12.jpg">',
  5 => '<img src="pro://ANVO26.JPG">',
  6 => '<img src="pro://BABE26.jpg">',
  7 => '<img src="pro://BEDA25.JPG">',
  8 => '<img src="pro://BEHA03.jpg">',
  9 => '<img src="pro://BEHA07.jpg">',
  10 => '<img src="pro://BEMA17.JPG">',
  11 => '<img src="pro://BIHE07.JPG">',
  12 => '<img src="pro://BIHE25.png">',
  13 => '<img src="pro://BIMI02.jpg">',
  14 => '<img src="pro://BRAR07.JPG">',
  15 => '<img src="pro://CLTH04.jpg">',
  16 => '<img src="pro://COMA24.jpg">',
  17 => '<img src="pro://COVO16.JPG">',
  18 => '<img src="pro://DOWO25.JPG">',
  19 => '<img src="pro://EDGI21.jpg">',
  20 => '<img src="pro://EDHE26.jpg">',
  21 => '<img src="pro://ELCH29.jpg">',
  22 => '<img src="pro://EMSE28.JPG">',
  23 => '<img src="pro://GAHE25.jpg">',
  24 => '<img src="pro://GEKL09.jpg">',
  25 => '<img src="pro://GEWO12.JPG">',
  26 => '<img src="pro://GIHE09.JPG">',
  27 => '<img src="pro://HADE08.jpg">',
  28 => '<img src="pro://IRBE06.jpg">',
  29 => '<img src="pro://IROL10.JPG">',
  30 => '<img src="pro://IRPE21.JPG">',
  31 => '<img src="pro://KAAL30.jpg">',
  32 => '<img src="pro://KAGU28.jpeg">',
  33 => '<img src="pro://KAWO09.JPG">',
  34 => '<img src="pro://KAWO13.JPG">',
  35 => '<img src="pro://KEHA24.jpg">',
  36 => '<img src="pro://LUOL12.jpg">',
  37 => '<img src="pro://MAPA05.jpg">',
  38 => '<img src="pro://MAPA18.jpg">',
  39 => '<img src="pro://NABE01.JPG">',
  40 => '<img src="pro://NIHA20.jpg">',
  41 => '<img src="pro://PEAN12.jpg">',
  42 => '<img src="pro://PEST01.JPG">',
  43 => '<img src="pro://SAMA07.jpg">',
  44 => '<img src="pro://SAWO05.jpg">',
  45 => '<img src="pro://SIDI16.jpg">',
  46 => '<img src="pro://SIMA12.jpg">',
  47 => '<img src="pro://MIBE21.JPG">',
  48 => '<img src="pro://MOLU15.jpg">');

if (!isset($bildIDs)) {
  $bildIDs = array_keys($bilder);
  shuffle($bildIDs);
  registerVariable($bildIDs);
}

$i = loopPage(count($bildIDs));
$bildID = $bildIDs[$i];
$bild = $bilder[$bildID];
$frageID = id('BA01', $bildID);
html('<p><img src="'.$bild.'" alt=""></p>');
question('BA01', $bildID);
by SoSci Survey (302k points)
Okay, das ist einfach :)

Sie können entweder im Array (zu Beginn) das <img>-Tag weglassen und nur den Dateinamen schreiben:

    $bilder = array(
      1 => 'pro://ANGE07.jpg',
      2 => 'pro://ANGE16.jpg',

... oder Sie lassen im html() am Ende das <img>-Tag weg:

    html('<p>'.$bild.'</p>');
    question('BA01', $bildID);

Im Moment haben Sie eine Verdoppelung, die zu ungültigem HTML-Code führt. Daher die fehlerhafte Anzeige.
by s095605 (350 points)
edited by s095605
Vielen Dank für den Tipp. Ich habe nun beide Varianten ausprobiert. Jetzt erscheint aber das gleiche Bild zweimal auf jeder Seite...

Und diese Warnung erscheint:
Warnung

Bitte beachten Sie, dass die von random() oder shuffle() erzeugten Zufallswerte nicht automatisch im Datensatz gespeichert werden. Zum Speichern können Sie ggf. die Funktion put() verwenden

Ich habe bereits einen technischen Funktionstest durchgeführt, da wurden alle Daten gespeichert. Ich hoffe, das hat keinen Einfluss auf die Speicherung der Ergebnisse?
by SoSci Survey (302k points)
Nur die Reihenfolge der Abfrage sehen Sie nicht in den Daten - das meint die Warnung.

> Jetzt erscheint aber das gleiche Bild zweimal auf jeder Seite...

Haben Sie das Bild zusätzlich noch in die Seite gezogen? Wenn nicht, posten Sie bitte nochmal den kompletten PHP-Code, wie Sie ihn verwenden und/oder einen Pretest-Link direkt (!) zur Seite, wo die Randomisierung passiert.
by s095605 (350 points)
Hier habe ich nun das <img>-Tag am Ende entfernt.
Ich habe auf dieser Seite nur den PHP-Code..

$bilder = array(
  1 => '<img src="pro://ANGE07.jpg">',
  2 => '<img src="pro://ANGE16.jpg">',
  3 => '<img src="pro://ANHE31.jpg">',
  4 => '<img src="pro://ANST12.jpg">',
  5 => '<img src="pro://ANVO26.JPG">',
  6 => '<img src="pro://BABE26.jpg">',
  7 => '<img src="pro://BEDA25.JPG">',
  8 => '<img src="pro://BEHA03.jpg">',
  9 => '<img src="pro://BEHA07.jpg">',
  10 => '<img src="pro://BEMA17.JPG">',
  11 => '<img src="pro://BIHE07.JPG">',
  12 => '<img src="pro://BIHE25.png">',
  13 => '<img src="pro://BIMI02.jpg">',
  14 => '<img src="pro://BRAR07.JPG">',
  15 => '<img src="pro://CLTH04.jpg">',
  16 => '<img src="pro://COMA24.jpg">',
  17 => '<img src="pro://COVO16.JPG">',
  18 => '<img src="pro://DOWO25.JPG">',
  19 => '<img src="pro://EDGI21.jpg">',
  20 => '<img src="pro://EDHE26.jpg">',
  21 => '<img src="pro://ELCH29.jpg">',
  22 => '<img src="pro://EMSE28.JPG">',
  23 => '<img src="pro://GAHE25.jpg">',
  24 => '<img src="pro://GEKL09.jpg">',
  25 => '<img src="pro://GEWO12.JPG">',
  26 => '<img src="pro://GIHE09.JPG">',
  27 => '<img src="pro://HADE08.jpg">',
  28 => '<img src="pro://IRBE06.jpg">',
  29 => '<img src="pro://IROL10.JPG">',
  30 => '<img src="pro://IRPE21.JPG">',
  31 => '<img src="pro://KAAL30.jpg">',
  32 => '<img src="pro://KAGU28.jpeg">',
  33 => '<img src="pro://KAWO09.JPG">',
  34 => '<img src="pro://KAWO13.JPG">',
  35 => '<img src="pro://KEHA24.jpg">',
  36 => '<img src="pro://LUOL12.jpg">',
  37 => '<img src="pro://MAPA05.jpg">',
  38 => '<img src="pro://MAPA18.jpg">',
  39 => '<img src="pro://NABE01.JPG">',
  40 => '<img src="pro://NIHA20.jpg">',
  41 => '<img src="pro://PEAN12.jpg">',
  42 => '<img src="pro://PEST01.JPG">',
  43 => '<img src="pro://SAMA07.jpg">',
  44 => '<img src="pro://SAWO05.jpg">',
  45 => '<img src="pro://SIDI16.jpg">',
  46 => '<img src="pro://SIMA12.jpg">',
  47 => '<img src="pro://MIBE21.JPG">',
  48 => '<img src="pro://MOLU15.jpg">');

if (!isset($bildIDs)) {
  $bildIDs = array_keys($bilder);
  shuffle($bildIDs);
  registerVariable($bildIDs);
}

$i = loopPage(count($bildIDs));
$bildID = $bildIDs[$i];
$bild = $bilder[$bildID];
$frageID = id('BA01', $bildID);
html('<p>'.$bild.'</p>');
question('BA01', $bildID);


Ich habe versuchsweise auch das <img>-Tag im Array und am Ende im html() entfernt. Dann erscheint nur noch ein Bild, aber oben auf der Fragebogenseite das hier: index.php%3Fi%3DJ4SYDEQ6069W%26file%3D1%26rnd%3D5092
by SoSci Survey (302k points)
> Dann erscheint nur noch ein Bild, aber oben auf der Fragebogenseite das hier:

Das ist der temporäre Dateiname des Bildes - es ist ja in der sicheren Dateiablage.

Was mich vielmehr wundert ist, warum das Bild trotzdem noch angezeigt wird. Könnten Sie vielleicht einen Pretest-Link zu der Seite posten? Das würde die Fehlersuche deutlich vereinfachen.

Gehe ich richtig in der Annahme, dass eines der Bilder bleibt, wenn Sie die Zeile
html('<p>'.$bild.'</p>');
testweise entfernen?

Was ist, wenn Sie die folgende Zeile entfernen?
question('BA01', $bildID);
by s095605 (350 points)
Das scheint die Lösung zu sein.
Wenn ich die Zeile
html('<p>'.$bild.'</p>');
komplett entferne, erscheint ein Bild mit Schieberegler im Fragebogen.
Jetzt mache ich noch einmal einen technischen Test und hoffe alle Daten werden nach wie vor gespeichert.

Vielen Dank für die Geduld und Hilfe!!!! Das ist ein großartiger Support!
by SoSci Survey (302k points)
Entweder Sie haben das Bild bereits in der Frage eingebunden - oder Sie verlieren mit der html()-Zeile jegliche Rotation ;)

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

...