0 votes
in SoSci Survey (dt.) by s261495 (180 points)

Liebes Support-Team,

in meinem Fragebogen möchte ich zufällig verschiedene HTML-Files bzw. Websites anzeigen lassen.

Ich habe dazu bereits einen Zufallsgenerator sowie Texte mit den entsprechenden HTML-Codes angelegt.
Im Fragebogen lasse ich über den PHP-Code

if (value('ZU01') == 1) {
text('XX01');
} elseif (value('ZU01') == 2) {
text('XX02');
} elseif (value('ZU01') == 3) {
text('XX03');
} elseif (value('ZU01') == 4) {
text('XX04');
} elseif (value('ZU01') == 5) {
text('XX05');
}

die verschiedenen Texte anzeigen.

Nun hätte ich zwei Fragen:
1. Wenn ich die HTML-Codes als Texte anlege, erscheint die Fehlermeldung "Your content uses the HTML tag . This will most likely cause invalid HTML code, and therefore may cause error in the layout or the function of your questionnaire page. At last with some browsers." Die HTML-Codes werden tatsächlich auch nicht zuverlässig wie gewünscht angezeigt.
Daher meine Frage: Gibt es eine andere Möglichkeit die HTML-Codes oder HTML-Files einzubinden?
2. Der Zufallsgenerator funktioniert nur, wenn ich die Anzahl der gezogenen Zettel pro Interview auf 1 festlege. Ich würde jedoch gerne mehrere Zettel pro Interview ziehen.
Gibt es eine Möglichkeit dies umzusetzen?

Vielen Dank im Voraus und herzliche Grüße!

1 Answer

0 votes
by SoSci Survey (340k points)
  1. Wenn ich die HTML-Codes als Texte anlege, erscheint die Fehlermeldung "Your content uses the HTML tag .

Das HTML-Element <html> harf in Ihrem HTML-Code nicht vorkommen, denn Ihr Code soll ja innerhalb (!) einer bereits bestehenden Fragebogenseite angezeigt werden. Diese Seite hat ihr eigenes <html>.

Bitte stellen Sie sicher, dass Sie nur den Inhalt in dem Textelement speichern und nicht eine komplette HTMl-Seite.

  1. Der Zufallsgenerator funktioniert nur, wenn ich die Anzahl der gezogenen Zettel pro Interview auf 1 festlege.

Der Zufallsgenerator funktioniert auch, wenn Sie mehrere Zettel einstellen - nur Ihr Code nicht ;) Sie müssten im Zufallsgenerator mal im "Variablen" Karteireiter nachsehen, wie die Variablen dann heißen und in Ihrem PHP-Code das 'ZU01' entsprechend austauschen.

by s261495 (180 points)
Vielen Dank für die Antwort!

Zur zweiten Frage bezüglich des Zufallsgenerators hätte ich noch eine Rückfrage:
Ich möchte in einem Interview 5 Zettel ziehen, die Variablen im Zufallsgenerator heißen dann ZU01x01, ZU01x02, ZU01x03, ZU01x04, ZU01x05.

Ich habe daher meinem PHP-Code wie folgt angepasst:
if (value('ZU01x01') == 1) {
  text('XX01');
} elseif (value('ZU01x02') == 2) {
  text('XX02');
} elseif (value('ZU01x03') == 3) {
  text('XX03');
} elseif (value('ZU01x04') == 4) {
  text('XX04');
} elseif (value('ZU01x05') == 5) {
  text('XX05');
}

Leider wird aber nach wie vor nur ein Zettel angezeigt. Inwiefern muss ich den PHP-Code noch anpassen, damit fünf Zettel angezeigt werden?

Herzlichen Dank und viele Grüße!
by SoSci Survey (340k points)
> Leider wird aber nach wie vor nur ein Zettel angezeigt.

Sie möchten die 5 Inhalte nacheinander auf separaten Seiten anzeigen lassen? Zusammen mit weiteren Inhalten (z.B. mit einer Frage) ioder "einfach so"?

Ihr PHP-Code prüft gerade, ob Sie als ersten Zettel zufällig die 1 gezogen haben, als zweiten zufällig die 2 u.s.w. ... und nur bei diesen Treffern wird ein Text angezeigt. Und dann auch nur einer, wegen dem elseif.

Ich weiß nur nicht, worauf Sie genau hinaus möchten - und weil sich der dafür am besten geeignete Code ein wenig unterscheidet, meine Frage oben.
by s261495 (180 points)
Genau, ich möchte die 5 Inhalte auf separaten Seiten anzeigen lassen und unter den Inhalten jeweils eine Frage anzeigen lassen.
by SoSci Survey (340k points)
Wenn Sie insgesamt nur 5 (oder wenig mehr) Texte verwenden, dann brauchen Sie die Daten der Fragen vermutlich im Kontext des jeweiligen Textes? Dann sollte immer derselbe Text mit derselben Frage gezeigt werden.

Diese spezielle Situation wäre am einfachsten lösbar, wenn Sie 5 Seiten erstellen und deren Abfolge einfach rotieren: https://www.soscisurvey.de/help/doku.php/de:create:rotation-pages

Wenn Sie hingegen deutlich mehr Texte haben und für jede Teilnehmer:in darauf 5 ziehen, sieht es anders aus. Dann verwenden Sie den Filter von oben. Auf Seite 1 immer mit dem Variablennamen ZU01x01, auf Seite 2 immer mit ZU01x02 u.s.w.

Das könnte man im Prinzip über 5 Filter auf 5 Seiten machen.

if (value('ZU01x01') == 1) {
  text('XX01');
} elseif (value('ZU01x01') == 2) {
  text('XX02');
} elseif (value('ZU01x01') == 3) {
  text('XX03');
} elseif (value('ZU01x01') == 4) {
  text('XX04');
} elseif (value('ZU01x01') == 5) {
  text('XX05');
}

Denken Sie aber daran, dass Sie in der Auswertung dann erstmal die Daten ins long-format umstrukturieren müssen.
by s261495 (180 points)
Vielen Dank für die Antwort!

Insgesamt werden es ca. 350 Texte sein, aus denen in jedem Interview zufällig fünf gezogen werden sollen.

Wenn ich die 5 Filter auf 5 verschiedenen Seiten anlege, werden aber nur die Texte XX01-XX05 gezogen, oder?
Müsste ich für die verbleibenden Texte dann jeweils noch separate Seiten anlegen? Und muss ich jeden der Texte mit allen 5 Variablen des Zufallsgenerators verknüpfen (also im Prinzip für jeden Text 5 Filter anlegen?)
by SoSci Survey (340k points)
> Wenn ich die 5 Filter auf 5 verschiedenen Seiten anlege, werden aber nur die Texte XX01-XX05 gezogen, oder?

Nein, aber wenn Sie eine große Anzahl Texte haben kommen Sie mit dem IF nicht weiter.

In dem Fall sollten die Kennungen der Texte im Zufallsgenerator liegen, und der Code wäre dann

$textID = value('ZU01x01', 'label');
text($textID);

Auf der zweiten Seiten dann entsprechend ZU01x02 u.s.w.
by s263687 (200 points)
Vielen Dank! Das hat funktioniert!

Könnte ich noch eine "follow-up" Frage stellen?

Und zwar sollen eigentlich immer zwei Informationen zu jeder Website auf zwei hintereinanderfolgenden Seiten angezeigt werden.

Die texte selbst, wie in den (dankenswerterweise jetzt funktionierenden) Kommentaren oben beschrieben auf der Seite 1 und dann eine zweite Information zur Webseite, auf der jeweils darauf folgenden Seite.

Gibt es eine Möglichkeit ausgehend von der Ziehung des Zufallsgenerators eine zweite Information auf der nächsten Seite ausgeben zu lassen? Bzw. was wäre hier denn das einfachste und effizienteste Vorgehen?

Vielen Dank für Ihre Hilfe!
by SoSci Survey (340k points)
Sie könnten z.B. zwei Kennungen pro Zeile in den Zufallsgenerator schreiben.

$textIDs = value('ZU01x01', 'csv');
text($textIDs[0]);

$textIDs = value('ZU01x01', 'csv');
text($textIDs[1]);
by s261495 (180 points)
Herzlichen Dank für die Antwort!

Leider verstehe ich noch nicht ganz, wie der Code funktioniert.
Wie genau muss ich die Texte ablegen, damit sie mit diesem Code angezeigt werden?
by SoSci Survey (340k points)
Die Texte würden Sie in einer Rubrik Ihrer Wahl über "Neuer Text" erstellen.
by s261495 (180 points)
Danke für die Antwort!

Das hatte ich versucht, aber dabei die Fehlermeldung "A parameter of the type NULL has been used for the function text() instead of a legal ID." erhalten.

Ich glaube ich verstehe noch nicht ganz, wofür das [0] bzw. [1] steht und wie die Texte entsprechend abgelegt werden müssen, damit sie mit dem PHP-Code angezeigt werden können.
by SoSci Survey (340k points)
Wenn Sie value() mit dem Parameter "csv" aufrufen, dass wird eine Komma-separierte Liste (z.B. AB01, AB02) in die einzelnen Elemente zerlegt. Das funktioniert also nur dann, wenn Sie in ZU01 laute Text-ID-Paare hinterlegt haben z.B.

1 = AB01, AB02
2 = AB03, AB04
3 = AB05, AB06

Mit den eckigen Klammern holen Sie sich dann eines der Elemente. Lesen SIe dazu bitte kurz: https://www.soscisurvey.de/help/doku.php/de:create:array
by s261495 (180 points)
Vielen vielen Dank für die Erklärung, jetzt funktioniert alles!

Ich wünsche Ihnen schöne Feiertage!

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

...