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

Hatte ich bisher nicht, habe ich aber jetzt ergänzt:

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

Das ist der erste PHP-Code auf Seite 1. Mit isset prüfe ich, dass die Bilder nur einmal gemischt werden und somit keines doppelt angezeigt wird, richtig?
Dann erstelle ich ein Array, das traurige und glückliche Bedingungen enthält (1 und 2).
Dann mische ich diese zufällig mit der Shuffle Funktion.
und dann speichere ich die Reihenfolge.
Mit put() speichere ich die Reihenfolge des Arrays in einer internen Variable.
Und mit loopPage() möchte ich gerne die gleiche Seite 20 mal anzeigen, mit je einem neuen Bild (das funktioniert noch nicht, da mein Timer noch nicht funktioniert.

Das ist mein zweiter PHP-Code, immernoch auf Seite 1:

$i = loopPage(20);
$variante = value(id('IV01', $i + 1));
$basis = value(id('ZG01', $i + 1), 'label');
if ($variante == 1) {
  $bild = $basis.'_s.jpg';
} else {
  $bild = $basis.'_h.jpg';
}
html('<div style="margin: 3em; text-align: center">
<img src="'.$bild.'" alt="" /; style="max-width: 50%">
</div>');

Warum habe ich zweimal loopPage? Brauche ich das?

Für den Timer habe ich jetzt nur diesen Code aus der Anleitung (ohne PHP):

<script type="text/javascript">
<!--
function weiter() {
  SoSciTools.submitPage();
}
SoSciTools.attachEvent(window, "load", function(evt) {
  SoSciTools.submitButtonsHide();
  window.setTimeout(weiter, %remain% * 10000);
});
// -->
</script>

Aber hiermit habe ich doch noch keinen Timer hinterlegt? Ich bracuhe doch hier auch einen PHP-Schnipsel oder nicht?

related to an answer for: Bilder randomisieren - PHP Funktion

1 Answer

0 votes
by SoSci Survey (302k points)

Das ist der erste PHP-Code auf Seite 1. Mit isset prüfe ich, dass die Bilder nur einmal gemischt werden und somit keines doppelt angezeigt wird, richtig?

Ja - allerdings müsste es in Ihrem Fall isset($bilder) heißen, denn diese Variable definieren Sie ja, nicht $a. Die FOR-Schleife könnten Sie ebenfalls noch in die geschweiften Klammern vom if(!isset(..)) packen. Sie wollen es ja eigentlich nur einmal in die internen Variablen schreiben.

Warum habe ich zweimal loopPage? Brauche ich das?

Nein, bitte nur einmal :) Verwenden Sie das mit der 20 und entfernen Sie das erste.

Für den Timer habe ich jetzt nur diesen Code aus der Anleitung (ohne PHP):

Mit dem Knopf {} können Sie Code als solchen formatieren. Dann wird er komplett in der Frage angezeigt.

Aber hiermit habe ich doch noch keinen Timer hinterlegt?

Wenn Sie diesen HTML-Code als Text einbinden, dann schon. Wenn Sie es z.B: als "TX01" im Fragekatalog stehen haben, dann ergänzen in Sie im PHP-Code noch:

show('TX01', ['%remain%' => 10000]);

Damit binden Sie den Text in der Seite ein und setzen den Platzhalter %remain% auf 10 Sekunden.

asked May 26, 2020 in SoSci Survey (dt.) by s095605 (350 points) 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

...