0 votes
in SoSci Survey (dt.) by s137352 (115 points)

Liebes Sosci Survey-Team,

für meine Masterarbeit will ich einen Fragebogen erstellen. Dieser soll eingangs einen Online-Shop simulieren, bei dem ich Produkte sowie deren Preise und Bewertungen abbilde.

Hieraus sollen die Probanden im ersten Schritt ihre Lieblingsprodukte aussuchen.

Auf der nächsten Seite soll den Probanden diese Lieblingsprodukte angezeigt werden - die Produkte sollen (zufällig, 3 Kohorten) entweder analog zur vorherigen Ansicht, nach Preis oder nach Bewertung sortiert sein.

Meine Problem ist nun also erstmal:
Wie kann ich den Bildern die Kriterien/Beschriftung "Preis" und "Bewertung" hinzufügen, um diese Angaben anschließend als Sortierungskriterium zu nutzen?

Ich weiß, wie ich Bilder hochlade und via "Mehrfachauswahl" und mithilfe der "kärtchenweisen" Darstellung wie gewünscht anordne.

Vielen Dank vorab + Lieben Gruß

1 Answer

+1 vote
by SoSci Survey (301k points)

Ich würde empfehlen, dass Sie für den Shop eine Frage vom Typ "Mehrfachauswahl" verwenden und dafür die Darstellung "Kästchen" aktivieren (wie von Ihnen geplant). Den Inhalt der Kästchen (=Auswahloptionen) können Sie mit ein wenig HTML nach Bedarf gestalten. Zum Beispiel mit Bildern und unterschiedlichen Textformatierungen.

um diese Angaben anschließend als Sortierungskriterium zu nutzen?

Die Sortierung möchten Sie experimentell vorgeben, habe ich das korrekt verstanden?

Ich dem Fall würde ich empfehlen, dass Sie einfach 3 Listen der Produkt-Nummern (IDs der Auswahloptionen) mit der entsprechenden Sortierung anlegen. Sie können anschließend eine Schnittmenge mit einer Liste (Array) der ausgewählten Optionen rechnen und haben die ausgewählten Produkte dann in der gewünschten Sortierung.

by s137352 (115 points)
Vielen Dank für die schnelle Antwort!

Ich habe inzwischen meinen "Shop" so angelegt, dass die einzelnen Produktbilder eine Beschriftung haben, in denen ich Preis und Bewertung nenne.

Diese sollen im ERSTEN Schritt zufällig sortiert sein. Hier stellt der Proband sich einen Wunschzettel zusammen. So weit so gut.

Im ZWEITEN Schritt sollen die vorher ausgewählten Produktbilder auf einer "Wunschliste" sortiert dargestellt werden - Der experimentale Aufbau sieht dabei eine zufällige Aufteilung in 3 Gruppen vor:
1: ausgewählte Produkte sortiert nach Preis
2.: ausgewählte Produkte sortiert nach Bewertung
3.: Kontrollgruppe, vorherige Sortierung beibehalten

Der vorgeschlagene Weg sieht also keine direkte "rechnerische" Sortierung vor, sondern zieht eine Schnittmenge mit einer hinterlegten Liste - das führt dann dazu, dass die ausgewählten Produkte in der Reihenfolge der Liste abgebildet werden?

Kann dabei eine zufällige Auswahl der Arrays getätigt werden, um Teilnehmende zufällig eine der Gruppen zu zu weisen? Und kann dabei berücksichtigt werden, dass eine Gruppe die ausgewählten Produkte in der vorherigen Sortierung ausgespuckt bekommt?

Dabei würde vermutlich helfen, wenn die anfängliche Sortierung über alle Probanden unverändert ist und ich diese als 3. Array zugrunde lege?


Könnt ihr mir einen Tipp geben, wie ein solcher Code aussehen müsste? Sorry, ich bin sowohl bei Sosci-Survey als auch beim HTML-Coden ein absoluter Anfänger.

1000 Dank im Voraus!
by SoSci Survey (301k points)
> Kann dabei eine zufällige Auswahl der Arrays getätigt werden, um Teilnehmende zufällig eine der Gruppen zu zu weisen?

Das erledigen Sie mit einem Zufallsgenerator. Auf Basis dieser Ziehung entscheiden Sie dann, welches Array die Sortierung vorgibt.

> Könnt ihr mir einen Tipp geben, wie ein solcher Code aussehen müsste?

Ich gehe davon aus, dass Sie bereits gelesen haben, wie man Items in eine Folgefrage übernimmt: https://www.soscisurvey.de/help/doku.php/de:create:filter-items

Wenn Sie nun einen Zufallsgenerator mit 3 Zetteln haben, dann könnte der Coe wie folgt aussehen:

$selected = getItems('OF01', 'is', 2);  // Gewählte Optionen
$group = value('RG01');  // Zufallsgenerator abfragen
if ($group == 1) {
  $order = [1,3,2,4,5,6,7];
} elseif ($group == 1) {
  $order = [7,5,3,1,2,4,6];
} else {
  $order = [7,6,5,1,2,3,4];
}
$items = array_intersect($order, $selected);
question('FF01', $items);

Ich bin nicht 100%ig sicher, ob array_intersect() die Reihenfolge aus $order beibehält. Falls nicht, müsste man das noch ein wenig ändern und mittels eine FOR-Schleife lösen. Aber versuchen Sie es erstmal so.

Und keine Sorge: Der Einsteig in Programmiercode ist immer ein wenig happig und frustrierend. Aber wenn Sie sich darauf einlassen, macht es in Kürze Spaß :)
by s137352 (115 points)
Danke für die Antwort - ich komme meinem Ziel immer näher :)
Ich denke, in Ihrem Code müsste bei der elseif-Funktion eine 2 stehen?

Mit einem Code, wie dem oberen habe ich leider das Problem, dass mir nach der Auswahl der Produkte auf der nächsten Seite keine Produkte angezeigt werden und die Seite somit übersprungen werden, mein Code:

$selected = getItems('SF03', 'is', 2);
$group = value('RG01');
if ($group == 1) {
$order = ['SF02', 'SF05', 'SF01', 'SF03', 'SF03'];
} elseif ($group == 1) {
$order = ['SF04', 'SF02', 'SF01', 'SF03', 'SF05'];
} else {
$order = ['SF01', 'SF02', 'SF03', 'SF04', 'SF05'];
}
$items = array_intersect($order, $selected);
question('WZ03', $items);

Die einzelnen Bilder habe ich in dieser Version separat als einzelne Texte angelegt. Ich habe auch schon probiert, die einzelnen Bilddateien html unter $order aufzulisten:

if (value('RG01') == 1) {
$order = [<figure><img src="m5.PNG" style= "width: 100px"/><figcaption>10€</figcaption><figcaption>3,5<img src="stern.png" style="width: 12px"></figcaption></figure>,
<figure><img src="m2.PNG" style= "width: 100px"/><figcaption>10€</figcaption><figcaption>4,5<img src="stern.png" style="width: 12px"></figcaption></figure>,
<figure><img src="m6.PNG" style= "width: 100px"/><figcaption>11€</figcaption><figcaption>2,5<img src="stern.png" style="width: 12px"></figcaption></figure>,
...];

Das funktioniert aber ebenso wenig, wie wenn ich in meiner Zufallsgenerator-Rubrik Texte anlege, in denen ich die Bilder als Arrays speichere und dann in den Code schreibe:
$selected = getItems('SF03', 'is', 2);
$group = value('RG01');
if (value('RG01') == 1) {
$array = ('RG02');
} else if (value('RG01') == 2){
$array = ('RG03');
} else {
$array = ('RG04');
}
$items = array_intersect($array, $selected);
question('WZ02', $items);

-> Fehlermeldung: es handelt sich bei $array nicht um ein array.


Können Sie mir noch einmal weiterhelfen, bitte?

Danke im Voraus!!
by SoSci Survey (301k points)
> Ich denke, in Ihrem Code müsste bei der elseif-Funktion eine 2 stehen?

Ja, korrekt.

>  dass mir nach der Auswahl der Produkte auf der nächsten Seite keine Produkte angezeigt werden

Sie haben diesen PHP auf der besagten nächsten Seite, ja? Und die Frage, in welcher die Produkte angezeigt werden sollen, ist die WZ03, korrekt?
by s137352 (115 points)
Genau. Auf Seite 4 sehen die Probanden alle Produkte, auf Seite 5 sehen die Probanden dann nur die (sortierten) Produkte, die sie vorher ausgewählt haben.
Auf Seite 4 ist die Frage SF03, auf Seite 5 ist dieser PHP. Die Frage, in welcher die Produkte angezeigt werden sollen, ist die WZ02. Ich habe an der Frage zwischendurch etwas rumgebastelt, daher ist oben 1x von WZ02 & 1x von WZ03 die Rede.

Ich habe in der Frage WZ02 keine Items angegeben, in der Frage WZ03 alle möglichen Items aus SF03 - das war ein Versuch aus der Verzweiflung heraus.
Ich habe noch einmal geguckt: Schreibe ich WZ03 mit den Items in den PHP, wird die gesamte Seite übersprungen. Wähle ich WZ02 (Mehrfachauswahl ohne Items), wird die Seite/Frage zwar angezeigt, aber ohne die ausgewählten Produkte abzubilden.

Ich habe auch nochmal die Benennung der einzelnen Texte mit den Bilddateien bearbeitet - da hatte ich oben noch einen Fehler drin, ändert aber nichts am Ergebnis:

$selected = getItems('SF03', 'is', 2);
$group = value('RG01');
if ($group == 1) {
$order = ['SF05', 'SF08', 'SF04', 'SF06', 'SF06'];
} elseif ($group == 2) {
$order = ['SF07', 'SF05', 'SF04', 'SF06', 'SF08'];
} else {
$order = ['SF04', 'SF05', 'SF06', 'SF07', 'SF08'];
}
$items = array_intersect($order, $selected);
question('WZ02', $items);
by SoSci Survey (301k points)
> Ich habe in der Frage WZ02 keine Items angegeben, in der Frage WZ03 alle möglichen Items aus SF03 - das war ein Versuch aus der Verzweiflung heraus.

Nicht Verzweiflung ... das muss so sein:
https://www.soscisurvey.de/help/doku.php/de:create:filter-items

Bitte ergänzen Sie im PHP-Code noch diese Zeile:

debug($items);

Und posten Sie doch bitte einmal die komplette Debug-Information (rechts oben).
by s137352 (115 points)
ok, dann ist die auszuführende Frage WZ03.. danke für die Aufklärung :)

debug ist ergänzt, starte ich dann direkt auf der Seite kommt:

[Information]    Interview gestartet (neue Nummer 153)
[Information]    Der Fragebogen base im Projekt wunschzettel wird verwendet
[Verarbeitung]    Erstelle Seite 5 in Fragebogen base
[Inhalt]    Erstelle Frage RG01
[Information]    Vom Zufallsgenerator RG01 wurden folgende Codes gezogen: 2
[Information]    value("RG01") = 2
[Inhalt]    Erstelle Frage WZ03
debug()    Inhalt: Array (ohne Elemente)
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 6

Starte ich am Anfang:
[Information]    Interview Nummer 160 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt wunschzettel wird verwendet
[Information]    Die Verweildauer auf Seite 4 war 4 Sekunden
[Verarbeitung]    Lese Antworten von Seite 4
[Information]    Antwort auf SF03_01 = 2
[Information]    Antwort auf SF03_02 = 1
[Information]    Antwort auf SF03_03 = 2
[Information]    Antwort auf SF03_04 = 2
[Information]    Antwort auf SF03_05 = 1
[Information]    Antwort auf SF03 = 3
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 5 in Fragebogen base
[Inhalt]    Erstelle Frage RG01
[Information]    Vom Zufallsgenerator RG01 wurden folgende Codes gezogen: 3
[Information]    value("RG01") = 3
[Inhalt]    Erstelle Frage WZ03
debug()    Inhalt: Array (ohne Elemente)
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 6
by SoSci Survey (301k points)
> debug()    Inhalt: Array (ohne Elemente)

Okay, das ist nicht gut. Dann suchen wir mal weiter. Bitte erzängen Sie noch zwei Zeilen:

debug($order);
debug($selected);
by s137352 (115 points)
Dann kommt folgender Text:

[Verarbeitung]    Lese Antworten von Seite 4
[Information]    Antwort auf SF03_01 = 2
[Information]    Antwort auf SF03_02 = 1
[Information]    Antwort auf SF03_03 = 2
[Information]    Antwort auf SF03_04 = 2
[Information]    Antwort auf SF03_05 = 1
[Information]    Antwort auf SF03 = 3
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 5 in Fragebogen base
[Inhalt]    Erstelle Frage RG01
[Information]    Vom Zufallsgenerator RG01 wurden folgende Codes gezogen: 2
[Information]    value("RG01") = 2
[Inhalt]    Erstelle Frage WZ03
debug()    Inhalt: Array (ohne Elemente)
debug()    Inhalt: 0SF07, 1SF05, 2SF04, 3SF06, 4SF08
debug()    Inhalt: 01, 13, 24
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 6


Hinweis (Seite 5)
Debug-Information für $items:
Array (ohne Elemente)

Hinweis (Seite 5)
Debug-Information für $order:
0SF07, 1SF05, 2SF04, 3SF06, 4SF08

Hinweis (Seite 5)
Debug-Information für $selected:
01, 13, 24
by SoSci Survey (301k points)
Ach ja ... Sie hatten ja die Zahlen gegen Kennungen ausgetauscht. Es müssen aber Zahlen (Item-Nummern) sein, so wie ich es oben geschrieben hatte:

if ($group == 1) {
  $order = [1,3,2,4,5,6,7];
} elseif ($group == 2) {
  $order = [7,5,3,1,2,4,6];
} else {
  $order = [7,6,5,1,2,3,4];
}

Für Frage-Kennung oder die Anzeige unterschiedlicher Fragen ist der Code in der aktuellen Form generell nicht ausgelegt.

Die Sie aktuell im einen Arary Texte verwenden und die andere Liste Item-Kennungen enthält, ist die Schnittmenge immer leer.
by s137352 (115 points)
Super, es hat funktioniert. Die Items werden auch direkt in der (gem. RG01) richtigen Reihenfolge ausgespuckt! Vielen Dank! :)

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

...