Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision |
de:create:debugging [26.06.2017 13:09] – [Filterfragen] admin | de:create:debugging [21.02.2020 18:07] – [Beispiel] peter.vollmer |
---|
===== Fehlersuche im PHP-Code ===== | ===== Fehlersuche im PHP-Code ===== |
| |
Starten Sie den Fragebogen im Debug-Modus, indem Sie bei **Fragebogen zusammenstellen** auf den gelben Pfeil {{:button.debug.gif?nolink|Debugging des Frgaebogens}} klicken. Verwenden Sie den gelben Pfeil mit vorgestelltem Strich {{:button.debug.here.gif?nolink|Debugging ab aktueller Seite}}, um den Debug-Modus ab einer bestimmten Seite zu starten. | Starten Sie den Fragebogen im Debug-Modus, indem Sie bei **Fragebogen zusammenstellen** auf den gelben Pfeil {{:button.debug.gif?nolink|Debugging des Fragebogens}} klicken. Verwenden Sie den gelben Pfeil mit vorgestelltem Strich {{:button.debug.here.gif?nolink|Debugging ab aktueller Seite}}, um den Debug-Modus ab einer bestimmten Seite zu starten. |
| |
Im Debugging-Modus haben Sie oben eine zusätzliche Steuerleiste (Debug-Leiste) und Sie sehen neben den Fragen zusätzlich Informationen. | * Im Debug-Modus ({{:button.debug.gif?nolink|Debug-Modus}}) und im Vorschau-Modus ({{:button.run.gif?nolink|Vorschau-Modus}}) sehen Sie Warnungen (orange) und Hinweise (gelb) auf mögliche Probleme, die im normalen Fragebogen nicht angezeigt werden (z.B. wenn Sie ''value()'' auf eine Variable anwenden, die noch nicht abgefragt wurde). |
| * Im Debug-Modus wird neben jeder Frage deren Kennung und Beschreibung anzeigt. Fahren Sie mit dem Mauszeiger über die Beschreibung, so können Sie in einem Eingabefeld Notizen zur Frage machen. Diese werden auch im **Fragenkatalog** angezeigt, wenn Sie eine Frage zum Bearbeiten öffnen. |
| * Im Debug-Modus haben Sie oben eine zusätzliche Steuerleiste (Debug-Leiste) und Sie sehen neben den Fragen zusätzlich Informationen. |
| |
{{:de:create:scr.debug.bar.png?nolink|Debug-Leiste}} | {{:de:create:scr.debug.bar.png?nolink|Debug-Leiste}} |
{{:de:create:scr.debug.info01source.png?nolink|Beispiel für eine Fragebogen-Seite mit Filter}} | {{:de:create:scr.debug.info01source.png?nolink|Beispiel für eine Fragebogen-Seite mit Filter}} |
| |
Der Befehl ''value()'' erzeugt automatisch einen Eintrag in der Debug-Information. Sie können der [[#debug_information|Debug-Information]] entnehmen, dass der PHP-Code den Befehl ''value('AB10')'' verwendet hat und dass dieser den Wert 2 zurücklieferte. | Der Befehl ''value()'' erzeugt automatisch einen Eintrag in der Debug-Information. Sie können der [[#debug-information|Debug-Information]] entnehmen, dass der PHP-Code den Befehl ''value('AB10')'' verwendet hat und dass dieser den Wert 2 zurücklieferte. |
| |
{{ :de:create:scr.debug.info01.png?nolink |Debug-Information zur Filterfrage}} | {{ :de:create:scr.debug.info01.png?nolink |Debug-Information zur Filterfrage}} |
Hier wurde zweimal der Befehl ''debug()'' eingesetzt. Der Parameter ist einmal die Kennung der offenen Texteingabe "AB11_01" und einmal die PHP-Variable ''$num'', in welcher das Ergebnis der Berechnung gespeichert wird. | Hier wurde zweimal der Befehl ''debug()'' eingesetzt. Der Parameter ist einmal die Kennung der offenen Texteingabe "AB11_01" und einmal die PHP-Variable ''$num'', in welcher das Ergebnis der Berechnung gespeichert wird. |
| |
Im Debug-Modus erzeugt ''debug()'' eine Ausgabe sowohl im Fragebogen als auch in der Debug-Information. Im normalen Interview sieht man davon nichts. | Im Debug-Modus erzeugt ''debug()'' eine Ausgabe sowohl im Fragebogen als auch in der [[#debug-information|Debug-Information]]. Im normalen Interview sieht man davon nichts. |
| |
{{ :de:create:scr.debug.info02.png?nolink |}} | {{ :de:create:scr.debug.info02.png?nolink |}} |
{{:de:create:scr.debug.info03source.png?nolink|Eine Fragebogenseite, die u.U. leer bleibt}} | {{:de:create:scr.debug.info03source.png?nolink|Eine Fragebogenseite, die u.U. leer bleibt}} |
| |
In der Debug-Information ist nicht nur ersichtlich, dass und weshalb die Frage "AB05" nicht angezeigt wird, sondern auch dass es automatisch mit der nächsten Seite Nr. 4 weitergeht. | In der [[#debug-information|Debug-Information]] ist nicht nur ersichtlich, dass und weshalb die Frage "AB05" nicht angezeigt wird, sondern auch dass es automatisch mit der nächsten Seite Nr. 4 weitergeht. |
| |
{{ :de:create:scr.debug.info03.png?nolink |beispiel}} | {{ :de:create:scr.debug.info03.png?nolink |beispiel}} |
</code> | </code> |
| |
Hier helfen nun die Informationen, welche der Debugging-Modus liefert. Dieser zeigt an, dass der Befehl ''[[:de:create:functions:text]]'' gar nicht ausgeführt wird, das ''goToPage()'' aber schon. Am Filter kann es also nicht liegen, dieser funktioniert. Ein Blick in die Anleitung des Befehls ''[[:de:create:functions:gotopage]]'' verrät daraufhin, dass dieser direkt zur angegeben Seite springt und dann nichts mehr von der aktuellen Seite ausgeführt wird, in diesem Beispiel also auch nicht das ''text()''. Kennt man die Ursache, ist die Lösung einfach: Das ''text()'' muss vior das ''goTopage()''. | Hier helfen nun die Informationen, welche der Debugging-Modus liefert ([[#debug-information|Debug-Information]]). Diese zeigen, dass der Befehl ''[[:de:create:functions:text]]'' gar nicht ausgeführt wird, das ''goToPage()'' aber schon. Am Filter kann es also nicht liegen, dieser funktioniert. |
| |
| Ein Blick in die Anleitung des Befehls ''[[:de:create:functions:gotopage]]'' verrät daraufhin, dass dieser direkt zur angegeben Seite springt und dann nichts mehr von der aktuellen Seite ausgeführt wird, in diesem Beispiel also auch nicht das ''text()''. Kennt man die Ursache, ist die Lösung einfach: Das ''text()'' muss vor das ''goTopage()''. |
| |
<code php> | <code php> |