0 votes
in Methoden-Fragen by s050499 (110 points)

Hallo!

Ich möchte insgesamt 8 Szenarien darbieten. Diese sollen in randomisierter (rotierter) Reihenfolge erscheinen (also für jede VP in anderer Reihenfolge. Pro Seite erscheint ein Szenario (dabei werden außerdem noch auf der selben Seite hinter dem Szenario Fragen zum Szenario dargeboten).
Der weitere Plan ist jetzt, die jeweilige Reihenfolge der Szenarien mittels "interner Variable" und "put()" zu speichern, damit ich weiß, zu jeweils welchem Szenario die Fragen beantwortet wurden.
Ich habe also die Rotation schon mittels folgendem PHP-Befehl programmiert:

und scheitere nun an der Speicherung der Reihenfolge.

Was kann ich tun?
Vielen Dank schon im Voraus!

1 Answer

0 votes
by SoSci Survey (328k points)

In Ihrem Fall könnten Sie die Array-Defiitionen in der Liste weglassen und dann das [0] unten beim question(). Damit wird es schonmal einfacher - auch und nicht zuletzt das Speichern der Reihenfolge.

Dann müssten Sie sich entscheiden, ob Sie die Ränge der Fragen in der Auswertung benötigen oder die Fragen, die pro Seite erschienen sind.

Und dann liefert die Anleitung zu put() bei den Überschriten Randomisierung I und II Beispiel-Code für das Speichern der Reihenfolge. Weitere Details dann gerne wieder hier im Online-Support.

by s050499 (110 points)
Ich bin nicht sicher, ob ich das richtig verstehe.
Ich soll den ganzen Array und die null am Ende löschen?
Wenn ich die 0 lösche, erscheint eine Fehlermeldung. Und der Array definiert doch aber auch das $blocks, dass dann im weiteren Befehl geshuffelt wird, damit rotiert wird.
Und bei der Randomisierung II wird geschrieben, dass davon eher abgeraten wird, diese zu nutzen.
Ich teile durch die Rotierung auch keine Gruppen ein. Gruppen bestehen schon vorher. In jeder dieser Gruppen soll jede VP alle Szenarien (Textbausteine) lesen können. Allein die Reihenfolge dieser soll randomisiert werden; und da es im Anschluss an jedes Szenario Fragen zu diesem gibt, muss ich irgendwie speichern, welches der ( Szenarien dargeboten wurde.

Ich weiß nicht, was die "Ränge der Fragen" sind.
by SoSci Survey (328k points)
Da Sie den PHP-Code nur als Screenshot gepostet haben, kann ich leider nicht daraus kopieren. Ich meinte die 8x array() innerhalb (!) des Arrays $blocks.
by s050499 (110 points)
Entschuldigung, ja, das mit dem Einfügen des Befehls hat hier bei mir leider nicht so gut geklappt.Dann kopiere ich den Befehl jetzt einfach so rein:

if (!isset($blocks)) {
  $blocks = array(
    array('SZ01'),
    array('SZ02'),
    array('SZ03'),
    array('SZ04'),
    array('SZ05'),
    array('SZ06'),
    array('SZ07'),
    array('SZ08')
  );
 
  // Die Liste mischen
  shuffle($blocks);
  // Die Listen auf allen Seiten verfügbar machen
  registerVariable('blocks');
}
 
// Anzeige der Blöcke
$i = loopPage(count($blocks));

// Frage anzeigen
question($blocks[$i][0]);

Meinen Sie also komplett alle  array('SZ01') bis array('SZ08') löschen oder lediglich das Wort "array?"
Dann würden ja die Szenarien nicht mehr auftreten.
by SoSci Survey (328k points)
Ich meinte, dass Sie oben folgendes ändern:

if (!isset($blocks)) {
  $blocks = array(
    'SZ01',
    'SZ02',

Und unten dann

question($blocks[$i]);

Das vereinfacht die Struktur - und dann können Sie es mit den Codes aus der Anleitung zu put() versuchen.
by s050499 (110 points)
Ok.
Ich habe es jetzt mit dem Beispielcode aus Randomisierung I versucht, also:

for ($i=0; $i<count($elements); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV01', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $elements[$i]);
}

Mein ganzer Code sieht so aus:

if (!isset($blocks)) {
  $blocks = array(
    'SZ01',
    'SZ02',
    'SZ03',
    'SZ04',
    'SZ05',
    'SZ06',
    'SZ07',
    'SZ08'
  );
 
  // Die Liste mischen
  shuffle($blocks);
  // Die Listen auf allen Seiten verfügbar machen
  registerVariable('blocks');
}
 
// Anzeige der Blöcke
$i = loopPage(count($blocks));

// Frage anzeigen
question($blocks[$i]);

for ($i=0; $i<count($blocks); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV01', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $blocks[$i]);
}

Jetzt bleiben auf jeder neuen Seite, auf der ein neues Szenario angezeigt wird, die Antworten auf die Fragen der unmittelbar zuvor gezeigt Seite stehen.

Außerdem bekomme ich die folgende Fehlermeldung:
Sie versuchen gerade, mit put() ein Array (also mehrere Werte) abzuspeichern. put() speichert aber nur einzelne Texte und Zahlen.

Wäre es ansonsten auch möglich, an jedes Szenario (Text) die Fragen zu koppeln, sodass ich 8 Seiten hätte und deren Reihenfolge (Szenario+Fragen) randomisiert/ geshuffelt/ rotiert wird?
Falls ja, wie?

Tut mir Leid, ich verzweifle hier gerade ein bisschen.
by s050499 (110 points)
Ich habe es jetzt nochmal mit einer völlig anderen und deutlich einfacheren Variante versucht und es hat geklappt.
Ich habe jetzt einfach 8 Seiten erstellt (je Seite ein Szenario + zugehörigen Fragenblock) und deren Reihenfolge geshuffelt.

if (!isset($seiten)) {
$seiten = array('SZ1', 'SZ2', 'SZ3', 'SZ4', 'SZ5', 'SZ6', 'SZ7', 'SZ8');
shuffle($seiten);
$seiten[] = 'PX';

registerVariable($seiten);
}

setPageOrder($seiten);

Dies wirkt sich auch super auf die erhobenen Daten in der Auswertung aus, da die Frageblöcke von 1 bis 8 geordnet sind.

Trotzdem vielen Dank für die Hilfe! :)
by SoSci Survey (328k points)
Die Ordnung der Daten wäre auch im obigen Fall erhalten geblieben - sonst wäre das mit dem Rotieren ja chaotisch ;) Aber wenn Sie mit der aktuellen Lösung zufrieden sind und die Reihenfolge gar nicht mehr benötigen, dann belassen wir es gerne dabei.

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

...