0 votes
in SoSci Survey (dt.) by s225860 (110 points)
edited by s225860

Liebe Community,

ich komme bei meinem Projekt, einem Quais-Experiment, bei der Randomisierung im Fragebogen nicht weiter. Ich hatte den PHP-Filter schon versucht, aber leider bis dato gescheitert.

Bis zu einem gewissen Zeitpunkt in der Umfrage sollen alle Fragen für die Kontroll- und Experimentalgruppe gleich sein, erst zum Ende hin solle Gruppe A eine Reihenfolge von 4 Bildern begutachten und Gruppe B eine Reihe von insgesamt 2 Bildern bevor dann beide Gruppen die gleiche Frage zu der gezeigten Bildabfolge abschliessend gestellt bekommen.

Die Medien konnte ich schon hochladen und die Bilder auf einzelnen Seiten anlegen. Einen Zufallsgenerator hab ich erstellt und diesen versucht einzusetzen, ich scheitere jetzt aber am PHP oder HTML-Code um die Teilnehmer in diese zwei Gruppen aufzuteilen.

Um jeden Hinweis dankbar, ich bin mir sicher es ist bestimmt gar nicht so kompliziert wie ich es mir gerade vorstelle. ;)

Danke im Voraus.

1 Answer

0 votes
by SoSci Survey (328k points)

Ich verstehe Sie so, dass Sie die Bilder auf unterschiedlichen Seiten im Fragebogen anzeigen möchten? Eine relativ einfache Lösung bestünde darin, dass Sie allen 6 Seiten Seitenkennungen geben und dann mit setPageOrder() arbeiten.

if (value('RG01') == 1) {
  setPageOrder('bild1,bild2,bild3,bild4,nachherfrage');
} else {
  setPageOrder('bild5,bild6,nachherfrage');
}
by s225860 (110 points)
Vielen Dank für die schnelle Rückmeldung, ich glaube das geht schon in die richtige Richtung.

Ich habe folgenden PHP Code nun angelegt:
if (value('IF08_CP') == 1) {
  setPageOrder('IF1,IF2,IF3,IF4,nachherfrage');
} else {
  setPageOrder('IF5,IF6,nachherfrage');
}

Die nachherfrage erübrigt sich glaube in meinem Fall, denn Ziel ist es, dass eine Gruppe A die Bilder IF1, IF2, IF3, und IF4 sieht, aber nicht IF5 und IF6 und der Gruppe B wird Bilder IF5, IF6 gezeigt, aber nicht IF1, IF2, IF3 und IF4.
Mit dem obigen Code bekomme ich nun immer nur die Bilder IF5 und IF6, sprich es scheitert eventuell noch am Zufallsgenerator, diesen habe ich in der Seite vor den Bildern zusammen mit dem PHP Code integriert. Als Zettel/Kennung habe ich folgendes gewählt:
1 = Gruppe 1
2 = Gruppe 2

Lieben Dank für weiteres Feedback.
by SoSci Survey (328k points)
Die Variable IF08_CP ist incht korrekt - es müsste IF08 lauten. Prüfen Sie das bitte im "Variablen" Karteireiter in IF08.
by s225860 (110 points)
Danke, das bringt mich noch ein weiteres Stück näher.

Nun erhalte ich je nach Durchlauf einmal:
IF1,IF2,IF3,IF4,IF5,IF6, dabei wäre die Erwartung, dass IF1-IF4 angezeigt wird und einmal erhalte ich:
IF5,IF6 = wie erwartet.

Zudem erhalte ich die Fehlermeldung "In setPageOrder() wurde eine Seite "nachherfrage" angegeben, die es im Fragebogen nicht gibt." beim Testen, sobald ich die nachherfrage drin lasse.

Momentan habe ich Folgendes im PHP Code drin:
if (value('IF08') == 1) {
  setPageOrder('IF1,IF2,IF3,IF4,nachherfrage');
} else {
  setPageOrder('IF5,IF6,nachherfrage');
}

Habe ich hier noch irgendwo einen anderen Fehler eingebaut, den Sie spotten können?
by SoSci Survey (328k points)
Was zeigt denn die Debug-Information auf der Seite mit dem PHP-Code? Verwenden Sie irgendwo auf den Seiten IF1-IF6 einen der Befehle setNextPage(), setPageOrder(), loopPage(), loopToPage() oder goToPage()?
by s225860 (110 points)
Folgendes wird angezeigt bei Ziehung von Zettel 1:
[Information]    Interview gestartet (neue Nummer 38)
[Information]    Der Fragebogen base im Projekt SAF_Flugreise_Kompensation wird verwendet

Müsste ich auf der Seite mit Kennung IF4 ein setNextPage() einbauen und damit die Seiten mit Kennung IF5,IF6 überspringen wenn Zettel 1 gezogen wurde?
[Verarbeitung]    Erstelle Seite 12 in Fragebogen base
[Inhalt]    Erstelle Frage IF08
[Information]    Vom Zufallsgenerator IF08 wurden folgende Codes gezogen: 2
[Information]    value("IF08") = 2
[Information]    Entsprechend setPageOrder() werden nun folgende Seiten gezeigt:
17 [IF5], 18 [IF6]
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 17
[Verarbeitung]    Erstelle Seite 17 in Fragebogen base

Dann, wenn ich erwarten würde, dass nach IF4 die Seite IF5,IF6 übersprungen wird, kommen diese dann aber nachstehend:
[Information]    Interview Nummer 37 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt SAF_Flugreise_Kompensation wird verwendet
[Information]    Die Verweildauer auf Seite 16 war 2 Sekunden
[Verarbeitung]    Lese Antworten von Seite 16
[Verarbeitung]    Erstelle Seite 17 in Fragebogen base
by SoSci Survey (328k points)
> [Information]    Entsprechend setPageOrder() werden nun folgende Seiten gezeigt:
> 17 [IF5], 18 [IF6]

Da fehlt die Nachherfrage-Seite. Wie genau sieht Ihr PHP-Code denn aus? Wie lautet die Kennung der Seite, wo es nach IF6 weiter gehen soll?
by s225860 (110 points)
Der PHP-Code sieht so aus: if (value('IF08') == 1) {
  setPageOrder('IF1,IF2,IF3,IF4,nachherfrage');
} else {
  setPageOrder('IF5,IF6,nachherfrage');
}

Den Zufallsgenerator und den PHP Code habe ich auf S.12 eingefügt.
IF1-IF4 sind S.13-16 --> soll auf IF7/S.19 weitergehen (S.17 und S.18 überspringen)
IF5,IF6 sind S.17-18 --> soll auf IF7/S.19 weitergehen

Wie kann ich die Nachherfrage-Seite im PHP-Code IF7 einrichten?
by SoSci Survey (328k points)
Es gibt auch eine Seite im Fragebogen, welche die Kennung "nachherfrage" trägt? Ich frage deshalb, weil der PHP-Code nicht zur Debug-Information passt. Und in Ihrer Antwort schreiben Sie "soll auf IF7" weitergehen, also müsste im setPageOrder() an letzter Stelle eigentlich "IF7" statt "nachherfrage" stehen.
by s225860 (110 points)
Vielen Dank, das wars! Ich wusste nicht genau wie ich die Kennung nachherfrage verwenden soll, mit IF7 funktioniert es nun aber.
Besten Dank für die Hilfe!
by s225860 (110 points)
Hallo nochmals,

ich habe meine Umfrage nun ausgeweitet und den Zufallsgenerator auf 4 Gruppen erweitert. Nun habe ich wieder Hiccups mit dem SetpageOrder.
Momentan habe ich folgendes:
if (value('IF08') == 1) {
  setPageOrder('IF1,IF2,IF3,IF4,IF7,IF8,IF9,GT');
} if (value('IF08') == 2) {
  setPageOrder('IF5,IF6,IF7,IF8,GT');
} if (value('IF08') == 3) {
  setPageOrder('IF11,IF12,IF13,IF14,IF9,IF10,GT');
} else {
  setPageOrder('IF15,IF16,IF9,IF10,GT');
}

Bei den Testdurchläufen funktioniert allerdings nur die Zuordnung Gruppe 3 und Gruppe 4. Ich nehme an ich habe was bei den if values bzw. den Klammern falsch? Wie behebe ich dies, sodass auch Gruppe 1 und Gruppe 2 berücksichtigt werden in der Ziehung und entsprechender Inhalt dann abläuft?

Vielen Dank für die Hilfe im Voraus.

Beste Grüsse.
by SoSci Survey (328k points)
Sie haben zwischen den Bedingungen IF statt ELSEIF geschrieben. Hier Ihr Code nochmal kurz:

if ($v == 1) {
  ...
}
if ($v == 2) {
  ...
}
if ($v == 3) {
  ...
} else {
  ...
}

Beim letzten IF wird bei 3 der obere Zweig ausgeführt, sonst der untere. Also auch bei 1 oder 2.

Ein Blick in die Debug-Information (!) hätte wahrschienlich auch gezeigt, dass erst die richtige Seitenabfolge gesetzt, und selbige dann gleich wieder überschrieben wird.
by s225860 (110 points)
Vielen dank für die Antwort.
Ich bin nun verwundert, die gewünschten Inhalte werden jetzt je Gruppe in allen 4 Szenarien angezeigt, obwohl ich nun den PHP Code wie folgt angelegt habe und nicht wie eben beschrieben mit ELSEIF:
if(value('IF08') == 1) {
  setPageOrder('IF1,IF2,IF3,IF4,IF7,IF8,IF9,GT');
} if(value('IF08') == 2) {
  setPageOrder('IF5,IF6,IF7,IF8,GT');
} if(value('IF08') == 3) {
  setPageOrder('IF11,IF12,IF13,IF14,IF9,IF10,GT');
} if(value('IF08') == 4) {
  setPageOrder('IF15,IF16,IF9,IF10,GT');
}

Hat das eine Auswirkung auf die Datensammlung/-auswertung?
by SoSci Survey (328k points)
Was sagt denn die PHP-Information auf der Seite?
https://www.soscisurvey.de/help/doku.php/de:create:debugging

Und Nachfrage: Was sagt die debug-Information nachd em Klick auf "Weiter"?
by s225860 (110 points)
Im Debug Modus wird die entsprechende Ziehung der Gruppe gezeigt und dann die via PHP Code festgelegten Seitenzahlen.

Bei einem Klick auf "Weiter" ist Folgendes im Debug Modus zu lesen:
[Information]    Interview Nummer 183 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt SAF_Flugreise_Kompensation wird verwendet
[Information]    Die Verweildauer auf Seite 20 war 34 Sekunden
[Verarbeitung]    Lese Antworten von Seite 13+20
[Information]    Entsprechend der vorher festgelegten Seitenabfolge wird Seite 21 [IF12] angezeigt
[Verarbeitung]    Erstelle Seite 21 in Fragebogen base

Die Ziehung und entsprechende Zuordnung der Seiten funktioniert. Nur eben nicht wie vorgeschlagen mit ELSEIF. Daher die Frage, ob der von mir konfigurierte PHP nur "zufällig" funktioniert, aber eigentlich keine Richtigkeit hat und die Datenauswertung womöglich erschwert.
by SoSci Survey (328k points)
> Nur eben nicht wie vorgeschlagen mit ELSEIF.

Achso, dann hatte ich Ihre Nachfrage falsch verstanden.

Kurzum: Viermal IF ist vollkommen okay in Ihrem Fall. Sie könnten drei davon (also nicht das erste) einfach durch ein elseif ersetzen, ohne dass sich an der Funktion etwas ändern würde. Sie können es aber auch bleiben lassen, denn von der Logik her passiert genau dasselbe.
by s225860 (110 points)
Kein Problem, vielleicht hatte ich mich auch nur falsch ausgedrückt, da ich mir nicht sicher war, ob es nur ein "richtig" gibt beim Aufsetzen des PHP Codes für den gewünschten Fall.
Somit hat es sich dann aber geklärt, da die Funktionalität so verläuft wie gewünscht.
Herzlichen Dank für die Unterstützung!

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

...