0 votes
in SoSci Survey (dt.) by s049805 (670 points)

Hallo!

Ich habe in einem Fragebogen, weil ich ein Item pro Seite anzeigenlassen will, auf mehreren Seiten mit der if (!isset Funktion gearbeitet. Jetzt spinnt natürlich der Fortschrittsbalken.

Über Php Händisch anzupassen geht aber in dem Fall nur Seitenweise bzw. ganz ausblenden.

Gibt es eine Lösung, die ich nicht kenne oder eine Möglichkeit wie man z.B. bei den Items innerhalb einer if (!isset Funktion mit Randomisierung einen Art Zähler einbaut - also nicht Fortschrittsbalken sondern z.B. vor jedem Item:
1/60
2/60
etc.
Nachdem die Items ja randomisiert dargestellt werden, bin ich recht Ideenlos.

Danke!

1 Answer

0 votes
by SoSci Survey (328k points)

Posten Sie gerne Ihren PHP-Code, dann kann ich genauer einordnen, was Sie machen.

Beim Fortschrittsbalken ist es so, dass SoSci Survey recht gut mit loopPage() und setPageOrder() umgehen kann - da ist frühzeitig bekannt, welche Seiten (wie oft) angezeigt werden.

Ansonsten berechnet SoSci Survey immer, wie viele Seite (nach aktuellem Kenntnisstand) noch kommen und wo der Fortschrittsbalken aktuell steht. Es sollte also zumindest gewährleistet sein, dass der Balken immer vorwärts schreitet. Nur kann bei wilden Sprügen und späten Loops die Schrittweite variieren.

Eine manuelle Einflussnahme ist mittels option('progress', ...) möglich. Wenn man also schon weiß, dass später noch viele Seiten kommen, dann kann man mittels option() dafür sorgen, dass der Balken vorne langsamer voranschreitet.

by s049805 (670 points)
if (!isset($itemBlocksMLQ)) {
  $questions = ['ML02'];
  // Liste mit allen Items erstellen
  $itemsMLQ = [
  ['ML02', 1],
  ['ML02', 2],
  ['ML02', 3],
  ['ML02', 4],
  ['ML02', 5],
  ['ML02', 6],
  ['ML02', 7],
  ['ML02', 8],
  ['ML02', 9],
  ['ML02', 10],
  ['ML02', 11],
  ['ML02', 12],
  ['ML02', 13],
  ['ML02', 14],
  ['ML02', 15],
  ['ML02', 16],
  ['ML02', 17],
  ['ML02', 18],
  ['ML02', 19],
  ['ML02', 20],
  ['ML02', 21],
  ['ML02', 22],
  ['ML02', 23],
  ['ML02', 24],
  ['ML02', 25],
  ['ML02', 26],
  ['ML02', 27],
  ['ML02', 28],
  ['ML02', 29],
  ['ML02', 30],
  ['ML02', 31],
  ['ML02', 32],
  ['ML02', 33],
  ['ML02', 34],
  ['ML02', 35],
  ['ML02', 36],
  ['ML02', 37],
  ['ML02', 38],
  ['ML02', 39],
  ['ML02', 40],
  ['ML02', 41],
  ['ML02', 42],
  ['ML02', 43],
  ['ML02', 44],
  ['ML02', 45],
  ['ML02', 46],
  ['ML02', 47],
  ['ML02', 48],
  ['ML02', 49],
  ['ML02', 50],
  ['ML02', 51],
  ['ML02', 52],
  ['ML02', 53],
  ['ML02', 54],
  ['ML02', 55],
  ['ML02', 56],
  ['ML02', 57],
  ['ML02', 58],
  ['ML02', 59],
  ['ML02', 60]
];

  // Liste mischen
  shuffle($itemsMLQ);

  // Liste aufteilen
  $itemBlocksMLQ = array_chunk($itemsMLQ, 1);
  registerVariable($itemBlocksMLQ);
}
// Auf mehreren Seiten präsentieren
$i = loopPage(count($itemBlocksMLQ));

// Fragetext anzeigen
question('ML02', 'spacing=0', 'show-items=no');
 
// Items anzeigen
$itemsMLQ = $itemBlocksMLQ[$i];
foreach ($itemsMLQ as $n => $itemMLQ) {
  if ($n == 0) {
    question($itemMLQ[0], [$itemMLQ[1]], 'spacing=0', 'show-title=no', 'show-explanation=no', 'shading=all-unshaded');
  } elseif ($n % 2 == 0) {
    question($itemMLQ[0], [$itemMLQ[1]], 'spacing=0', 'show-title=no', 'show-explanation=no', 'shading=all-unshaded', 'anchor=none');
  } else {
    question($itemMLQ[0], [$itemMLQ[1]], 'spacing=0', 'show-title=no', 'show-explanation=no', 'shading=all-shaded', 'anchor=none');
  }
}


Beispielsweise - nur dann kommt eine "normale Seite" und dann wieder so eine Seite.
Der Fortschrittsbalken geht bei dem ersten Bereich so weiter, als wären alle folgenden Seiten normal. Sprich er geht dann ganz schnell bis auf 90% hoch, es kommt aber nochmal so viel.
by SoSci Survey (328k points)
Ich zähle auf dieser exemplarischen Seite 50 Wiederholungen. Aus Ihrer Antwort entnehme ist, dass es mehrere derartige Seiten gibt.

Ich empfehle hier eine manuelle Anpassung mittels option(). Wenn es z.B. 2 solche Blöcke und 10 zusätzliche Einzelseiten gibt, wären das 110 Seiten (bitte beachten Sie, dass das für die Konzentration der Befragten bereits eine sehr hohe Herausforderung ist), also 100/110 Prozent pro Seite.

Wenn diese 50er-Seite dann auf Seite 3 kommt, würden Sie

Auf Seite 1 und 2 mittels option() jeweils für den Fortschritt bis 2% sorgen:

option('progress', 1);
und
option('progress', 2);

Und dann in der o.g. Schleife den Fortschritt mitzählen:

$i = loopPage(count($itemBlocksMLQ));
option('progress', 3 + $i / 110 * 100);

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

...