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

Hallo liebes Support-Team,

ich habe einen Fragebogen erstellt, bei dem zum Anfang eine von 3 Artikelfassungen (Stimulus) angezeigt wird. Zu jedem dieser Textfassungen müssen im Anschluss Fragen beantwortet werden bzw. Aussagen beurteilt werden.

Dort, wo der Artikel (Artikel sind jeweils in Textblöcken gespeichert) zufällig angezeigt werden soll, habe ich den Zufallsgenerator eingestellt und den php-Code:

$code = value('H001');
if ($code == 1) {
  text('JBD');
} elseif ($code == 2) {
  text('JGM');
} elseif ($code == 3) {
  text('JGS');
}

Es klappt, dass so zufällig aus den drei Varianten jeweils eine angezeigt wird.

Nun möchte ich, dass bei der Textfassung JGS noch eine zusätzliche Frage angezeigt wird und habe schon hin und her probiert. Doch immer wenn ich mit value('H001'); arbeite, wird mir ein Fehler angezeigt, dass es für diesen value keinen Wert geben würde.
Könnt ihr mir sagen, wie ich die php-Codes sowohl auf der Seite wo der Stimulus als auch auf der Seite mit der Frage programmieren muss, dass das klappt? Die Frage, die wirklich nur bei der einen Textfassung, aber nicht bei den anderen Textfassungen angezeigt werden soll, hat die Kennung E025.
Das würde mir sehr weiterhelfen.
Herzlichen Dank!

1 Answer

0 votes
by s139847 (2.7k points)

Hallo,

soll die Frage denn direkt im Anschluss an den JGS Text erscheinen? In dem Fall ist es sehr einfach, die bauen einfach direkt ein question('E025') ein, also:

} elseif ($code == 3) {
  text('JGS');
  question('E025');
}

Ich nehme an, dass Sie eingestellt haben, dass Sie bei H001 nur einen Zettel ziehen können - das ist ja auch richtig, Sie brauchen ja nur einen Wert. Deswegen können Sie value('H001'); nicht noch mal benutzen, der gezogene Wert liegt ja jetzt schon in $code. Wenn Sie also noch mal auf einer anderen Seite abfragen wollen, was Sie gezogen haben, sollten Sie den Wert in einer internen Variable statt in $code speichern, dann können die damit ein entsprechendes if-else bauen.

Viele Grüße

by s136321 (110 points)
Vielen Dank für die schnelle Rückmeldung!
Ja, es wird immer nur ein Zettel gezogen und daher immer nur eine Artikelvariante angezeigt.
Die Frage soll erst am Ende des Fragebogens eingeblendet werden - sonst würde ein Störfaktor entstehen.
Ich habe eine interne Variable angelegt, scheitere nun aber an der genauen Formulierung, die ich dort eingeben muss.
Und wenn ich diese gespeichert habe, kann ich dann bei der Seite mit der Frage einfach den oben beschriebenen Code eingeben?
Vielen Dank für die Hilfe!
by s139847 (2.7k points)
Prinzipiell bleibt fast alles, wie es war. Sie benutzen weiterhin Ihren Code, um den zufälligen Text anzeigen zu lassen, Sie haben auf dieser Seite jetzt nur eine weitere Teile:

$code = value('H001');
put('AB03_01', $code);
if ($code == 1) {
  text('JBD');
} elseif ($code == 2) {
  text('JGM');
} elseif ($code == 3) {
  text('JGS');
}

AB03_01 ist hier der Name ersten Variable im Baustein der internen Variable AB03. Damit speichern Sie jetzt hier also das Ergebnis Ihrer Ziehung zwischen.
Auf der Seite, auf der dann Ihre Frage erscheinen soll, schreiben Sie etwas wie

if (value('AB03_1') == 3) {
  question('E025');
}

und zeigen damit Ihre Frage an.
by s136321 (110 points)
Vielen Dank!
Das habe ich so übernommen. Meine Variable hat die Kennung E031_01.
Nun erhalte ich aber folgende Fehlermeldung:
Die Variable E031_01 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln.
Können Sie mir abermals helfen?
Herzlichen Dank!
by s136321 (110 points)
Und gleichzeitig wird mir die Frage leider noch bei den anderen Artikelvarianten ebenfalls angezeigt. :(
by s139847 (2.7k points)
haben Sie die Zeile mit put() oben eingefügt? Und wenn Sie das ganze ausprobieren, gehen Sie direkt aud die Seite für Frage E025? Am besten probieren Sie Ihren Fragebogen mal im Debug Modus (kleiner gelber Pfeil) aus, da wird Ihnen angezeigt, was/ob in E031_01 geschrieben wird aud der Auswahlseite, und springen dann mit der Debug Leiste oben zur entsprechenden Frageseite.
by s136321 (110 points)
Ich habe eine interne Variable angelegt mit der Kennung E031_01 - liegt hier vielleicht der Fehler? Muss ich bei dieser noch mehr definieren?

Dann habe ich bei der Stimulusziehung (Zufallsgenerator) eingegeben:

$code = value('H001');
put('AB03_01', $code);
if ($code == 1) {
 text('JBD');
} elseif ($code == 2) {
 text('JGM');
} elseif ($code == 3) {
 text('JGS');
}

Und auf der Seite mit der zusätzlichen Frage, die nur bei Artikel JGS  vorkommen soll, folgendes:
if (value('AB03_1') == 3) {
 question('E025');
}

Ich habe den Fragebogen im Debug-Modus geprüft. Nun wird mir aber leider immer noch bei allen Artikelvarianten und nicht nur bei Artikel/Stimuls JGS die Frage angezeigt.
Haben Sie eine Idee, wo der Fehler liegt?
Herzlichen Dank!
by s139847 (2.7k points)
okay, also:

1) Ist der Name, mit der Sie die Interne Variable gebaut haben E031_01?. Ganz unten auf der Seite der Internen Variable sehen Sie unter "Weitere Einstellungen" die Namen Ihrer Variable in der internen Variablen - das ist die Kennung, die Sie brauchen.

2) Sie müssen Ihre Kennung natürlich noch im Code da einsetzen, wo bei mir ursprünglich AB03_01 steht, die Variable haben Sie ja nicht.
by s136321 (110 points)
Ja, ich habe natürlich AB03_01 durch E031_01 ersetzt. Sorry, das habe ich gerade auf die Schnelle hier nicht richtig beschrieben.
Es bleibt aber bei dem benannten Problem.. =/
by s136321 (110 points)
Muss ich noch einen Code einfügen für die anderen Artikelfassungen, der besagt, dass bei Ziehung dieser die Frage NICHT angezeigt wird?
by s139847 (2.7k points)
eigentlich nicht. Zwei Sachen: Bitte schicken Sie mir einmal, was auf der Debug Seite, wo der Text ausgelost wird, steht, und haben Sie auf der letzten Seite die entsprechende Frage auch noch in den Fragebogen gezogen? Dann wird sie nämlich immer angezeigt.
by s136321 (110 points)
Achje. Genau das letzte war es!
Es klappt jetzt! Vielen Dank!!!
by s139847 (2.7k points)
hah! jetzt haben wir das Problem gefunden, dann noch viel Erfolg!

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

...