Fehlermeldungen finden

  • Hallo liebes Forum, vor kurzem gab es von mir einen Beitrag der neuen Benutzern helfen soll die eigenen Codes sinnvoll im Forum zu posten, darauf aufbauen möchte ich nun mit einer kurzen Erklärung (Edit: kurz trifft es nun doch nicht so) wie sich Fehlermeldungen aufspüren lassen damit sie zusätzlich angegeben werden können, dies erspart den Helfern langes ausprobieren des Codes um überhaupt auf den Fehler zu kommen.


    Sollte dir etwas einfallen, was man diesem Beitrag noch hinzufügen könnte, bitte schreibe eine Private Nachricht an mich oder lauras.


    Das Ganze baut sich in 3 Teile auf: HTML & CSS, PHP & MySQL und JavaScript.


    1. HTML & CSS
    HTML und CSS lassen sich relativ einfach überprüfen, hierzu nutzen wir den w3c Validator:
    Für HTML: validator.w3.org
    Für CSS: jigsaw.w3.org/css-validator/
    seminar.jpg
    Die beiden Seiten funktionieren auf genau die gleiche Weise. Wir können nun auswählen ob wir eine URL angeben wollen (dafür muss die Seite natürlich vorher bei einem Hoster hochgeladen werden), ob wir die Datei hochladen wollen oder ob wir den Quellcode in ein Eingabefeld kopieren wollen. (siehe Bild)


    1.1 HTML
    Ich habe nun einmal einen kleinen HTML Code vorbereitet der einen Fehler beinhaltet, das Blockelement div darf nicht in einem Inlineelement wie span verwendet werden:


    Wenn ich diesen Code jetzt überprüfen möchte wähle ich einfach per Direkteingabe, kopiere meinen Code in das Textfeld und klicke auf Check. Nach wenigen Augenblicken lese ich weit oben auf rotem Hintergrund: Error found while checking this document as HTML5!
    Scrolle ich nun runter sehe ich auch direkt meinen Fehler oder meine Fehler (falls mehrere vorhanden sind)

    Line 9, Column 9: Element div not allowed as child of element span in this context. (Suppressing further errors from this subtree.)


    Ganz wichtig: Dies ist die für uns im Forum interessante Zeile, diese bitte unbedingt mit angeben falls vorhanden, sollten mehrere Fehler vorhanden sein auch diese mit dazu schreiben.


    Direkt darunter sind übrigens unter Umständen einige Lösungsvorschläge oder Links zu interessanten Beiträgen bezüglich des Fehlers angegeben.


    1.2 CSS
    Das funktioniert exakt genau so wie mit HTML, nur nutzen wir den CSS Validator, in meinem CSS Code fehlt ein Semikolon:

    CSS
    1. div em {
    2. color: red
    3. font-weight: bold;
    4. }


    Befrage ich nun den Validator bekomme ich folgende Aussage:

    3 | div em | Ungültige Nummer : color Versuche ein Semikolon vor dem Eigenschaftsnamen zu finden. Füge es hinzu.


    In diesem Fall wäre ein neuer Beitrag im Forum überflüssig da der Fehler hier offensichtlich erklärt wird, außerdem erhalte ich wenn ich ein Stück herunter scrolle eine validierte Version meines CSS-Codes. Sollte der Fehler weiterhin Fragen aufwerfen müsst ihr im Forum unbedingt die Meldung und denn Quelltext mit angeben.


    2. PHP & MySQL
    PHP und MySQL lassen sich relativ einfach ausquetschen was Fehler betrifft, wenn es um PHP geht bekommen wir meist direkt einen Fehler ausgegeben, MySQL müssen wir dazu unter Umständen ein wenig befragen.


    2.1 PHP
    Mein PHP Dokument enthält einen simplen Fehler und einen Schönheitsfehler der viel Kopfschmerz bereiten kann. Hinter der 3 in Zeile 5 fehlt ein Semikolon und falls in der URL kein "name" übergeben ist geht der print Befehl in Zeile 3 in die Hose:


    Wenn ich diese Datei nun im Browser lade (auf einem laufenden Webserver!) erhalte ich folgende Ausgabe:

    localhost schrieb:

    Parse error: syntax error, unexpected 'print' (T_PRINT) in D:\Dateipfad\Dateiname.php on line 6


    Ganz wichtig: Dies ist die für uns im Forum interessante Zeile, diese bitte unbedingt mit angeben falls vorhanden.
    Wenn wir dieses Problem behoben haben indem wir das Semikolon setzen, funktioniert unser Programm leider immernoch nicht so richtig, irgendetwas stimmt nicht aber es kommt einfach keine Fehlermeldung mehr, das kann am Server liegen denn: Es handelt sich nun um keinen parse error sondern um eine notice und diese müssen wir unter Umständen erst einblenden, dies tun wir mit folgender Zeile am Anfang des PHP Codes:

    PHP
    1. <?php
    2. error_reporting(E_ALL);
    3. ?>


    Testen wir die Datei nun erneut erhalten wir folgende Notiz:

    localhost schrieb:

    Notice: Undefined index: name in D:\Dateipfad\Dateiname.php on line 3


    Wir können diese Meldungen auch unterdrücken falls wir sie nicht sehen wollen, dazu ersetzen wir E_ALL simpel mit einer 0. Es gibt noch weitere Werte, diese bitte hier entnehmen.
    Trivia: Ein parse error unterbricht immer die Ausführung des Codes und sorgt dafür das der Seiteninhalt unterdrückt wird, eine notice tut dies nicht sondern wird dort im Dokument angezeigt wo der PHP Code ausgeführt wird.


    2.2 MySQL
    Dies funktioniert beinahe genau so wie PHP, gibt es einen Fehler so wird dieser auch angezeigt. Es kann jedoch sein das wir error_reporting auf 0 gesetzt haben, für diesen Fall können wir unser PHP Skript mit 2 netten Funktionen erweitern: mysql_error() und mysql_errno(). Dies könnte zum Beispiel so aussehen:


    Trotzdessen ich alle Fehler ausblende erhalte ich folgende Ausgabe wenn keine Verbindung möglich ist:

    localhost schrieb:

    Fehler Nummer 2002: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.


    3. JavaScript
    Ja, wie soll das denn bitte gehen ?( Ganz einfach: Mit der Konsole. Ich kann diese leider aufgrund des zu hohen Aufwands jetzt nur für 3 gängige Browser erläutern: Chrome & Opera (selbe Funktionalität) und Firefox (irgendwie etwas schicker). Auch diese Fehlermeldungen helfen uns im Forum oft weiter wenn ihr Hilfe benötigt, gebt diese wenn möglich mit an.
    Zuerst mein JavaScript, es ist fehlerhaft wie wir es von mir gewohnt sind ( :P ). Und zwar fehlt ein Verkettungsoperator, nämlich das + hinter dem 2. Anführungszeichen in Zeile 2:

    JavaScript
    1. var zahl = 3;
    2. document.write(zahl +" mal 2 ist " zahl*2);


    Verpacken wir den Code in einem script-Tag und führen ihn aus finden wir den Fehler wie folgt:


    Chrome & Opera:seminar.jpg
    Wir drücken F12 (Google Chrome) oder Steuerung + Shift + i (Opera) und es öffnet sich die Konsole, standardmäßig geschieht dies am unteren Rand. Wir sehen in der rechten oberen Ecke der Konsole einen roten Kreis mit weißem Kreuz und einer 1 daneben, diesen klicken wir an und schon erhalten wir unsere Fehlermeldung, bitte jetzt das Bild betrachten. Auf der Grafik sieht man Opera, Google Chrome's Konsole funktioniert jedoch exakt genau so. Mit einem Klick auf error.php:4 springen wir innerhalb der Konsole in die betroffene Datei zur fehlerhaften Zeile.




    Firefox:seminar.jpg
    Hier öffnen wir die Konsole wieder einfach mit F12. Wir sehen zuerst unter Umständen einige Meldungen, jedoch filtern wir einfach nach JavaScript, das bedeutet wir markieren bei den Schaltflächen (siehe Bild) nur JS, schon sehen wir erneut eine Fehlermeldung. In diesem Fall eine eher merkwürdige, jedoch können wir auch hier mit einem Klick auf error.php:4 direkt in der Konsole zur fehlerhaften Zeile springen.