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

Ja, die Beiträge habe ich gelesen und ich sehe, dass hier ähnliche Probleme vorliegen. Eine Lösung für mich habe ich leider noch nicht entdeckt.

Den Zufallsgenerator habe ich angelegt, und die Zettel heißen jetzt nur noch "004", "005" etc. Davon ziehe ich 30 pro Interview.

Den Zufallsgenerator habe ich ganz oben auf der ersten Seite, auf der 20 Bilder erscheinen sollten, welche die Probanden sich merken sollen.

$a=array(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2);
shuffle($a);
for ($i=0; $i<count($a); $i++) {
$id = id('IV01', $i + 1);
put($id, $a[$i]);
}
$a=loopPage($a);

Das ist der Code, welchen ich unter dem Zufallsgenerator auf Seite 1 (Bilder merken) eingefügt habe. Leider funktioniert gerade überhaupt nichts mehr... Es werden gar keine Bilder mehr angezeigt.

Ich habe eine interne Variable erstellt, aber nicht in den Fragebogen gezogen. Diese heißt IV01_01. In den gespeicherten Daten scheint zumindest die Randomisierung von "1" und "2" zu funktionieren und das wird auch in der IV abgespeichert.

Leider bin ich PHP-Anfänger und komme gerade nicht weiter...

related to an answer for: Bilder randomisieren

1 Answer

0 votes
by SoSci Survey (327k points)

Es kommt allerdings eine Fehlermeldeung, dass ich kein ganzes Array in einer IV spreichern kann.

Genau. Legen Sie in IV01 bitte erstmal 20 Variablen an. Und dann versuchen Sie folgendes:

put('IV01', $a);

Wenn das nicht klappt, dann einzeln:

for ($i=0; $i<20; $i++) {
    put(id('IV01', $i+1), $a[$i]);
}

Und die Bilder erscheinen aktuell auch nicht mehr im Fragebogen.

Das ist klar, denn Sie haben ja bisher keinen PHP-Code, welcher die Bilder anzeigen würde. Aber hier mal ein Tipp - ich nehme an, Ihr Zufallsgenerator heißt RG01:

$i = loopPage(20);
$variante = value(id('IV01', $i + 1));
$basis = value(id('RG01', $i + 1), 'label');
if ($variante == 1) {
  $bild = $basis.'_s.jpg';
} else {
  $bild = $basis.'_h.jpg';
}
html('<div><img src="'.$bild.'"></div>');
by s095605 (350 points)
Ich fasse es nicht, dass das funktioniert und ich verstehe es auch nicht bis ins letzte Detail, aber vielen Dank!!!
Jetzt werden 20 Bilder ausgewählt, 10 glückliche und 10 traurige in zufälliger Reihenfolge und es sind 20 verschiedene Personen. Perfekt.

Nun fehlt mir noch eine Kleinigkeit.
Ich möchte jedes Bild nur 10 Sekunden anzeigen und dann soll dsas nächste kommen. Der Weiter Button soll ausgeblendet werden. Dazu habe ich versucht eine Seite vorher einen Timer einzubauen, wie folgt:

> if (!isset($time0)) {  $time0 = time();  registerVariable($time0); }
$timer = 5;
if (time() >= $time0 + $timer) {
  goToPage('next');}
$remain = $time0 + $timer - time();
replace('%remain%', $remain);


Und dann fehlt mir noch das ganze für Seite 2, auf welcher nun nur neutrale Gesichter gezeigt werden. 10, die bereits auf Seite 1 erschienen sind und 10 neue (also Nummer 21-30 aus meinem Zufallsgenerator).

Entschuldigen Sie die kleinteiligen Fragen ;)
by SoSci Survey (327k points)
Versuchen Sie bitte erstmal, den o.g. Code zu verstehen. Haben Sie auch registerVariable() und isset() für die shuffle()-Randomisierung benutzt? Wenn nicht, dann werden im Datensatz noch nicht die richtigen Werte für happy/sad gespeichert bzw. sie werden bei jeder Bildanzeige überschrieben.

Wenn das zuverlässig läuft, dann machen wir weiter :)

Was den Timer angeht: Lassen Sie die PHP-Komponente weg und verwenden Sie nur den HTML-/JavaScript-Code aus der Anleitung. Für den Platzhalter %remain% setzen Sie fix 10000 ein.
asked May 26, 2020 in SoSci Survey (dt.) by s095605 (350 points)
edited May 27, 2020 by SoSci Survey
Bilder randomisieren - PHP Funktion

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

...