Übersetzungen dieser Seite:
 

Dies ist eine alte Version des Dokuments!


Items rotieren

Dieses Kapitel beschreibt, wie man die einzelnen Items in einer Frage in einer zufälligen Reihenfolge präsentieren kann. Dabei gibt es verschiedene Möglichkeiten der Umsetzung, die in diesem Kapitel erklärt werden.

Rotation in einer Frage

Die Randomisierung oder Rotation von Items in einer Frage wird wie folgt aktiviert:

  • Öffnen Sie die Frage im Fragenkatalog
  • Im Abschnitt Auswahloptionen bzw. Items wählen Sie den Karteireiter Einstellungen.
  • Bei der Einstellung Reihenfolge wählen Sie die Option „Zufällig rotieren/mischen“.
  • Speichern Sie die Frage, in der Vorschau können Sie anschließend die Randomisierung prüfen.

Falls einzelne Items (z.B. ein „Sonstiges“ mit Texteingabe) von der Rotation ausgenommen werden sollen, öffnen Sie dieses Item im Fragenkatalog oder mit dem Bearbeiten-Symbol und aktiviert die Option Dieses Item beim Mischen der Items ausnehmen.

Hinweis: Die Rotation betrifft natürlich nur die Darstellung im Fragebogen. Die Antworten des Befragten auf ein bestimmtes Item werden immer unter derselben Kennung gespeichert.

Hinweis: In welcher Reihenfolge die Items im Fragebogen angezeigt werden, wird nicht im Datensatz abgespeichert. Falls Sie diese Information benötigen, rotieren Sie die Items mittels PHP-Code (s. unten).

Manuelle Rotation von Items oder Optionen

Sie können die Items bzw. Optionen einer Frage auch mittels PHP-Code rotieren. Dazu wird zunächst mittels getItems() eine Liste der Items/Optionen abgerufen, dann per shuffle() gemischt und schließlich wird die Frage mittels question() mit der gewünschten Item-Abfolge als Parameter angezeigt.

$items = getItems('AB01', 'all');
shuffle($items);
question('AB01', $items);

Dieses Vorgehen bietet die Möglichkeit, die angezeigte Reihenfolge im Datensatz abzuspeichern. Dies erfolgt mithilfe interner Variablen und dem Befehl put().

Beachten Sie allerdings, dass sich hier (anders als bei der Rotation per Knopfdruck) die Reihenfolge ändert, sobald der Teilnehmer die Seite neu lädt oder den Zurück-Knopf im Fragebogen verwendet. Verwenden Sie registerVarible() und isset(), um dies zu verhindern. So wird die Zufallsabfolge nur beim ersten Laden der Seite gewürfelt – beim nächsten laden ist die Variable $itemsAB bereits gesetzt (isset() steht für „is set“) und der Teil wird übersprungen.

if (!isset($itemsAB)) {
  $itemsAB = getItems('AB01', 'all');
  shuffle($itemsAB);
  registerVariable($itemsAB);
}
question('AB01', $itemsAB);

Hinweis: Nachdem eine mittels registerVariable() gespeicherte Variable auf allen Seiten des Fragebogens verfügbar ist, können Sie denselben PHP-Code nicht verwenden, um die Items einer anderen Frage zu rotieren. Denn die Variable ist ja bereits gesetzt. Verwenden Sie für die andere Frage einfach einen anderen Variablen-Namen (z.B. $itemsCD).

Parallele Rotation von Items in zwei Fragen

Mit der manuellen Rotation (s. oben) können Sie in zwei oder mehr Fragen dieselbe rotierte Item-Abfolge verwenden. Falls die Fragen auf unterschiedlichen Seiten stehen, verwenden Sie auch hierfür registerVariable() – genau wie im Beispiel oben – um die Abfolge für weitere PHP-Code-Elemente verfügbar zu machen.

if (!isset($itemsAB)) {
  $itemsAB = getItems('AB01', 'all');
  shuffle($itemsAB);
  registerVariable($itemsAB);
}
question('AB01', $itemsAB);

Auf derselben oder späteren Seiten kann die Reihenfolge, wie sie in $itemsAB gespeichert ist, einfach für andere Fragen verwendet werden.

question('AB02', $itemsAB);

Rotation von Items über mehrere Seiten

Falls Sie in einer Frage sehr viele Items haben, möchten Sie diese vielleicht auf mehrere Seiten verteilen. Normalerweise würden Sie das erledigen, indem Sie die Frage beim Fragebogen zusammenstellen mehrfach einfügen und jeweils bei den Anzeige-Einstellungen (Anzeige-Einstellungen-Knopf) unterschiedliche Items angeben, z.B. „1-10“, „11-20“, etc.

Falls Sie die Verteilung der Items mit einer Randomisierung kombinieren möchten, benötigen Sie ein paar Zeilen PHP-Code.

// Das isset() vermeidet, dass die Rotation etwa wg. fehlenden Antworten verändert wird
if (!isset($itemsAB01)) {
  // Alle Items der Frage AB01 auflisten
  $itemsAB01 = getItems('AB01', 'all');
  // Liste Mischen
  shuffle($itemsAB01);
  // Die Liste in Teillisten à 20 Items teilen
  $itemsAB01 = array_chunk($itemsAB01, 20);
  // Die Variable für andere Seiten verfügbar machen
  registerVariable($itemsAB01);
}
 
// Die Items über mehrere Seiten verteilt anzeigen
$i = loopPage(count($itemsAB01));
question('AB01', $itemsAB01[$i]);

Mit der Funktion loopPage() kann man innerhalb einer Fragebogen-Seite mehrere unterschiedliche Seiten anzeigen. Alternativ zu den letzten beiden Zeilen kann man die benötigte Anzahl an Seiten im Fragebogen einfügen und jeweils den entsprechenden Item-Bereich anzeigen:

// Erste Seite
question('AB01', $itemsAB01[0]);
 
// Zweite Seite
question('AB01', $itemsAB01[1]);
 
// Dritte Seite
question('AB01', $itemsAB01[2]);

Beachten Sie bitte, dass sich auf den Seiten nur noch der Index in eckigen Klammern ändert. Der Index beginnt bei 0, nicht bei 1 (s. Beispiel oben).

Wichtig: Wenn man beim Fragebogen zusammenstellen direkt eine Seite mit Items startet, dann erhält man die Fehlermeldung, die Variable $itemsAB01 sei unbekannt. Man muss zum Testen jeweils ab der Seite starten, wo die Randomisierung beginnt und damit die Variable $itemsAB01 definiert wird.

de/create/rotation-items.1612431045.txt.gz · Zuletzt geändert: von sophia.schauer
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki