0 votes
in SoSci Survey (dt.) by s206623 (160 points)
edited by s206623

Sehr geehrte Damen und Herren,

ich habe ein Problem mit meinem PHP Code für die Randomisierung meiner Bilder.
Ich habe alles entsprechend der Anleitung gemacht (inklusive dem Anlegen einer IV um nach dem Randomisieren das Ergebnis festzuhalten, dennoch wird mir eine Fehlermeldung angezeigt:
"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." (obwohl ich dies ja bereits getan habe).
Mein Code sieht nämlich folgendermaßen aus:

// Liste der Bilder definieren

$bilder = [
  1 => 'AIF1.png',
  2 => 'AIF2.png',
  3 => 'AIF3.png',
  4 => 'AIF4.png',
  5 => 'AIF5.png',
  6 => 'AIF6.png',
  7 => 'AIF7.png',
  8 => 'AIF8.png',
  9 => 'AIF9.png',
  10 => 'AIF10.png',
  11 => 'AIF11.png',
  12 => 'AIF12.png',
  13 => 'AIF13.png',
  14 => 'AIF14.png',
  15 => 'AIF15.png',
  16 => 'AIF16.png',
  17 => 'AIF17.png',
  18 => 'AIF18.png',
  19 => 'AIF19.png',
  20 => 'AIF20.png',
  21 => 'AIF21.png',
  22 => 'AIF22.png',
  23 => 'AIF23.png',
  24 => 'AIF24.png',
  25 => 'AIF25.png',
  26 => 'AIF26.png',
  27 => 'AIF27.png',
  28 => 'AIF28.png',
  29 => 'AIF29.png',
  30 => 'AIF30.png',
  31 => 'AIF31.png',
  32 => 'AIF32.png',
  33 => 'AIF33.png',
  34 => 'AIF34.png',
  35 => 'AIF35.png',
  36 => 'AIF36.png',
  37 => 'AIF37.png',
  38 => 'AIF38.png',
  39 => 'AIF39.png',
  40 => 'AIF40.png',
  41 => 'AIF41.png',
  42 => 'AIF42.png',
  43 => 'AIF43.png',
  44 => 'AIF44.png',
  45 => 'AIF45.png',
  46 => 'AIF46.png',
  47 => 'AIF47.png',
  48 => 'AIF48.png',
  49 => 'AIF49.png',
  50 => 'AIF50.png',
  51 => 'AIF50.png'
];

if (!isset($stimuli)) {

$stimuli = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,
26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];

shuffle($stimuli);

putList('FF03', $stimuli);

registerVariable($stimuli);
}
 
// In jedem Durchlauf einen anderen Eintrag aus $stimuli verwenden

$bildID = loopPage($stimuli);

$dateiname = $bilder[$bildID];
html('
    <div style="text-align: center; margin: 2em 0">
        <img src="" alt="" style="max-width: 100%">
    </div>
');

Zum besseren Verständnis: mein Ziel ist es diese 51 Bilder (und später 51 weitere Bilder auf der nächsten Seite) randomisiert zu präsentieren und zu jedem Bild die gleiche Frage beantworten zu lassen.

Über Ihre Rückmeldung und Hilfe wäre ich sehr dankbar.

Liebe Grüße

1 Answer

0 votes
by SoSci Survey (327k points)

dennoch wird mir eine Fehlermeldung angezeigt:
"Bitte beachten Sie, dass die von random() oder shuffle() erzeugten Zufallswerte nicht automatisch im Datensatz gespeichert werden.

Diese Information ist auch korrekt. Nicht automatisch. Die Hinweis-Funktion in SoSci Survey ist nicht so schlau, dass sie anhand des Kontextes erkennt, dass Sie putList() verwenden, um die Reihenfolge zu speichern. Daher erscheint der Hinweis weiterhin.

Sofern alles wunschgemäß funktioniert, müssen Sie also nichts ändern.

Ansonsten würde ich eine andere Anleitung empfehlen: Fragen rotieren - nur dass Sie statt der Frage-Kennungen die Bildnamen im Zufallsgenerator eintragen. Dies scheint mir wesentlich einfacher als die Lösung mit shuffle() und einer internen Variable.

by SoSci Survey (327k points)
Es scheint so, dass ZG01 auf Seite 4 im Fragebogen platziert wurde - oder dass dort nochmal PHP-Code steht. Was haben Sie denn auf Seite 4?

Generell scheint es mir sinnvoll, dass Sie den Code mit loopPage() auch direkt auf Seite 3 platzieren - dort können Sie ja durch den IF-Filter auch gleich den richtigen Zufallsgenerator abfragen.
by s206623 (160 points)
Hallo!

genau,

ich habe es bisher so gemacht wie wir es oben besprochen haben.
Auf Seite 4 habe ich den ersten Zufallsgenerator (ZG01) mit dem entsprechenden PHP-Code gesetzt.
Auf Seite 5 habe ich den zweiten Zufallsgenerator (ZG02) mit dem entsprechenden PHP-Code gesetzt.

Ich habe dann ja insgesamt 2 PHP-Codes zu den entsprechen Zufallsgeneratoren.
Sollen die dann beide dort auf Seite 3 platziert werden? und soll der If-Filter davor einfach beibehalten werden (ohne die ZG´s auf dieser Seite zu platzieren).
Das habe ich nämlich auch bereits versucht und das funktioniert nicht.

Danke!
by SoSci Survey (327k points)
Okay, aber es scheint so, dass Sie mittels eines dritten Zufallsgenerators ZG04 entscheiden, welcher der beiden Zufallsgeneratoren (als erstes? als einziger?) verwendet wird?

> Ich habe dann ja insgesamt 2 PHP-Codes zu den entsprechen Zufallsgeneratoren.

Wie sieht denn der PHP-Code unter dem ersten Zufallsgenerator aus? Denn im Moment scheint dieser keine Ausgabe zu erzeugen ... sodass SoSci Survey direkt zur nächsten Seite weiter springt.
by s206623 (160 points)
Ja, genau der Zufallsgenerator auf Seite 3 (ZG04) soll auslosen, ob man zum ersten Bilderblock und ZG01 zugeordnet wird ODER zu dem zweiten Bilderblock und ZG02. Das heißt man soll nur einem dieser beiden Blocks/Zufallsgeneratoren zugeordnet werden und diese Bilder bewerten.

Bisher habe ich es so gemacht:

Auf Seite 3:
ZG04 platziert und folgenden PHP-Code:
if (value('ZG04') == 1) {
  question('ZG01');
} elseif (value('ZG04') == 2) {
  question('ZG02');
}

Auf Seite 4:
ZG01 platziert und folgenden PHP-Code:
$fragen = valueList('ZG01', NULL, 'label');
$frage = loopPage(array_values($fragen));
question($frage);

Auf Seite 5
ZG02 platziert und folgenden PHP-Code:
$zeigen = valueList('ZG02', NULL, 'label');
$zeige = loopPage(array_values($zeigen));
question($zeige);

Mir wird aber auch gerade klar, dass wen beispielsweise ZG01 ausgelost wird, dann ja trotzdem später einfach aufgrund der Seitenreihenfolge die Bilder folgen, die in ZG02 gespeichert sind.

Deswegen ist dort ein Denkfehler, gibt es da eine einfachere Möglichkeit?
by SoSci Survey (327k points)
> Das heißt man soll nur einem dieser beiden Blocks/Zufallsgeneratoren zugeordnet werden und diese Bilder bewerten.

Dann kommt alles auf eine Seite. Und den IF-Filter oben würde ich dann gleich doppelt verwenden:

if (value('ZG04') == 1) {
  question('ZG01');
  $fragen = valueList('ZG01', NULL, 'label');
} elseif (value('ZG04') == 2) {
  question('ZG02');
  $fragen = valueList('ZG02', NULL, 'label');
}

Jetzt ist die korrekte Abfolge in der Variable $fragen - sehen Sie mal nach, ob das der Fall ist:

debug($fragen);

Und der Code von Seite 4 kommt auf Seite 3 unter obigen Code:

$frage = loopPage(array_values($fragen));
question($frage);

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

...