0 votes
in SoSci Survey (dt.) by s079546 (130 points)

Hallo, ich möchte in meinem Fragebogen zwei Fortschrittsbalken erstellen.

Einmal den normalen über den gesamten Fragebogen hinweg (der funktioniert auch problemlos) und dann für einen bestimmten Teil einen zweiten Balken darunter. Dieser kann gerne auch anders aussehen, also in Form eines Kreises der immer voller wird oder einfach als Zahlen (z.B. 1/20, 2/20, 3/20...).

Da die entsprechenden 20 Seiten bei mir rotieren kann ich leider nicht einfach einen Text auf jede Seite einfügen und dort 'mitzählen'. Dennoch habe ich in einem Pre-Test herausgefunden, dass es wichtig ist die Teilnehmern in diesem Teil zu informieren, wie viel sie davon schon geschafft haben.

Vielen Dank schon mal und viele Grüße.

by SoSci Survey (325k points)
> Da die entsprechenden 20 Seiten bei mir rotieren kann ich leider nicht einfach einen Text auf jede Seite einfügen und dort 'mitzählen'.

Vielleicht könnten Sie den PHP-Code in Ihrer Frage ergänzen, den Sie zum Rotieren verwenden? Wenn Sie setPageOrder() verwenden, dann liefert loopIndex() seit kurzem die Position innerhalb der Seitenabfolge.
by s079546 (130 points)
Danke schön für die Antwort!

Wo und wie muss ich dann loopIndex() einfügen? Ich habe leider gar keine Ahnung von PHP-Codes. Zum rotieren verwende ich folgenden Code:

if (!isset($seiten)) {
  // Liste der Seiten definieren
  $seiten = array('CA01','CA02','CA03','CA04','CA05',
'CA06','CA07','CA08','CA09','CA10','CA11','CA12','CA13','CA14','CA15',
'CA16','CA17','CA18','CA19','CA20');
  // Liste mischen
  shuffle($seiten);
  // Die Seite ergänzen, wo es nachher weiter geht
  $seiten[] = 'KA1';
  // Reihenfolge zwischenspeichern, um spätere Änderung zu vermeiden
  registerVariable($seiten);
}
setPageOrder($seiten);

1 Answer

+1 vote
by SoSci Survey (325k points)
selected by s079546
 
Best answer

Wo und wie muss ich dann loopIndex() einfügen?

Innerhalb einer Seitenabfolge liefert Ihnen loopIndex() die Position innerhalb der Abfolge. Den prozentualen Fortschritt würden Sie dann wie folgt bekommen:

$percent = round(loopIndex() / 20 * 100);
html('<p>Fortschritt in diesem Block: '.$percent.'%</p>');
replace('%percent%', $percent);

Und den HTML-Code für einen Fortschrittsbalken können Sie ja dem Standard-Balken entnehmen:

<div style="width: 30%; margin: 0 auto 1em auto">
  <div class="progressbar">
    <div id="s2progressIndicator" class="progress" style="width: %percent%%">&nbsp;</div>
    <div id="s2progressLabel" class="progresstext">%percent%% ausgefüllt</div>
  </div>
</div>
by s079546 (130 points)
Jetzt bekomme ich leider diese Warnung:
"Die Funktion loopIndex() funktioniert nur, wenn Sie zusammen mit loopToPage() verwendet wird."
Und die Funktion loopToPage() kann nicht parallel mit setPageOrder() verwendet werden, oder? Muss ich dann eine neue Seite dafür einfügen und iregendwie loopToPage nutzen?

Einen zweiten Balken mit 0% habe ich aber schon mal :D
by s079546 (130 points)
durch hinzufügen von:
 
loopToPage('CA20', 20);

auf jeder Seite habe ich jetzt keine Fehlermeldung mehr und einen Balken auf jeder Seite. Aber leider bleibt dieser bei 0%. Was muss ich ändern, damit sich die %-Zahl auch anpasst?
by SoSci Survey (325k points)
Nein, loopToPage() benötigen Sie in Ihrem Fall nicht - im Gegenteil bringt das Ihren kompletten Code durcheinander. Wieder raus damit! :)

> "Die Funktion loopIndex() funktioniert nur, wenn Sie zusammen mit loopToPage() verwendet wird."

Auf welchem Server arbeiten Sie denn? Auf www.soscisurvey.de dürfte diese Meldung nicht erscheinen, zumindest nicht, wenn Sie das loopIndex() unterhalb (!) von setPageOrder() verwenden oder auf einer der Folgeseiten.

Bitte posten Sie doch einmal die Debug-Information der betroffenen Seite.
by s079546 (130 points)
Oh, okay! Hatte auch schon festgestellt, dass jetzt nicht mehr alles funktioniert! loopToPage() ist wieder raus!

Unten in der Ecke steht bei mir:
Server: soscisurvey.de
Programm-Version 3.1.06-i

Ich habe einfach genau den Code von Ihnen kopiert und einmal direkt unterhalb des Codes zu der Rotation mit setPageOrder() und einmal unterhalb in einem separaten Feld eingefügt. Beides führt zu der gleichen Fehlermeldung. Wenn ich den Code auf einer Folgeseite einfüge bekomme ich zwar einen Balken, aber der bleibt die ganze Zeit bei 0%...
by SoSci Survey (325k points)
Wie gesagt: Bitte posten Sie einmal die Debug-Information der Seite mit dem setPageOrder() und der ersten Seite, wo der Balken erscheinen sollte: https://www.soscisurvey.de/help/doku.php/de:create:debugging
by s079546 (130 points)
Vielen Dank für Ihre Antworten und Mühen!

Ich habe den Fehler nun gefunden: Die Seite mit dem Code zum Rotieren war eine ansonsten leere Seite vor den zu rotierenden Seiten. Diese wurde im Fragebogen natürlich übersprungen. Jetzt habe ich den Code einfach auf eine Seite davor verschoben, die nun völlig leere Seite gelöscht - und es kommt kein Fehler mehr!  

Danke nochmal und 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

...