0 votes
in SoSci Survey (dt.) by s219074 (140 points)
edited by s219074

Auf Wunsch als separate Frage:

Bei mir scheint getItems() Zufallsgenerator-Fragen oder Textbausteine nicht als ein für looppage() brauchbares Array auszugeben.

Könnte es daran liegen, dass getItems() diese irgendwie nicht als mehrere Werte erkennt?

Rubrik Zufallsgeneratorvariable RG enthält bei mir 1 Frage mit der Kennung RG01. In dieser befinden sich im Feld "Zettel (Inhalte)" bisher nur 5 Zeilen:
1 = film001
2 = film002
3 = film003
4 = film004
5 = film005
Bei Ziehung steht "1 Zettel" und "Gleichverteilte Ziehung".
Bei "Inhalte" ist kein HTML-Code eingetragen.

Bei...

$filme = getItems('RG01');
$film = loopPage($filme);

...ist die Debug-Ausgabe immer folgende:

[Warnung] loopPage(-, -) wird ignoriert

An einen Unter-Fragebogen wird jedesmal der Wert 0 ausgegeben.

Ausprobiert habe ich:
- Zahl der Ziehungen erhöht
- $filme = getItems('RG01', 'label');
- $filme = getItems('RG01', 'all');
- $filme = getItems('RG01', 'html');

Da für mein Projekt Datenmengen anfallen, die Textbausteine nötig machen, habe ich auch folgendes versucht:

Textbaustein: Fragekennung 'TB01', gleicher Inhalt wie in RG01

  • $filme = getTextElement('TB01');
  • $filme = getTextElement('TB01', 'html');

...wieder wird looppage() ignoriert.

Was wiederum funktioniert, sind getQuestions('RG' oder 'TB') und getVariables ('RG01', 'RG02')
Hier gibt looppage() mir aber nur die Kennungen aus, was mir wenig hilft.
Auch mit getItems() oder getTextElement() darunter wirds nichts.

Hat jemand eine Idee, wo mein Fehler liegten könnte?

1 Answer

+1 vote
by SoSci Survey (328k points)
edited by SoSci Survey

Bei Ziehung steht "1 Zettel" und "Gleichverteilte Ziehung".

Sie möchten, wenn ich es korrekt verstanden habe, nicht 1 Zettel ziehen, sondern sehr viele. Tragen Sie hier z.B. einmal 5 ein, damit alle 5 Zettel in zufälliger Reihenfolge gezogen werden. Oder 3, wenn Sie exemplarisch 3 Filme ziehen möchten.

$filme = getItems('RG01');

Ersetzen Sie das bitte durch

$filme = valueList('RG01', NULL, 'label');

Ergänzen Sie unter dieser Zeile ein debug(), um zu sehen, was Sie haben.

debug($filme);

$film = loopPage($filme);

Für den Fall, dass loopPage() dann immer noch nicht richtig mag, ergänzen Sie noch ein array_values(), welches die Array-Schlüssel entfernt.

$film = loopPage(array_values($filme));

Und passend zum gezogenen Film könnte man dann z.B. einen Textbaustein anzeigen.

text($film);
by SoSci Survey (328k points)
Der Zufallsgenerator greift nur auf die Codes zu, also im Prinzip das, was Sie schon haben...

1 = TB01
2 = TB02
3 = TB03
...

> Im Befragungsprojekt existiert kein Text mit der Kennung 1

Welcher PHP-Code genau erzeugt denn diese Meldung?

Haben sie mit debug() mal nachgesehen, was in den Variablen jeweils gespeichert ist, also z.B. ein debug($filme)?
by s219074 (140 points)
>  Welcher PHP-Code genau erzeugt denn diese Meldung?

$filme = value('RG01x01');
text($filme);

  >  Haben sie mit debug() mal nachgesehen, was in den Variablen jeweils gespeichert ist, also z.B. ein debug($filme)?

Debug-Information für $filme:
$filme = 2 (string)

Aber das Problem ist ja an sich obsolet, wenn ich ohnehin mit valueList() arbeiten muss.

  >  Es ist wie bei den Filmnamen ... Sie müssen im PHP-Code das 'label' auslesen, nicht den Code.
$filme = valueList('RG01', NULL, 'label');
$textID = loopPage($filme);
text($textID);

Klappt! Da gibt er mir mit text() bei jedem loop einen andere Text aus!

Bleibt dennoch das Problem, dass er mir mit text() den Text im sub-Fragebogen anzeigt... obwohl er nur im Platzhalter sein soll.
Wie kombiniere ich den Text in den Textbausteinen mit der ausgebenen Kennung 'TB0x', ohne text() zu benutzen?
by s219074 (140 points)
Okay, ich glaube ich habe es mit...
$filmcode = getTextElement($film);
...geschafft.

Er gibt mir den HTML-Codes sauber zufällig in den Platzhalter über die Fragen.

put('IV01_01', $film); baut mir schön eine Variable mit der dazugehörigen Textbaustein-Kennung.

Ich scheine kein registerVariable() zu brauchen.

Durch die Textbausteine sollte die Speicherkapazität vom Zufallsgenerator locker ausreichen.

Korrekt? Oder habe ich Ihrer Meinung nach noch etwas übersehen?
by SoSci Survey (328k points)
Ich würde den HTML-Code direkt ausgeben lassen mittels text($film), aber Sie können im Prinzip auch den Umweg über getTextelement() gehen. Ansonsten: Prüfen Sie nochmal, ob Sie mit den erhobenen Daten korrekt arbeiten können - wenn das gut aussieht, dann sollte alles passen.
by s219074 (140 points)
Danke.

Stimmt! Das getTextElements() war nur um den Textbaustein nicht anzuzeigen, sondern durch den Platzhalter einzufügen.
Aber hab gerade gerafft, dass ich mir den Platzhalter ja gänzlich schenken kann, wenn der ganze Code hineinpasst.
i
Mit Platzhalter meckert er ohnehin über eine 2kb Grenze, ohne geht es sauber!

Wieso komplex, wenn es auch einfach geht.. :D

Danke für den Hinweis, ich prüfe!

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

...