0 votes
in SoSci Survey (dt.) by s153851 (200 points)
edited by s153851

Hallo,
ich habe eine Frage bezüglich der Umsetzung mit einer Multi-Level-Struktur. Kurz zum Hintergrund: Bei mir soll jede VPN 18 gezogene Bilder (aus einem Pool von 90 Bildern) auf jeweils 17 Merkmalen (Variablen) bewerten.
Jede Bewertung eines Bildes einer VPN auf den 17 Merkmalen (Variablen) soll in je einer eigenen Datenzeile gespeichert werden. Dabei sollen die Bewertungen aller 18 Bilder der VPN in jeweils denselben Variablen gespeichert werden (Variablen = AV01, RO01, RO02 etc.).
Bislang habe ich einen Fragebogen "top" und einen Fragebogen "sub" erstellt. Im Fragebogen "top" erscheint nach allgemeinen Fragen auf Seite 5 (Kennung subStart) ein Zufallsgenerator (ZG01, Inhalt = 90 Zettel, Art der Ziehung = gleichverteilt, Anzahl der Zettel pro Interview = 18). Auf derselben Seite steht dann der erste PHP-Code

  $codes = array_values(valueList('ZG01'));
$i = loopToPage('loopEnd', count($codes));
$varID = 'ZG01x'.sprintf('%02d', $i + 1);
$element = value (id('ZG01x01',$i));
multiLevelDown('sub', $element[$i]);

Danach erscheint eine zweite Seite (Seite 6) und danach eine Seite mit der Kennung loopEnd (Seite 7).
Im Grunde genommen möchte ich hier, dass der ZG für jede VPN 18 Bilder zieht. Es soll dann eine Liste dieser Elemente erstellt werden. Das jeweilige Element soll dann dem sub-Fragebogen übermittelt werden. Das Ganze soll sich 18 Mal für die 18 Bilder wiederholen, also der Teilfragebogen soll dann 18 Mal starten mit dem jeweils gezogenen Element.
Dann habe ich den Fragebogen "sub" (Seitenkennung sub01). Auf der ersten Seite steht folgendes:

    $element = multiLevelData ();
html('<div><img src="'.$element.'" alt=""></div>');
put('IV01_01', $element);

Hier möchte ich, dass das übermittelte Bild in den Teilfragebogen geliefert wird. Das Bild soll dann entsprechend angezeigt werden und danach dessen ID in eine interne Variable gespeichert werden. Danach sollen dann noch mit question () die verschiedenen Beurteilungsfragen (AV01 mit 1 item (Skalenfrage), RO01 mit 7 items (Skalenfrage), RO02 (Auswahlfrage) mit 1 item und RK01 (Auswahlfrage, Filterfrage) mit einem item gestellt werden.
Auf der nachfolgenden Seite soll in Abhängigkeit der Antwort auf die Filterfrage (RK03) entweder zurück zum Hauptfragebogen geleitet werden (bei =2) oder bei =1 die Fragen (Skalenfragen) RK01 mit 7 items und RK02 mit 7 items gestellt werden und danach zurückgeleitet werden. Das gezogene Bild soll dabei über die Seiten hinweg sichtbar bleiben.
Bislang werden bei mir nur leere Seiten angezeigt…wie setze ich das richtig um?

Vielen Dank und liebe Grüße

1 Answer

0 votes
by SoSci Survey (309k points)

Vorab ein Hinweis: 18 Bilder x 17 Bewertungen sind mehr als 300 Einzelbewertungen. Und das ist nicht gerade sehr abwechslungsreich. Vermutlich schalten 75% der Teilnehmerinnen und Teilnehmer nach dem 10ten Bild geistig ab. Ob Sie dann noch sinnvolle Daten bekommen, wage ich stark zu bezweifeln.

Danach erscheint eine zweite Seite (Seite 6) und danach eine Seite mit der Kennung loopEnd (Seite 7).

Also auf der Seite mit dem PHP-Code sollte SoSci Survey eigentlich in den zweiten Fragebogen "sub" springen und dessen 17 Bewertungsfragen anzeigen?

Beim Code haben Sie es glaube ich ein klein wenig zu kompliziert gemacht. Versuchen Sie es mal hiermit:

$codes = valueList('ZG01');
$code = loopPage($codes);
multiLevelDown('sub', $code);

Hier möchte ich, dass das übermittelte Bild in den Teilfragebogen geliefert wird.

Sie bekommen erstmal den Code - was da für ein Bild dahinter steht, können Sie z.B. wie folgt abfragen:

$bildID = multiLevelData();
$bild = getValueText('ZG01x01', $bildID);

Versuchen Sie mal noch ein

debug($bildID);
debug($bild);

darunter, und schauen Sie mal, wie weit Sie damit kommen. Um die Details können wir uns dann schrittweise kümmern. Erstmal muss das Grundgerüst funktionieren.

by s153851 (200 points)
Vielen Dank für die schnelle Antwort.
Mit der Anzahl der Bewertungen haben Sie Recht. Ich habe die Anzahl der Bilder nun auf 10 reduziert.
Genau, bei der Seite mit der Kennung "subStart" im Fragebogen "top" soll in den zweiten Fragebogen "sub" gesprungen werden, das entsprechende Bild angezeigt und dann darunter die Bewertungsfragen angezeigt werden. (mit dem Ziel, dass durch diese Struktur jede Bewertung eines Bildes x durch die VPN  in einer eigenen Datenzeile steht, also pro VPN dann 10 Datenzeilen für die 10 verschiedenen Bilder und 17 Spalten für die Variablen (Ratings))
Ich habe das nun abgeändert. Wenn ich das teste, dann wird mir auf jeder Seite der nun 10 gezogenen Bilder folgender Hinweis angezeigt:

Hinweis (Seite 1)
Debug-Information für $bildID:
$bildID = 83 (string)


Hinweis (Seite 1)
Debug-Information für $bild:
$bild = index.php%3Fi%3DSD4TDQ7RKJ7G%26file%3D1%26rnd%3D7885 (string)

Die ausführlichen Debug-Informationen auf der ersten Seite besagen, dass jetzt Seite 5 (Kennung "subStart") im Fragebogen "top" erstellt wird, der ZG zieht 10 Bilder. loopPage() wiederholt diese Seite 5 10 Mal, beginnend mit dem ersten gezogenen Wert. Dann wird ein neuer Datensatz (CASE 548) erstellt und es erfolgt ein Wechsel des Datensatzes (547 --> 548). Infolgedessen wird die erste Seite im Fragebogen "sub" erstellt. Dort erhält man
Inhalt: $bildID = 23 (string)
debug()
Inhalt: $bild = index.php%3Fi%3DOQY488FOXXS4%26file%3D1%26rnd%3D9574 (string)


Danach wird nach der letzten Seite im Fragebogen "sub" wieder zum Fragebogen "top" und der Seite 5 zurückgekehrt (Wechsel des Datensatzes von 548 --> 547, erneute Anzeige der Seite 5). Dann wiederholt sich das Ganze mit dem zweiten gezogenen Wert (Wechsel des Datensatzes von 547--> 549).
Soll das so aussehen?

Liebe Grüße
by SoSci Survey (309k points)
Das sieht gut aus, würde ich sagen.

Was steht denn genau in Ihrem Zufallsgenerator als Inhalt/Codes? Diese Zeile stimmt mich noch nicht ganz zufrieden:

$bild = index.php%3Fi%3DSD4TDQ7RKJ7G%26file%3D1%26rnd%3D7885 (string)

Ach ja, die $bildID sollten Sie im untergeordneten Fragebogen natürlich mittels put() abspeichern, falls noch nicht geschehen.
by s153851 (200 points)
Gut :). Ja, die $bildID habe ich abgespeichert.
Im Zufallsgenerator steht pro Zeile der Name des Bildstimulus aus den abgelegten Bildern unter Mediendateien (geschützte Dateiablage) (Bsp.: 01 = pro://01_MI_v.jpg und das bis Zeile 90). Was muss ich tun, damit das BIld dann angezeigt wird? Reicht hier folgender Code?

 html('
    <div style="text-align: center">
      <img src="'.$bild.'" alt="" />
    </div>
  ');

Vielen Dank und liebe Grüße
by SoSci Survey (309k points)
Okay, die geschützte Dateiablage (pro://) funktioniert ein wenig anders :) Es kann sein, dass getItemtext() noch eine Modifikation benötigt, damit das rund funktioniert.

Der Code

index.php%3Fi%3DSD4TDQ7RKJ7G%26file%3D1%26rnd%3D7885

heißt eigentlich (zurück-übersetzt)

index.php?i=SD4TDQ7RKJ7G&file=1&rnd=7885

Das wiederum ist die URL, um das Bild aus der geschützten Dateiablage zu bekommen. Diese URL ist aber nur gültig, solange das Interview läuft.

Aber fangen wir mal einfach an. Was passiert denn, wenn Sie den von Ihnen genannten PHP-Code mit html()-Befehl ergänzen? Wird ein Bild angezeigt oder nur der Platzhalter, dass das Bild nicht geladen werden konnte?

Wenn Sie den Code noch um ein urldecode() ergänzen, wird sich SoSci Survey beschweren, dass die Funktion nicht erlaubt ist, vermute ich?

<img src="'.urldecode($bild).'" alt="" />
by s153851 (200 points)
Ah, okay.
Ja, genau mit urldecode() wird eine Warnung angezeigt, dass die Funktion nicht erlaubt ist. Mit dem obigen html-Befehl wird schlicht gar nichts angezeigt. Also weiterhin (für das erste Bild)

 
Hinweis (Seite 1)
Debug-Information für $bildID:
$bildID = 34 (string)


Hinweis (Seite 1)
Debug-Information für $bild:
$bild = index.php%3Fi%3DPVGTQZN4UMIB%26file%3D1%26rnd%3D2247 (string)
by SoSci Survey (309k points)
edited by SoSci Survey
Ich sehe mir zeitnah an, weshalb die Funktion getValueText() einen derart kodierten String liefert. Geben Sie mir bitte 1-2 Tage.
by SoSci Survey (309k points)
So, das war nicht ganz trivial ... die Funktion getValueText() war damit überfordert, dass der Dateiname aus der geschützten Dateiablage so ganz ohne Anführungszeichen auftauchte.

Natürlich hätte es dafür ein Workaround gegeben, aber eine saubere Lösung ist bei so etwas natürlich vorzuziehen. Deshalb: Nun sollte das Problem behoben sein.
by s153851 (200 points)
Vielen Dank, es funktioniert! Nun noch eine (hoffentlich) letzte Frage zur Multi-Level-Struktur: Im gleichnamigen Text steht, dass ohne den Befehl multilevelReturn() bei Erreichen der letzten Seite automatisch wieder zu top gesprungen wird und dass dabei keine Daten übermittelt werden. Das Nichtübermitteln der Daten bezieht sich aber dann nur auf etwaige Filterfragen, also der Datenübermittlung zwischen sub und top (wie beschrieben)? Meine Ratingfragen im sub tangiert das ja dann nicht?

Liebe Grüße
by SoSci Survey (309k points)
> Das Nichtübermitteln der Daten bezieht sich aber dann nur auf etwaige Filterfragen, also der Datenübermittlung zwischen sub und top

Genau. Was in den Fragen abgefragt wurde, ist natürlich unabhängig davon im Datensatz gespeichert. Sie werden ja ohnehin noch ein paar technsiche Funktionstests machen und das kontrollieren. Aber da rechne ich nicht mit Problemen.

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

...