0 votes
in SoSci Survey (dt.) by s291520 (165 points)
edited by SoSci Survey

Hallo!
Ich möchte für eine Studie eine Reihe von Bildern einblenden. Die meisten Bildreihen bestehen aus 5 Bildern, manche aber aus 6-8. Die Bildreihe wird über die Ziehung aus einer Urne ausgewählt. Die Bilddateien setzen sich aus der gezogenen Zahl und "A" bis "H" für die bis zu 8 Bilder (Pseudo-Code unten) zusammen.
Nun würde ich gerne programmieren, dass Bilder nur angezeigt werden, wenn der Link auch existiert (bzw. wenn ein Bild abgerufen werden kann). Ansonsten werden immer Platzhalter-Symbole angezeigt.
Mit Java Script würde das funktionieren, aber alle Funktionen die ich dafür getestet habe, werden nicht zugelassen.

Sehen Sie eine Möglichkeit das zu tun?

Hier ein pseudo-code für meinen Ansatz:

```urnDraw('urn_narrative', 'NV01');
html('<div style="text-align: center; margin: 40px 0;">
  <img src="https://syncandshare.lrz.de/dl/IDENTIFIER/stimulus' . value('NV01_01') . 'A.png" style="max-width: 100%; height: auto;"> <br>
  <img src="https://syncandshare.lrz.de/dl/IDENTIFIER/stimulus' . value('NV01_01') . 'B.png" style="max-width: 100%; height: auto;"> <br>
  <img src="https://syncandshare.lrz.de/dl/IDENTIFIER/stimulus' . value('NV01_01') . 'C.png" style="max-width: 100%; height: auto;"> <br>
  <img src="https://syncandshare.lrz.de/dl/IDENTIFIER/stimulus' . value('NV01_01') . 'D.png" style="max-width: 100%; height: auto;"> <br>
  <img src="https://syncandshare.lrz.de/dl/IDENTIFIER/stimulus' . value('NV01_01') . 'E.png" style="max-width: 100%; height: auto;"> <br>
  <img src="https://syncandshare.lrz.de/dl/IDENTIFIER/stimulus' . value('NV01_01') . 'F.png" style="max-width: 100%; height: auto;"> <br>
  <img src="https://syncandshare.lrz.de/dl/IDENTIFIER/stimulus' . value('NV01_01') . 'G.png" style="max-width: 100%; height: auto;"> <br>
  <img src="https://syncandshare.lrz.de/dl/IDENTIFIER/stimulus' . value('NV01_01') . 'H.png" style="max-width: 100%; height: auto;">
');
```
by s291520 (165 points)
Offenbar werden die pseudolinks rausgefiltert. Ich hoffe Sie können trotzdem nachvollziehen.

1 Answer

0 votes
by SoSci Survey (327k points)

Nun würde ich gerne programmieren, dass Bilder nur angezeigt werden, wenn der Link auch existiert

Das kann SoSci Survey nicht ohne Weiteres überprüfen - und es wäre auch ziemlich unnötig kompliziert.

Wie wäre es, wenn Sie im Zufallsgenerator einfach neben dem Kürzel für das Bild noch ablegen, wie viele Bilder es für die Bedingung gibt? Den PHP-Code würden Sie dann ein wenig dynamischer erzeugen. Und zwar mit einer FOR-Schleife, die den <img>-Teil so oft wiederholt, wie Sie eben angegeben haben, dass es Bilder gibt.

Offenbar werden die pseudolinks rausgefiltert

Verwenden Sie den Knopf {}, um Code als solchen zu formatieren.

by s291520 (165 points)
Danke, das hat mit der Urne funktioniert (allerdings habe ich es über IF-Funktion gelöst).
Mittlerweile habe ich aber herausgefunden, dass ein Zufallsgenerator besser wäre, da ich damit gleich alle Zettel auf einmal ziehen kann.
Mein Problem jetzt ist aber, dass beim Zufallsgenerator nur genau ein Wert pro Zettel abgelegt werden kann. Gibt es eine Möglichkeit auch beim Zufallsgenerator das Kürzel UND die Anzahl an Bildern abzulegen?
Danke!
by SoSci Survey (327k points)
> Mein Problem jetzt ist aber, dass beim Zufallsgenerator nur genau ein Wert pro Zettel abgelegt werden kann.

Sie können mehrere Werte mit Komma getrennt hintereinander schreiben. Die Funktion value(..., 'csv') zerlegt das dann wieder in einzelne Werte. Diese können Sie dann mittels putList() in interne Variablen schreiben.
by s291520 (165 points)
Danke, das ist sehr hilfreich.
Und liege ich richtig in folgenden Annahmen:
1. Die gezogene Zettel (ich ziehe mehrere auf einmal) wird selbst auch als Variable im Datensatz gespeichert (ich kann also hier die Werte abrufen, sollte sich irgendein Fehler im Speichern in der internen Variable einschleichen)

2. Wenn ich nicht den durch value(..., 'csv') entstehenden array, sondern die einzelne Werte in einer internen Variablen abspeichern möchte, mache ich das über put() statt putList().
z.B. den ersten Wert des ersten gezogenen Zettels:

```
$val = value('ZG01x01', 'csv');
put('IV01_01', $val[0]);
```
bzw.
```
$val = value('ZG01x01', 'csv');
$stim_num = $val[0];
$img_num = $val[1];
put('IV01_01', $stim_num);
```
Danke!
by SoSci Survey (327k points)
ad 1) Gespeichert wird nur der Code des Zettels - wenn sie die einzelnen Werte haben möchten, sollten Sie diese tunlichst per putList() in interne Variablen kopieren.

ad 2) Ja .... aber warum sollten Sie dies wollen, wenn Sie am Ende doch alle Werte brauchen?

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

...