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

Liebes SoSci Survey Team,

ich möchte gerne eine Umfrage erstellen, bei welcher jeweils 2 Bilder nebeneinander präsentiert werden. Der Proband bekommt die Instruktion, das Bild anzuklicken, welches er ansprechender findet. Als Darstellung für dieses Vorhaben habe ich den Fragetyp "Auswahl mit Kärtchen" gewählt.

Zunächst habe ich einen Zufallsgenerator angelegt (C011), der ohne Zurücklegen 105 Bilder zieht.

Für die erste Seite sollen die 2 Bilder vom Zufallsgenerator gewählt werden.
Bei der Frage selbst habe ich die 2 Platzhalter wie folgt vorbereitet:

`<img src="%auswahl%" alt="">`
`<img src="%random%" alt="">`

Anschließend habe ich einen PHP Code geschrieben und die Darstellung der ersten Seite mit den 2 Bildern klappt auch sehr gut.
PHP-Code:

$zettel = 'C011x01';
$imgSRC = value($zettel, 'label');
$imgCode = value($zettel);

replace('%auswahl%', 'C011x01', 'response');

$zettel = 'C011x02';
$imgSRC = value($zettel, 'label');
$imgCode = value($zettel);

replace('%random%', 'C011x02', 'response');



question('C008');  // Abfrage 1

Nun fängt aber bei der zweiten Seite bei mir das Problem an.
Die zweite Seite soll wieder 2 Bilder nebeneinander zeigen. Das erste Bild soll das Bild darstellen, was der Proband auf der erste Seite ausgewählt hat (was er also ansprechender empfindet). Das zweite Bild soll ein Bild sein, was der Zufallsgenerator zieht.

Ich wollte es mit folgendem PHP Code realisieren:

replace('%auswahl%', 'C008', 'response');

$zettel = 'C011x03';
$imgSRC = value($zettel, 'label');
$imgCode = value($zettel);

replace('%random%', 'C011x03', 'response');

question('C009');

In der Frage selbst habe ich die 2 Kärtchen mit folgenden Platzhaltern versehen:

<img src="%auswahl%" alt="">
<img src="%random%" alt="">

Der Platzhalter für das zufällig ausgewählte Bild funktioniert. Da er scheint ein neues, vom Zufallsgenerator gezogenes Bild. Aber der Platzhalter für das ausgewählte Bild funktioniert nicht. Da erscheint kein Bild, sondern nur

> " alt="">

Ich habe schon hin und her probiert, den Platzhalter in der Frage selbst durch %auswahl% ersetzt statt . Da hat es stellenweise sogar funktioniert, aber dann ab Seite 4 habe ich plötzlich zwei neue Bilder nebeneinander angezeigt bekommen, da wurde das ausgewählte Bild gar nicht übernommen.

Ich bin unendlich dankbar, wenn mir bei meinem Problem geholfen werden könnte.

Vielen herzlichen Dank im Voraus.

1 Answer

0 votes
by SoSci Survey (327k points)

Das erste Bild soll das Bild darstellen, was der Proband auf der erste Seite ausgewählt hat

Erstmal müssen wir wissen, was gewählt wurde - also

$selection = value('C008');

Und dann können wir das den beiden Variabeln zuordnen:

if ($selection == 1) {
  $varID = 'C011x01';
} else {
  $varID = 'C011x02';
}

Und dann haben Sie wieder den Code von vorher:

$imgSRC = value($zettel, 'label');
replace('%auswahl%', $imgSRC);

In der Auswertung könnte es passieren, dass Sie über die Daten fluchen. Denn Sie haben dann für die Variable nur ein 1 oder 2 gespeichert, und müssen erst einmal zuspielen, welches Bild das war. Bitte prüfen sie rechtzeitig, ob das mit der Auswertung so funktioniert, wie Sie es brauchen!

Zudem tun Sie sich schwer, wenn Sie das für eine dritte Auswahl nutzen möchte. Denn dafür müssten Sie schon zwei IF-Filter verschachteln.

Ich würde daher empfehlen, dass Sie den Code des ausgewählten Bildes in eine interne Variable speichern.

if ($selection == 1) {
  $varID = 'C011x01';
} else {
  $varID = 'C011x02';
}
$bildID = value($varID);
put('IV01_01', $bildID);

Jetzt können Sie sich für das Ergebnis der ersten Auswahl immer auf IV01_01 beziehen. Nur wenn Sie den Bildnamen brauchen, müssen Sie diesen nochmal per getItemtext() im Zufallsgenerator nachsehen:

$auswahl = value('IV01_01');
$bildSRC = getItemstext('C011', $auswahl);

Dieses Spielchen können Sie dann beliebig oft wiederholen ohne dass es komplexer wird.

by s248302 (160 points)
Mittlerweile ist es mir wirklich unangenehm, dass ich Sie so stark in Anspruch nehme. Ich wäre ohne Ihre Hilfe aufgeschmissen. Vielen Dank für alles!

Nun habe ich 'IV01_01' im PHP-Code ergänzt (das ich da nicht selbst drauf gekommen bin, ist mir ein Rätsel. Es ist eigentlich wirklich einleuchtend, wenn Sie es schreiben).

Aber ich habe immer noch ein Fehler im PHP-Code. Leider wird keine Fehlermeldung mehr angezeigt, deshalb kann ich nicht drauf schließen, wo der Fehler steckt. Klicke ich nun auf der zweiten Seite ein Bild an, so wird mir auf der dritten Seite nur rechts das Bild vom Zufallsgenerator angezeigt. Links wird mir nur "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...." angezeigt.

Ich denke, der Fehler liegt bei: $bildSRC = getValueText('C011x03', $auswahl);


$selection = value('C009');

if ($selection == 1) {
  $varID = 'IV01_01';
} else {
  $varID = 'C011x03';
}
$bildID = value($varID);
put('IV01_02', $bildID);

$auswahl = value('IV01_02');
$bildSRC = getValueText('C011x03', $auswahl);
replace('%auswahl%', $bildSRC);

$zettel = 'C011x04';
$imgSRC = value($zettel, 'label');
$imgCode = value($zettel);
replace('%random%', 'C011x04', 'response');


question('C012');  // Abfrage 3



Aber wenn ich 'C011x03' durch 'IV01_01' ersetze, wird mir nur die Zahl angezeigt, die das Bild vom Zufallsgenerator zugewiesen bekommen hat. Ich habe augenscheinlich immer noch nicht verstanden, wie genau der Code

$auswahl = value('IV01_02');
$bildSRC = getValueText('C011x01', $auswahl);
replace('%auswahl%', $bildSRC);

zu verstehen ist.
by SoSci Survey (327k points)
> Es ist eigentlich wirklich einleuchtend, wenn Sie es schreiben

35 Jahre Programmiererfahrung müssen ja für irgendwas gut sein :)

> Links wird mir nur "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...." angezeigt.

Das ist eine Bild-URL ... wie genau sehen denn Ihre Auswahloptionen in C012 aus? Ich würde darauf tippen, dass der HTML-Code da noch nicht korrekt mit dem Platzhalter zusammenspielt (oder fehlt).
by s248302 (160 points)
Sie sind ein Held! Vielen, vielen Dank, genau das war es!
Ich hatte bei der ersten Auswahloption in C012 lediglich %auswahl% da stehen. Das habe ich jetzt ersetzt durch
<img src="%auswahl%" alt="">
und die zweite Auswahloption ist belegt mit
<img src="%random%" alt="">

Jetzt klappt alles! Ich habe nun für die dritte Seite diesen PHP Code:

$selection = value('C009');

if ($selection == 1) {
  $varID = 'IV01_01';
} else {
  $varID = 'C011x03';
}
$bildID = value($varID);
put('IV01_02', $bildID);

$auswahl = value('IV01_02');
$bildSRC = getValueText('C011x03', $auswahl);
replace('%auswahl%', $bildSRC);

$zettel = 'C011x04';
$imgSRC = value($zettel, 'label');
$imgCode = value($zettel);
replace('%random%', 'C011x04', 'response');


question('C012');  // Abfrage 3


Wenn ich jetzt nicht wieder einen Denkfehler habe, müsste der PHP-Code für die vierte Seite so aussehen:
(wenn ich es so eingebe, klappt es tatsächlich auch. Ich möchte nur sicher gehen, dass es wirklich auch kein Zufall ist, dass es klappt. Denn ich würde es dann für die nächsten noch folgenden 12 Abfragen so übernehmen unter Berücksichtigung der Erhöhung der entsprechenden Variablenendungen)

$selection = value('C012');

if ($selection == 1) {
  $varID = 'IV01_02';
} else {
  $varID = 'C011x04';
}
$bildID = value($varID);
put('IV01_03', $bildID);

$auswahl = value('IV01_03');
$bildSRC = getValueText('C011x04', $auswahl);
replace('%auswahl%', $bildSRC);

$zettel = 'C011x05';
$imgSRC = value($zettel, 'label');
$imgCode = value($zettel);
replace('%random%', 'C011x05', 'response');


question('C013');  // Abfrage 4


In dem Zusammenhang ist mir eingefallen, dass ich den Probanden am Ende das Bild präsentieren könnte, für was sie sich letztendlich nach allen Auswahlseiten entschieden haben.
Wenn ich dies realisieren möchte, müsste ich eine neue Frage anlegen mit einem Text beispielsweise:

"Sie haben Sich für folgendes Bild entschieden: <img src="%auswahl%">"

Und hierfür müsste ich dann noch den PHP Code ergänzen von der vorherigen Abfrage, bei dem ich nur den letzten Code für das rechte Bild vom Zufallsgenerator weglasse.

Nach 15 Abfragen wäre das beispielsweise:

question('C142'); //Endergebnis Bild
$selection = value('C024');

if ($selection == 1) {
  $varID = 'IV01_14';
} else {
  $varID = 'C011x16';
}
$bildID = value($varID);
put('IV01_15', $bildID);

$auswahl = value('IV01_15');
$bildSRC = getValueText('C011x16', $auswahl);
replace('%auswahl%', $bildSRC);

Jetzt würde ich jubeln, wenn Sie mir sagen, dass ich keinen Denkfehler habe. :)
by SoSci Survey (327k points)
>  Ich möchte nur sicher gehen, dass es wirklich auch kein Zufall ist, dass es klappt.

Auf den ersten Blick sieht es korrekt aus - Sie haben die drei Kennungen, die sich ändern (interne Variable, Zufallsvariable und Fragennummmer) passend geändert. Aber auch ich habe keine magische Wahrnehmung von Programmcode ... wenn es funktioniert, dann spricht viele dafür, dass Sie alles richtig gemacht haben :)

Testen Sie aber auf alle Fälle gründlich. Und was noch viel wichtiger ist: Laden Sie die Testdaten auch herunter, laden Sie sie in ihre Statistik-Software, und prüfen Sie, ob Sie die Auswertungen rechnen können, die Sie rechnen möchten. Wenn es kann ganz schön anspruchsvoll werden, wenn dieselben Variablen immer für etwas anderes stehen. Mit den internen Variablen wird es m.E. schon etwas einfacher - aber keineswegs trivial. Und es wäre schlecht, wenn sie erst bei der Auswertung merken, dass Sie noch eine andere Variable gebraucht hätten. Jetzt können Sie sich noch darum kümmern.

Die Anzeige des Bildes in C143 müsste ans Ende des Codes, und wenn es ein Text ist, wäre text('C142') pssender. Aber sonst ... ja, passt. Unabhängig davon, ob Sie das Bild nochmal anzeigen, sollten Sie den Code beibehalten bis zum put() ... für die Auswertung. Aber ja, jubeln ist angebracht - ich behaupte mal, Sie haben die letzten Tage einiges über Coding gelernt :)
by s248302 (160 points)
Tausend Dank für Ihre Hilfe! Sie sind einsame Spitze!
Dank Ihrer Hilfe habe ich nun eine fertige Umfrage. Sie geht jetzt in den Pretest und dann hoffe ich, dass wir es gut auswerten können. Ich bin sehr sehr gespannt.

Ohne Sie hätte ich nie im Leben die Umfrage zustande bringen können.

Ich kann mich gar nicht oft genug bei Ihnen bedanken. Danke, dass SoSci so einen exzellenten Support anbietet!

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

...