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

0 votes

Beim looping über eine Seite mit loopToPage() (aber auch mit manuellem Loop mittels setNextPage() und einer if-Bedingung zum Hochzählen der Durchgänge) zeigt repeatPage() die angegebene Fehlermeldung nur beim ersten Durchgang an, in dem mehrmals die Fehlermeldung durch Flascheingabe provoziert wird. Ab dem zweiten Durchgang wird die vorherige Seite beim zweiten mal Falscheingabe zwar ordnungsgemäß wiederholt, allerdings die zugehörige Fehlermeldung nicht mehr angezeigt. Die Teilnehmenden werden also bei weiteren Durchgängen nicht mehr informiert, was genau sie falsch gemacht haben.

in SoSci Survey (dt.) by s143266 (465 points)
Auf welcher Seite des Loops sind denn die Frage und das repeatPage() ?

Ist auf der Seite mit repeatPage() noch anderer Inhalt oder nur PHP-Code für die Fehlerprüfung/-meldung?

Als Workaround könnten Sie einmal versuchen, die Fehlermeldung nicht über repeatPage() einzublenden, sondern einfach einen Text (der als Warnung formatiert ist) mittels text() einzublenden, direkt vor dem repeatPage().
Die Frage ist auf der ersten Seite des Loops; repeatPage() auf der zweiten.

repeatPage() steht am Anfang der zweiten Seite. Danach folgt aber noch weiterer PHP-Code.

Der vorgeschlagene Workaround funktioniert leider auch nicht und erzeugt genau den selben Fehler.
Gibt es noch eine dritte Seite?

Und was zeigt denn die Debug-Information - und zwar bei der ersten und bei der zweiten Wiederholung?
Mit manuellen Loops folgt eine dritte Seite, auf der ich auf die erste Seite zurück schicke, wenn noch nicht alle Durchgänge durchlaufen wurden. Mit der Lösung mittels loopToPage() fällt diese natürlich weg. In beiden Fällen tritt das Problem gleichermaßen auf.

Mit manuellem Loop lautet die Debug-Information nach der ersten Wiederholung "[Information] Repeating the previous page", die bei der zweiten Wiederholung durch "[Information] According to the previously set page order, page 5 [Est1] is shown" ersetzt wird. Was mir vorher nicht aufgefallen ist: Ab der dritten (und jeder weiteren) Wiederholung steht dort wieder "[Information] Repeating the previous page" und die Fehlermeldung wird korrekt angezeigt. Somit tritt der beschriebene Fehler ausschließlich bei der zweiten Wiederholung auf.
Ich konnte das Problem lösen, indem ich im manuellen Loop auf der dritten Seite setNextPage() durch goToPage() ersetzt habe. Im Loop mittels loopToPage() bleibt das Problem allerdings bestehen (vermutlich wegen interner Verwendung von setNextPage()?).
> Mit manuellen Loops folgt eine dritte Seite, auf der ich auf die erste Seite zurück schicke, wenn noch nicht alle Durchgänge durchlaufen wurden.

Da setNextPage() erst nach dem Klick auf "Weiter" ausgeführt wird, ist die Extra-Seite, die selbst keinen Inhalt zeigt, womöglich die Ursache des Problems gewesen.

Aber wenn ich Sie korrekt verstehe, hatten sie beim loopToPage() zwei Seiten, auf der ersten die Frage, um die es geht, auf der zweiten das repeatPage() ... und was noch? Wurde da noch anderer Inhalt gezeigt?
Genau, mit loopToPage() waren es nur zwei Seiten, wobei ich den Inhalt auf der zweiten Seite (eine Folgefrage) beim Entstehen des Bugs mit goToPage('next') übersprungen habe. Also auch hier vermutlich das Problem, dass die zweite Seite dann faktisch leer war?!

1 Answer

0 votes
 
Best answer

Also auch hier vermutlich das Problem, dass die zweite Seite dann faktisch leer war?!

Ich muss das nochmal im Detail überprüfen, aber leere Seiten innerhalb von loopToPage() haben in der Vergangenheit immer wieder Ärger verursacht. Das hängt damit zusammen, dass leere Seiten und goToPage() die Anzahl der tatsächlich gezeigten Seiten gegenüber der ursprünglichen "Planung" verschieben.

Da ist zwar eine optimierte Architektur in Entwicklung, aber bis diese einsatzbereit ist, wird es noch eine (längere) Weile dauern. Aber zumindest das mit der fehlenden Fehlermeldung versuche ich derweilen noch zu replizieren und zu beheben.

by SoSci Survey (252k points)
selected by s143266
Erste Tests grenzen das Problem ein: Es tritt erst ab der zweiten Wiederholung des loopToPage() auf - und auch nur dann, wenn im ersten Durchlauf eine Seite übersprungen wurde, weil sie keinen Inhalt anzeigt. Es scheint sich demnach um das Problem mit leeren Seiten in Loops zu handeln, welches eine Lösung "tiefer" im Programm erfordert.

Die Fehlermeldung wird deshalb nicht angezeigt, weil SoSci Survey der Meinung ist, dass die Seite mit der Frage gezeigt werden soll und gar nicht die Seite mit dem PHP-Code, welcher repeatPage() aufrufen würde.
...