0 votes
in SoSci Survey (dt.) by s279899 (120 points)

Hallo,

ich habe gerade eine Umfrage erstellt, in denen Personen Fragen zu zwei verschiedenen Szenarien beantworten sollen. Dabei soll sein

Gruppe 1: zuerst Block 1, dann Block 2
Gruppe 2: zuerst Block 2, dann Block 1
Gruppe 3: Randomisierte Zuordnung ob zuerst Block1 oder zuerst Block 2.

Ich habe bereits alle Blöcke sowie die Filtervariable (Zurordnung zur Gruppe 1, 2 oder 3) erstellt. Können Sie mir behilflich sein, wie ich hier nun weitermache? Mit den vorherigen Fragen komme ich leider nicht weiter.

Vielen Dank bereits für Ihre Hilfe!

1 Answer

0 votes
by SoSci Survey (308k points)

Sehen Sie sich bitte einmal die Anleitung Seiten rotieren an, dort wird die Funktion setPageOrder() verwendet. Diese können Sie auch für Ihre beiden "festen" Gruppen verwenden, um die gewünschte Reihenfolge vorzugeben.

Wenn Sie Ihren Code zur Filtervariable posten möchten, kann ich meine Antwort gerne noch ein wenig konkretisieren.

by s279899 (120 points)
Ich habe auf S4 meine Filterfrage. Dort habe ich zusätzlich angegeben, dass Seiten ausgeblendet werden sollen, je nach Antwort der Frage.


Diesen Code habe ich auf der Seite nach der Filtervariable stehen. Wenn jemand Antwort 1 nimmt, soll er/sie die Blöcke randomisiert bekommen:

if (value('DE01') == 1) {
question('ZA03');  // Zettel aus dem Zufallsgenerator ziehen
$pages = value('ZA03', 'label');  // Gezogene Seitenabfolge auslesen
setPageOrder($pages, 'DEM');  // Seitenabfolge anwenden
}

 In der Randomisierung steht:

1 = EinRB-KSB2, UB, EinRA-KSA2
2 = EinRA-KSA2, UB, EinRB-KSB2

Für die Gruppe 3 soll der Fragebogen einfach durchlaufen.
Für Gruppe 2 soll erst der zweite Block (EinRB-KSB2) und dann der erste Block (EinRA-KSA2) angezeigt werden. Das habe ich bereits versucht als Filtervariable:

Filter 2
Wenn eine der folgenden Antwortoption(en) ausgewählt wurde: 2
Dann nach dem Klick auf "Weiter" folgende Seitenabfolge verwenden: EinRB-KSB2, EinRA-KSA2
by SoSci Survey (308k points)
> Für die Gruppe 3 soll der Fragebogen einfach durchlaufen.

Okay, da brauchen wir eigentlich nichts machen, bleibt

> Für Gruppe 2 soll erst der zweite Block (EinRB-KSB2) und dann der erste Block (EinRA-KSA2) angezeigt werden.

Das kombiniert mit dem bereits vorhandenen Filter:

if (value('DE01') == 1) {
    question('ZA03');  // Zettel aus dem Zufallsgenerator ziehen
    $pages = value('ZA03', 'label');  // Gezogene Seitenabfolge auslesen
    setPageOrder($pages, 'DEM');  // Seitenabfolge anwenden
} elseif (value('DE01') == 3) {
    setPageOrder('EinRB-KSB2, UB, EinRA-KSA2', 'DEM');
}

> Wenn eine der folgenden Antwortoption(en) ausgewählt wurde: 2
Dann nach dem Klick auf "Weiter" folgende Seitenabfolge verwenden: EinRB-KSB2, EinRA-KSA2

Das sollte eigentlich auch funktionieren. Was sagt denn die Debug-Information dazu?
https://www.soscisurvey.de/help/doku.php/de:create:debugging
by s279899 (120 points)
Es kommen leider folgende Fehlermeldungen:

Bei Gruppe 1 kommt nun:
"Die Variable ZA03 gibt es in diesem Projekt nicht (siehe Variablen-Übersicht). Daher kann kein Antwort-Wert dafür ermittelt werden." -> meinen Zufallsgenerator ZA03 gibt es jedoch mit

1 = EinRB-KSB2, UB, EinRA-KSA2
2 = EinRA-KSA2, UB, EinRB-KSB2.

Für Gruppe 3: der Fragebogen springt an die entsprechende Stelle, allerdings geht er nach KSB2 weiter und endet (d.h. er springt nicht zu UB).

Kann es daran liegen, dass ich einige Randomisierungen drin habe?
Ich habe drin:

ab S9 (nach EinRA) ist ein Zufallsgenerator drin:

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

replace('%random1%', 'ZA01x01', 'response');

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

replace('%random2%', 'ZA01x02', 'response');

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

replace('%random3%', 'ZA01x03', 'response'); etc bis 27.

Das gleiche ist nach EinRB.

Außerdem sind weiter Seiten innerhalb eines Blockes randomisiert mit:

question('ZA04');  // Zettel in zufälliger Reihenfolge ziehen
$pages = valueList('ZA04', NULL, 'label');  // Gezogene Zettel auslesen
setPageOrder($pages, 'KSA1');  // Seiten als Seitenabfolge definieren
by s279899 (120 points)
Hier noch einmal genauer:

DE01 = Filtervariable

Wenn DE01 =1, dann soll randomisiert werden:
1) EinLB, CJB1-KSB2, UB, EinLA, CJA1-KSA2, DEM, end
2) EinLA, CJA1-KSA2, UB, EinLB, CJB1-end

Wenn DE01 = 2
 EinRB, CJB1-KSB2, UB, EinRA, CJA1-KSA2, DEM, end

Wenn DE01=3
EinSA, CJA1-KSA2, UB, EinSB, CJB1-end

Hinzu kommen:
Randomiesierung der Seiten
AHP1A - AHP15A
AHP1B - AHP15B

Sowie ein Zufallsgenerator (ZA03) für das Einsetzen in Variablen in die Seiten
CJA1-CJA9 und
Zufallsgenerator ZA04 für
CJB1 - CJB9

(bereits oben dargestellt).
by SoSci Survey (308k points)
> Die Variable ZA03 gibt es in diesem Projekt nicht (siehe Variablen-Übersicht).

Vermutlich haben Sie im Zufallsgenerator ZA03 eingestellt, dass 2 Codes pro Interview gezogen werden sollen (dadurch bekommen Sie zwei Variablen). Sie brauchen aber nur einen.
by s279899 (120 points)
Danke, das hat schon einmal funktioniert:

allerdings funktioniert die folgende Reihenfolge nicht:

if (value('DE03') == 1) {
urnDraw('reihenfolge', 'ZA06');
$zahl = value('ZA06_01');
if ($zahl == 1) {
  setPageOrder('EinLB, CJB1-KSB2, UB, EinLA, CJA1-KSA2, DEM');
} else {
  setPageOrder('EinLA, CJA1-KSA2, UB, EinLB, CJB1');
}

 }
elseif (value('DE03') == 2) {
    setPageOrder('EinRB, CJB1-KSB2, UB, EinRA, CJA1-KSA2, DEM');
} elseif (value('DE03') == 3) {
    setPageOrder('EinSA, CJA1-UB, EinSB, CJB1');}


bei DE03=2 springt er nach KSB2 nicht wieder auf UB sondern geht direkt auf DEM, sodass der zweite Block ausgespart wird. Eine Fehlermeldung erscheint nicht.
by s279899 (120 points)
Das gleiche passiert, wenn der Zufallsgenerator so gezogen wird, dass bei DE03=1 die Reihenfolge mit EinLB startet. Auch dann bricht er nach KSB2 die Reihenfolge ab und geht weiter auf DEM (DEM folgt im Fragebogen direkt auf KSB2)
by SoSci Survey (308k points)
Sie schreiben "Zufallsgenerator", verwenden aber urnDraw(). Die Urnen-Funktion ist etwas anderes, und ich empfehle, sie in Ihrem Fall nicht zu verwenden. Schon alleine deshalb, weil sie nicht geeignet ist, mehrere Werte pro Interview (ohne Doppelung) zu ziehen.

> Eine Fehlermeldung erscheint nicht.

Verwenden Sie bitte die Debug-Information, um zu sehen, was im Hintergrund passiert.
by s279899 (120 points)
[Information]    Interview Nummer 80 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt motivation_muenster wird verwendet
[Information]    Die Verweildauer auf Seite 64 war 10 Sekunden
[Verarbeitung]    Lese Antworten von Seite 64
[Information]    Antwort auf KS02_01 = 20
[Information]    Antwort auf KS02_02 = 30
[Information]    Antwort auf KS02_03 = 20
[Information]    Antwort auf KS02_04 = 20
[Information]    Antwort auf KS02_05 = 0
[Information]    Antwort auf KS02_06 = 10
[Information]    Fragen bisher zu 71% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 65 in Fragebogen base
[Inhalt]    Erstelle Frage DE02

Das sind die Informationen.

Könnten Sie mir sagen, wie ich die Seitenreihenfolge, abhängig von der Frage DE03 hinbekomme?
by s279899 (120 points)
Auch mit den Zufallsgenerator springt er nach der Seite KSB2 nicht zu UB, sondern geht in der ursprünglichen Fragebogenseite weiter.
by SoSci Survey (308k points)
Sie hatten oben folgenden Code:

if (value('DE01') == 1) {
  question('ZA03');  // Zettel aus dem Zufallsgenerator ziehen
  $pages = value('ZA03', 'label');  // Gezogene Seitenabfolge auslesen
  setPageOrder($pages, 'DEM');  // Seitenabfolge anwenden
}

Den hatte ich noch minimal ergänzt:


if (value('DE01') == 1) {
    question('ZA03');  // Zettel aus dem Zufallsgenerator ziehen
    $pages = value('ZA03', 'label');  // Gezogene Seitenabfolge auslesen
    setPageOrder($pages, 'DEM');  // Seitenabfolge anwenden
} elseif (value('DE01') == 3) {
    setPageOrder('EinRB-KSB2, UB, EinRA-KSA2', 'DEM');
}

Das sah' eigentlich soweit gut aus. Aber laut der Debug-Information scheint er nicht (mehr) auf der Seite zu sein? Sonst müsste es da einen Hinweis zumindest auf DE01 in der Debug-Information geben.
by s279899 (120 points)
Ich habe den Code noch einmal angepasst (von ihnen). Die Debug-Informationen sind folgende:


 
96% ausgefüllt
[Information]    Interview Nummer 90 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt motivation_muenster wird verwendet
[Information]    Die Verweildauer auf Seite 64 war 8 Sekunden
[Verarbeitung]    Lese Antworten von Seite 64
[Information]    Antwort auf KS02_01 = 0
[Information]    Antwort auf KS02_02 = 20
[Information]    Antwort auf KS02_03 = 20
[Information]    Antwort auf KS02_04 = 20
[Information]    Antwort auf KS02_05 = 20
[Information]    Antwort auf KS02_06 = 20
[Information]    Fragen bisher zu 74% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 65 in Fragebogen base
[Inhalt]    Erstelle Frage DE02

Mein Code ist:

if (value('DE03') == 1) {
    question('ZA03');  // Zettel aus dem Zufallsgenerator ziehen
    $pages = value('ZA03', 'label');  // Gezogene Seitenabfolge auslesen
    setPageOrder($pages, 'DEM');  // Seitenabfolge anwenden
} elseif (value('DE03') == 2) {
    setPageOrder('EinSA-KSA2, UB, EinSB-KSB2', 'DEM');
} elseif (value('DE03') == 3) {
    setPageOrder('EinRB-KSB2, UB, EinRA-KSA2', 'DEM');
}
by SoSci Survey (308k points)
Dieser Code steht auf Seite 65? Dann müsste in der Debug-Information sichtbar sein, welcher Wert für DE03 ermittelt wird. Dazu taucht aber nichts auf. Kann es sein, dass Sie den Code nicht in ein Element "PHP-Code" geschrieben haben, sondern unten in "Verarbeitung der Antworten mittels PHP"?
by s279899 (120 points)
Dies erscheint bevor ich weitere Fragen beantworte in der Debug-Info:

[Information]    Interview Nummer 92 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt motivation_muenster wird verwendet
[Information]    Die Verweildauer auf Seite 4 war 2 Sekunden
[Verarbeitung]    Lese Antworten von Seite 4
[Information]    Antwort auf DE03 = 1
[Information]    ▼ Filter DE03/1 wird aktiv (Bedingung erfüllt).
[Information]    Bedingung in Filter DE03/2 ist nicht erfüllt.
[Information]    Bedingung in Filter DE03/3 ist nicht erfüllt.
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 5 in Fragebogen base
[Inhalt]    Erstelle Frage TY01
[Information]    value("DE03") = 1
[Inhalt]    Erstelle Frage ZA03
[Information]    Vom Zufallsgenerator ZA03 wurden folgende Codes gezogen: 2
[Information]    value("ZA03") = "EinRA-KSA2, UB, EinRB-KSB2"
[Information]    Entsprechend setPageOrder() werden nun folgende Seiten gezeigt:
6 [EinRA], 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34 [KSA2], 35 [UB], 36 [EinRB], 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64 [KSB2], 65 [DEM]


Der Code steht im Element "PHP-Code"
by s279899 (120 points)
bzw bei einer zweiten Ziehung:


[Information]    Interview Nummer 93 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt motivation_muenster wird verwendet
[Information]    Die Verweildauer auf Seite 4 war 6 Sekunden
[Verarbeitung]    Lese Antworten von Seite 4
[Information]    Antwort auf DE03 = 1
[Information]    ▼ Filter DE03/1 wird aktiv (Bedingung erfüllt).
[Information]    Bedingung in Filter DE03/2 ist nicht erfüllt.
[Information]    Bedingung in Filter DE03/3 ist nicht erfüllt.
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 5 in Fragebogen base
[Inhalt]    Erstelle Frage TY01
[Information]    value("DE03") = 1
[Inhalt]    Erstelle Frage ZA03
[Information]    Vom Zufallsgenerator ZA03 wurden folgende Codes gezogen: 1
[Information]    value("ZA03") = "EinRB-KSB2, UB, EinRA-KSA2"
[Information]    Entsprechend setPageOrder() werden nun folgende Seiten gezeigt:
36 [EinRB], 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64 [KSB2], 35 [UB], 6 [EinRA], 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34 [KSA2], 65 [DEM]

--> hier wird nach S. 64 allerdings 65 (DEM) angezeigt
by SoSci Survey (308k points)
> [Information]    Antwort auf DE03 = 1
> [Information]    ▼ Filter DE03/1 wird aktiv (Bedingung erfüllt).

Wenn Sie mit PHP-Code arbeiten, sollten Sie den Filter aus der Frage eventuell entfernen - zumindest dann, wenn Sie dort eine Seitenabfolge hinterlegt haben. Sonst heben sich setPageOrder() und diese Seitenabfolge gegenseitig auf.
by s279899 (120 points)
Ich habe nun alle Filter entfernt und folgenden PHP-Code eingegeben:

if (value('DE03') == 1) {
    question('ZA03');  // Zettel aus dem Zufallsgenerator ziehen
    $pages = value('ZA03', 'label');  // Gezogene Seitenabfolge auslesen
    setPageOrder($pages, 'DEM');  // Seitenabfolge anwenden
} elseif (value('DE03') == 2) {
    setPageOrder('EinRB,CJB1-KSB2, UB, EinRA, CJA1-KSA2, DEM');
} elseif (value('DE03') == 3) {
    setPageOrder('EinSA-UB, EinSB,CJB1-KSB2, DEM');
}

Meine reguläre Seitenabfolge ist wie folgt:

Dem1 (mit DE03), ZW (enthält einen Übergangstext und den o.g. Code), EinRA,EinLA,EinSA, CJA1,CJA2,CJA3,CJA4,CJA5,CJA6,CJA7,CJA8,CJA9 (diese enthalten den folgenden Zufallsgenerator:

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

replace('%random4%', 'ZA01x04', 'response');

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

replace('%random5%', 'ZA01x05', 'response');

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

replace('%random6%', 'ZA01x06', 'response');

weiter geht es mit:

AHPA,AHP1A bis AHP15A (diese sind randomisiert mit:


if (!isset($seiten)) {
  $seiten = array('AHP1A','AHP2A','AHP3A','AHP4A','AHP5A','AHP6A','AHP7A',
'AHP8A','AHP9A','AHP10A','AHP11A','AHP12A','AHP13A','AHP14A','AHP15A',);
  shuffle($seiten);
  registerVariable($seiten);
}
// Die Seitenabfolge festlegen und die Seite, wo es anschließend weitergeht
setPageOrder($seiten, 'KSA2');


weiter mit: KSA2, UB, EinRB, EinSB,EinLB, CJB1 - CJB9 (wie oben),  AHPB, AHP1B - AHP15B (gleiche Randomisierung wie oben), KSB2, DEM, end.


ich finde den fehler leider immer noch nicht. mehr Codes habe ich nicht
by SoSci Survey (308k points)
> AHPA,AHP1A bis AHP15A (diese sind randomisiert mit:

Die AH* Seiten kommen erst nach DEM, ja? Nicht, dass sich die beiden setPageOrder() gegenseitig außer Kraft setzen.

Was sagt denn die Debug-Information auf der Seite mit dem oberen PHP-Code, wenn DE03 den Wert 1 hat, und was sagt sie auf der folgenden Seite?
by s279899 (120 points)
nein, die DEM Seite ist die vorletze Seite im Fragebogen, die alle Gruppen auch als vorletzte Seite beantworten sollen:

Dies erscheint in den Debug-Informationen:

Information]    Interview Nummer 93 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt motivation_muenster wird verwendet
[Information]    Die Verweildauer auf Seite 4 war 6 Sekunden
[Verarbeitung]    Lese Antworten von Seite 4
[Information]    Antwort auf DE03 = 1
[Information]    ▼ Filter DE03/1 wird aktiv (Bedingung erfüllt).
[Information]    Bedingung in Filter DE03/2 ist nicht erfüllt.
[Information]    Bedingung in Filter DE03/3 ist nicht erfüllt.
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 5 in Fragebogen base
[Inhalt]    Erstelle Frage TY01
[Information]    value("DE03") = 1
[Inhalt]    Erstelle Frage ZA03
[Information]    Vom Zufallsgenerator ZA03 wurden folgende Codes gezogen: 1
[Information]    value("ZA03") = "EinRB-KSB2, UB, EinRA-KSA2"
[Information]    Entsprechend setPageOrder() werden nun folgende Seiten gezeigt:
36 [EinRB], 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64 [KSB2], 35 [UB], 6 [EinRA], 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34 [KSA2], 65 [DEM]

--> hier wird nach S. 64 allerdings 65 (DEM) angezeigt
by SoSci Survey (308k points)
> die DEM Seite ist die vorletze Seite im Fragebogen, die alle Gruppen auch als vorletzte Seite beantworten sollen:

Wo (welche Seitennummern) sind denn die AH* Seiten? Welche Kennungen haben die Seiten direkt davor und danach?

Warum ich frage: Weil ein weiteres setPageOrder() das vorherige außer Kraft setzt. Das müssten Sie ggf. gleich beim ersten setPageOrder() rotieren.
by s279899 (120 points)
Die AHA* Seiten sind S19-S33 sowie AHB* S49-63

tatsächlich ist dort ein weiteres setPageOrder () vorhanden:

if (!isset($seiten2)) {
  $seiten2 = array('AHP1B','AHP2B','AHP3B','AHP4B','AHP5B','AHP6B','AHP7B',
'AHP8B','AHP9B','AHP10B','AHP11B','AHP12B','AHP13B','AHP14B','AHP15B',);
  shuffle($seiten2);
  registerVariable($seiten2);
}
// Die Seitenabfolge festlegen und die Seite, wo es anschließend weitergeht
setPageOrder($seiten2, 'KSB2');

D.h. ich habe ein setPageOrder () für die Blockabfolge von DE03 =1 und DE03 =3, sowie innerhalb der Blöcke. Anscheinend löst diese die erste ab. Wie kann ich dieses Problem lösen?
by SoSci Survey (308k points)
Um die Rotation der AH*-Seiten und um die Variation der Abfolge müssen Sie sich in einem Aufwasch direkt zu Beginn kümmern. Das könnte z.B. so aussehen:

if (!isset($seitenAHP)) {
  $seitenAHP = array('AHP1B','AHP2B','AHP3B','AHP4B','AHP5B','AHP6B','AHP7B',
'AHP8B','AHP9B','AHP10B','AHP11B','AHP12B','AHP13B','AHP14B','AHP15B',);
  shuffle($seitenAHP);
  registerVariable($seitenAHP);
}

In die Klammer schreiben Sie auch gleich noch die Listen und Variablen für $seitenAHA und $seitenAHB. Und das setzen Sie direkt direkt in das gemeinsame setPageOrder() ein - hier exemplarisch (vermutlich nicht an der richtigen Stellen).

if (value('DE03') == 1) {
    question('ZA03');  // Zettel aus dem Zufallsgenerator ziehen
    $abfolge = value('ZA03');
} elseif (value('DE03') == 2) {
    $abfolge = 1;
} elseif (value('DE03') == 3) {
    $abfolge = 2;
}
debug($abfolge);

if ($abfolge == 1) {
    setPageOrder('EinRB', $seitenAHP, 'KSB2, UB, EinRA, CJA1-KSA2, DEM');
} else {
    setPageOrder('EinSA-UB, EinSB,CJB1', $seitenAHP, 'KSB2, DEM');
}

Damit es auch mit dem Variieren via ZA03 funktioniert, bin ich über eine neue Variable $abfolge und darunter einen zweiten IF-Filter gegangen. Das debug() dient nur der Kontrolle im Debugging-Modus.
by s279899 (120 points)
ich habe nun folgendes programmiert:


if (!isset($seitenAHP_B)) {
  $seitenAHP_B = array('AHP1B','AHP2B','AHP3B','AHP4B','AHP5B','AHP6B','AHP7B',
'AHP8B','AHP9B','AHP10B','AHP11B','AHP12B','AHP13B','AHP14B','AHP15B',);
  shuffle($seitenAHP_B);
  registerVariable($seitenAHP_B);
}

if (!isset($seitenAHP_A)) {
  $seitenAHP_A = array('AHP1A','AHP2A','AHP3A','AHP4A','AHP5A','AHP6A','AHP7A',
'AHP8A','AHP9A','AHP10A','AHP11A','AHP12A','AHP13A','AHP14A','AHP15A',);
  shuffle($seitenAHP_A);
  registerVariable($seitenAHP_A);
}



if (value('DE03') == 1) {
    question('ZA03');  // Zettel aus dem Zufallsgenerator ziehen
    $abfolge = value('ZA03');
} elseif (value('DE03') == 2) {
    $abfolge = 1;
} elseif (value('DE03') == 3) {
    $abfolge = 2;
}
debug($abfolge);

if ($abfolge == 1) {
    setPageOrder('EinRB', $seitenAHP_B, 'KSB2, UB, EinRA, EinA2, CJA1-CJA9, AHPA, $seitenAHP_A, KSB2, DEM');
} else {
    setPageOrder('EinSA-AHPA, $seitenAHP_A, KSA2, UB,  EinSB,CJB1-CJB9', $seitenAHP_B, 'KSB2, DEM');
}

allerdings bekomme ich nun die folgende Meldung:

Hinweis (Seite 5)
Debug-Information für $abfolge:
$abfolge = 1 (integer)
Warnung (Seite 5)
In setPageOrder() wurde eine Seite "$seitenAHP_A" angegeben, die es im Fragebogen nicht gibt.
by SoSci Survey (308k points)
Sie haben das $seitenAHP_A in Anführrungszeichen stehen lassen:

'EinRB', $seitenAHP_B, 'KSB2, UB, EinRA, EinA2, CJA1-CJA9, AHPA, $seitenAHP_A, KSB2, DEM'

Korrekt wäre aber:

'EinRB', $seitenAHP_B, 'KSB2, UB, EinRA, EinA2, CJA1-CJA9, AHPA', $seitenAHP_A, 'KSB2, DEM'

Das Komma ist hier teilwese Teil des Strings, teilweise trennt es Parameter. Ohne Syntax.Highlighting ist das hier leider nicht ganz einfach zu sehen.
by s279899 (120 points)
Vielen, vielen herzlichen Dank! Nun funktioniert alles wunderbar, nachdem ich weitere setPageOrder() Befehle aus der Umfrage entfernt habe.

Lediglich die folgende Meldung steht unter dem PHP-code:
Warnung

Bitte beachten Sie, dass die von random() oder shuffle() erzeugten Zufallswerte nicht automatisch im Datensatz gespeichert werden. Zum Speichern können Sie ggf. die Funktion put() verwenden.

In meiner Auswertung später ist es nicht wichtig zu sehen an welcher Stelle welche Seite präsentiert wurde, lediglich die Antwort entsprechend zur Seite ist relevant.


Bei dem folgenden Code (siehe unten) ist es jedoch wichtig nachvollziehen zu können, welche Stimuli auf welcher Seite präsentiert wurden. Muss ich dazu noch etwas im Code hinzufügen?:

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

replace('%random1%', 'ZA01x01', 'response');

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

replace('%random2%', 'ZA01x02', 'response');

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

replace('%random3%', 'ZA01x03', 'response');
by SoSci Survey (308k points)
Sie sollten alle notwendigen Daten in ZA01x01 etc. haben. Aber ich empfehle dennoch dringend, dass Sie Ihre Daten einmal herunterladen und in die Auswertung schicken - je nach Statistikprogramm ist es zwischen sehr einfach (R) und furchbar unhandlich (SPSS) die Daten auf Basis der Zufallsvariablen so umzubauen, dass Sie sie für die Auswertung verwenden können.
by s279899 (120 points)
Vielen Dank! Ich habe die Datei nun heruntergeladen und mit put() bekomme ich die Informationen, die ich benötige.

Ich habe noch eine (hoffentlich letzte) Frage:

Ich habe den folgenden Code nun:

if (!isset($seitenAHP_B)) {
  $seitenAHP_B = array('AHP1B','AHP2B','AHP3B','AHP4B','AHP5B','AHP6B','AHP7B',
'AHP8B','AHP9B','AHP10B','AHP11B','AHP12B','AHP13B','AHP14B','AHP15B',);
  shuffle($seitenAHP_B);
  registerVariable($seitenAHP_B);
}

if (!isset($seitenAHP_A)) {
  $seitenAHP_A = array('AHP1A','AHP2A','AHP3A','AHP4A','AHP5A','AHP6A','AHP7A',
'AHP8A','AHP9A','AHP10A','AHP11A','AHP12A','AHP13A','AHP14A','AHP15A',);
  shuffle($seitenAHP_A);
  registerVariable($seitenAHP_A);
}



if (value('DE03') == 1) {
    question('ZA03');  // Zettel aus dem Zufallsgenerator ziehen
    $abfolge = value('ZA03');
} elseif (value('DE03') == 2) {
    $abfolge = 1;
} elseif (value('DE03') == 3) {
    $abfolge = 2;
}
debug($abfolge);

if ($abfolge == 1) {
    setPageOrder('EinRB, EinB2, CJB1-CJB9, AHP B', $seitenAHP_B, 'EINKSB, KSB2, UB, EinRA, EinA2, CJA1-CJA9, AHPA', $seitenAHP_A, 'EINKSA, KSA2', 'DEM');
} else {
    setPageOrder('EinSA-AHPA', $seitenAHP_A, 'EINKSA, KSA2, UB,  EinSB, EinB2, CJB1-CJB9', $seitenAHP_B, 'EINKSB, KSB2, DEM');
}

Allerdings sollen bei value('DE03')==1 in beiden Fällen die folgenden Seiten ausgetauscht werden:
EinSB = EinLB
EinRA = EinLA
EinSA = EinLA
EinSB = EinLB

Ich habe bereits versucht die Seiten mit in setPageOrder() zu nehmen und sie in der Variable DE03 über einen Filter entsprechend auszublenden. Leider funktioniert dies nicht, sondern die Seite wird in keiner Bedingung mehr angezeigt. Kann ich dies ggf. in den Befehl mit einbeziehen?

Dankeschön erneut!
by SoSci Survey (308k points)
> Allerdings sollen bei value('DE03')==1 in beiden Fällen die folgenden Seiten ausgetauscht werden

Wenn ich Sie korrekt verstehe, gibt es nicht nur 2 Abfolgen, sondern eigentlich 4. Ich würde empfehlen, dass Sie das wie fogllgt umsetzen (hier nur der hintere Teil).

if (value('DE03') == 1) {
    question('ZA03');  // Zettel aus dem Zufallsgenerator ziehen
    $abfolge = value('ZA03');
} elseif (value('DE03') == 2) {
    $abfolge = 3;
} elseif (value('DE03') == 3) {
    $abfolge = 4;
}
debug($abfolge);


if ($abfolge == 1) {
    setPageOrder('EinRB, EinB2, CJB1-CJB9, AHP B', $seitenAHP_B, 'EINKSB, KSB2, UB, EinRA, EinA2, CJA1-CJA9, AHPA', $seitenAHP_A, 'EINKSA, KSA2', 'DEM');
} elseif ($abfolge == 3) {
    setPageOrder('EinRB, EinB2, CJB1-CJB9, AHP B', $seitenAHP_B, 'EINKSB, KSB2, UB, EinRA, EinA2, CJA1-CJA9, AHPA', $seitenAHP_A, 'EINKSA, KSA2', 'DEM');
} elseif ($abfolge == 2) {
    setPageOrder('EinSA-AHPA', $seitenAHP_A, 'EINKSA, KSA2, UB,  EinSB, EinB2, CJB1-CJB9', $seitenAHP_B, 'EINKSB, KSB2, DEM');
} else {
    setPageOrder('EinSA-AHPA', $seitenAHP_A, 'EINKSA, KSA2, UB,  EinSB, EinB2, CJB1-CJB9', $seitenAHP_B, 'EINKSB, KSB2, DEM');
}

Ich finde in den Listen aktuell nur die "EinSB" - die würden Sie in Abfolge 2 gegen "EinLB" tauschen, nicht aber in Abfolge 4 (else-Teil). Eventuell müssen Sie Seitenbereich in den Abfolgen 1 und 2 noch auseinandernehmen, damit Sie die Seiten austauschen können.

Alternativ können Sie auf den betroffenen Seiten einfach nur per PHP-Filter die entsprechenden Fragen austauschen.

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

...