0 votes
in SoSci Survey (dt.) by s136815 (550 points)

Hallo zusammen,
ich habe einen Fragebogen mit Filterfragen erstellt, der die Befragten letzendlich in vier Gruppen aufteilt, die alle unterschiedliche Fragebogenlängen (unterschiedliche Anzahl an Fragen) zu bearbeiten haben. Aktuell wird die gesamte Länge des Fragebogens, also die Summe aller Fragen, als Basis für die Berechnung und Darstellung der Fortschrittsanzeige genutzt. Wie kann die Fortschrittsanzeige an die tatsächliche Länge des gewählten Zweigs des Fragebogens (also nach der entscheidenden Filterfrage) angepasst werden?
Bis zur entscheidenden Filterfrage (steht auf Seite 9 des Fragebogens) könnte idealerweise der längste Zweig des Fragebogens als Basis für die Fortschrittsanzeige genutzt werden, und danach eben die Fragebogenlänge des gewählten Fragebogenzweigs.
Vielen Dank im Voraus.
Viele Grüße

1 Answer

0 votes
by SoSci Survey (302k points)
selected by s136815
 
Best answer

Es gibt unterschiedliche Möglichkeiten...

  • Wenn Sie nur Fragen auf einzelnen Seiten austauschen und dort jeweils mittels IF die passende(n) Frage(n) anzeigen, haben Sie das Problem der Seiten-Inflation überhaupt nicht.
  • Wenn Sie die Filterführung über setPageOrder() erledigen, dann weiß SoSci Survey rechtzeitig Bescheid, welche Seiten kommen und passt den Fortschrittsbalken an.
  • Wenn gar nichts hilft, können Sie mittels option('progress', ...); den angezeigten Fortschritt für jede Seite einzeln festlegen.
by SoSci Survey (302k points)
>  D.h. die Weiterleitung auf die Seite 'PE' nach Abschluss eines Fragebogenblocks erfolgt leider nicht, so wie es im PHP-Code auf der Seite 10 definiert ist.

Das ist schlecht. Ich vermute, dass Sie irgendwo innerhalb des Blocks noch einen der Befehle setNextPage(), setPageOrder(), loopPage() oder loopToPage() verwenden. Könnte dies sein? Diese Befehle brechen eine vorher mittels setPageOrder() definierte Seitenabfolge außer Kraft.
by s136815 (550 points)
Dem ist leider so. Ich habe folgende PHP-Codes mit loopPage() in den Blöcken stehen:
Auf Seite 16, Kennung MI12:
if (!isset($itemsMI12)) {
  $itemsMI12 = getItems('MI12', 'all');
  shuffle($itemsMI12);
  $itemsMI12 = array_chunk($itemsMI12, 8);
  registerVariable($itemsMI12);
}

$i = loopPage(count($itemsMI12));
{
  question('MI12', $itemsMI12[$i]);
}

Auf Seite 28 mit Kennung MI36:
if (!isset($itemsMI36)) {
  $itemsMI36 = getItems('MI36', 'all');
  shuffle($itemsMI36);
  $itemsMI36 = array_chunk($itemsMI36, 8);
  registerVariable($itemsMI36);
}

$i = loopPage(count($itemsMI36));
if ($i == count($itemsMI36) - 1) {
  question('MI36', $itemsMI36[$i], 'spacing=4');
  question('MI37');  // Das offene Eingabefeld
} else {
  question('MI36', $itemsMI36[$i]);
}

Und auf Seite 42 mit der Kennung MI70:
if (!isset($itemsMI70)) {
$itemsMI70 = getItems('MI70', 'all');
shuffle($itemsMI70);

$itemsMI70 = array_chunk($itemsMI70, 6);
registerVariable($itemsMI70);
}
$i = loopPage(count($itemsMI70));
question('MI70', $itemsMI70[$i]);

Gibt es für diese Funktionen Alternativen ohne loopPage()?
Oder sollte ich goToPage('PE') wieder ans Ende jedes Fragebogenblocks setzen? Dann würde der Fragebogen wenigstens vom Ablauf her funktionieren, allerdings wohl weiter auf Kosten einer korrekten Fortschrittsbalkenanzeige.
Viele Grüße und im Voraus vielen Dank für Ihre Bemühungen.
by s136815 (550 points)
Habe gerade noch einmal alle Varianten der Frage SD20 auf Seite 9 durchprobiert und auch die vier Fragebogenblöcke noch einmal überprüft.
"Block1": MI02 (Seite 11) bis ME58 (Seite 78)
"Block2": NI02 (Seite 79) bis NM53 (Seite 129)
"Block3": NO02 (Seite 130) bis NN62 (Seite 177)
"Block4": OH02 (Seite 178) bis ON16 (Seite 194)
PE auf Seite 195
end

Die zuvor genannten PHP-Codes mit loopPage()-Befehlen kommen mit der jeweiligen Kennung exakt so in den Blöcken 1, 2 und 3 vor.
Komischerweise funktioniert die Weiterleitung zu Seite PE für Block 3 einwandfrei und auch der Fortschrittsbalken wird korrekt angezeigt.
Da muss es noch einen anderen Unterschied geben.?
Die anderen von Ihnen genannten Befehle habe ich nicht verwendet.
Viele Grüße
by SoSci Survey (302k points)
loopPage() und setPageOrder() sind definitiv nicht kompatibel. Prinzipiell könnten Sie den Loop gleich in der Seitenabfolge vorsehen und mit loopIndex() arbeiten, aber das würde in Ihrem Fall m.E. ziemlich kompliziert und fehleranfällig.

Daher wäre meine Empfehlung folgende: Verwenden Sie auf der/den Seite/n nach dem loopPage() erneut ein setPageOrder(), wo Sie definieren, welche Seiten noch angezeigt werden sollen. Dies sollte für einen korrekten Verlauf und Fortschrittsbalken sorgen.

Innerhalb des loopPage() müssten Sie m.E. mittels option('progress', ...) den Fortschrittsbalken manuell setzen. Denn innerhalb der Seitenabfolge "weiß" SoSci Survey nicht, dass weiter hinten ein großer Teil Fragen übersprungen wird.

Natürlich könnten Sie auch darüber nachdenken, angesichts der großen Anzahl von Seiten entweder mit Filtern innerhalb der Seiten zu arbeiten (sodass Sie nur ein Set an Seiten haben, die aber je nach Gruppe etwas unterschiedliches anzeigen) oder sogar mit separaten Fragebögen und goToQuestionnaire() zu arbeiten, was allerdings Auswirkungen auf die Datenstruktur (min. 2 Datensätze pro Teilnehmer) hätte.
by s136815 (550 points)
Hallo zusammen,
habe Ihre Empfehlung umgesetzt, nach einer Seite mit einem loopPage() erneut ein setPageOrder() einzufügen. Der Fortschrittsbalken funktioniert jetzt hinreichend genau und der Verlauf problemlos.
Vielen Dank für den hervorragenden Support.
Viele Grüße

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

...