[php.wirlernen.at] [Aufgaben zur Lektion]

Lektion 55: PHP - Quelltext mit dem Editor Microsoft Visual Studio Code validieren

Wie du im Laufe dieser Einführung sicher schon feststellen konntest können einem beim Erstellen von Webseiten so manche Fehler unterlaufen. In diesem Abschnitt beschäftigen wir uns damit wie man überprüfen - man spricht auch von validieren - kann ob der eigene PHP - Code von dir tatsächlich FEHLERFREI erstellt wurde. Ein anderer Ausdruck für die "Fehlerbeseitigung" ist auch "Debugging" .
Validierungen haben den großen Vorteil dass man einen konkreten Fehlerbericht bekommt der auf die (mehr oder weniger) genauen Fehlerstellen - meistens die Zeilennummer - verweist und mögliche Gründe für die Fehler aufzeigt. Wir haben schon die Möglichkeit besprochen mit dem Einfügen der PHP - Anweisung error_reporting(E_ALL) am Anfang eines Listings sich Fehler eines Listings anzeigen zu lassen. Im folgenden verweise ich auf die Möglichkeit mit dem Editor Visual Studio Code den eigenen PHP - Quelltext validieren zu lassen.
Mit den bereits in diesem Lehrgang gezeigten Extensions hast du u.a. drei Möglichkeiten deinen PHP - Code auf Fehler hin zu überprüfen. Je nach der verwendeten PHP - Version können die angezeigten Fehlermeldungen unterschiedlich sein, da z.B. manche bisherige Empfehlungen wie man Programmieren sollte zu einer Vorschrift werden.
Du siehst hier unten in der Animation die drei erwähnten Möglichkeiten:
#1 Direkt im Code / Quelltext: Farbliche Hinweise wie z.B. eine Unterwellung in oranger Farbe wie in Zeile 4
#2 Registerkarte "Probleme" im Panel im unteren Bereich des Editors: hier Verweis auf einen sogenannten Syntax Error
#3 Registerkarte "Ausgabe" im Panel im unteren Bereich des Editors bzw. Aufruf der Webseite: hier Verweis auf einen sogenannten Syntax Error
mehrere Formen der Fehleranzeige

(#1) Direkt im Code / Quelltext

Wenn dir direkt während der Eingabe auffällt, dass ein Teil des Codes rot eingefärbt wird, könnte dies auf ein Problem hindeuten. Das kann dann ein Fehler sein, der dann an anderen Stellen des Editors gar nicht angezeigt wird und du deshalb übersehen könntest. Im unteren Beispiel wurde z.B. in der Zeile 28 der CSS - Tag - Span NICHT geschlossen: Fehleranzeigen direkt im Code

(#2) Registerkarte "Probleme"

Hinweise auf (mögliche) Probleme werden unten im Editor - Fenster - im sogenannten "Panel" - in der Registerkarte "Probleme" angezeigt. Falls bei dir das Panel nicht angezeigt wird kannst du dies im Visual Studio Code Editor über Anzeigen / Darstellung / Panel anzeigen wieder einblenden!
In der Regel gibt es bei Fehlermeldungen bzw. Warnungen Verweise auf Zeilennummern - häufig befindet sich der Fehler nicht nur in der angegeben Zeile sondern auch schon davor!
(a) PHP Debugging in der Registerkarte "Probleme" funktioniert nur dann besonders gut, wenn ein ordentlicher Anfangs- und Endtag - Tag vorhanden ist:
Achte also darauf ob der korrekt vorhanden ist! Im unteren Beispiel siehst du das im Panel in der Registerkarte erst dann ein Warnhinweis gezeigt wird als der php - Anfangs- und Endtag in der Zeile 45 korrekt eingefügt wurde:
Anfangs- und Endtag - Tag nicht vergessen
(b) Achte besonders darauf, dass der Visual Studio Editor so eingestellt sein kann, dass eine Überprüfung erst nach dem Speichern erfolgt - du also erst dann ein Problem angezeigt bekommst - also nicht auf das Speichern des Codes vergessen:
Tastenkombination: STR + s
Menü: Datei / Speichern
(c) Ein besonders häufig Fehlerquelle ist das Vergessen auf Strichpunkte (Semikolon); Hier kann es vorkommen, dass z.B. ein Strichpunkt in Zeile 4 fehlt aber ein Problem für Zeile 5 angezeigt wird. Im unteren Beispiel liegt die eigentliche Ursache im Fehlen des Strichpunktes in Zeile 46 - der Warnhinweis bezieht sich auf die Zeile 47.
fehlender Strichpunkt
(d) Achte darauf dass du einzeilige Kommentare korrekt mit // einfügst und nicht nur / - es würde die Warnung syntax error, unexpected token "/", expecting end of file angezeigt werden. Hier siehst hier unten ein Beispiel dazu!
fehlerhafter Kommentar
(e) Achte auf die korrekte Schreibweise der Anweisungen bzw. Tags und das korrekte Schließen von Klammern - wie z.B.
eho => echo
phpinfo) => phpinfo()
forech => foreach
Im unteren Beispiel siehst du, dass zuerst in Zeil 46 eine Klammer fehlt und dann in Zeile 47 die Anweisung foreach falsch getippt wurde:
fehlerhafter Kommentar
(f) Die korrekte Schreibweise gilt auch für HTML - Befehle - wie z.B.
POST => $_POST
Das Schließen von Klammern gilt natürlich auch für die eckigen Klammern der Arrays:
$Monat1] ="Jänner"; => $Monat[1] ="Jänner";
Das Schließen von Klammern gilt auch z.B. für Schleifen - du kannst recht rasch überprüfen ob alle Klammern tatsächlich geschlossen sind, denn wenn du eine Klammer markierst müsste das dazugehörende Gegenstück markiert im Code hervorgehoben werden! Diese Vorgehensweise ist besonders bei ineinander verschachtelten Klammern hilfreich um nicht den Überblick zu verlieren. Hier unten siehst du dafür ein Beispiel:
Suche nach Klammern

(#3) Registerkarte "Ausgabe"

Manche Fehler werden auch erst dann angzeigt wenn du du die Erweiterung "Run Code" verwendest die unten in der Registerkarte "Ausgabe" die neben dem von PHP erzeugten HTML - Code auch die PHP - Orginalfehlermeldungen anzeigt!
So zeigt z.B. die Fehlermeldung Fatal error: Uncaught Error: Undefined constant "a" an dass bei der Variablen a vergessen wurde ein $ davor zu setzen. Du siehst hier unten ein Beispiel dafür, dass der Fehler nicht in der Registerkarte "Probleme" sondern erst durch die Verwendung der Extension "Run Code" in der Registerkarte "Ausgabe" angezeigt wird.
Anzeige nur in Registerkarte Ausgabe

Tipp: Übung macht Meister*innen: Ich würde dir empfehlen absichtlich ein paar Fehler in dein Listing einzubauen und dieses dann mit dem Check des Editors zu überprüfen und dann anhand der Fehlermeldung wieder richtig zun stellen.

Augabenstellung:
1. Erkläre mit eigenen Worten (also kein einfaches Copy und Paste) was man unter der Validierung eines Quelltextes versteht!
2. Im folgenden Listing sind 5 Fehler enthalten - korrigiere diese mit Hilfe der Check (Validierungs) - Funktion des Editors! Sorge ebenfalls dafür dass das Listing übersichtlich gestaltet ist - achte darauf was alles dazu gehört und mach es dir beim Programmieren nicht zu leicht!!! Du musst im Listing zusätzlich die korrigierten Fehler kommentieren bzw. erklären was du zur Verbesserung des Quelltextes gemacht hast! Speichere das fertige Listing mit dem Dateinamen 055a.html. Hinweis: Wenn das hier unten angeführte Listing nicht übersichtlich gestaltet war so zählt das NICHT zu den 5 Fehlern!
<php
eho "Hier die Infos zu PHP:"
    phpinfo);
>

3. Im folgenden Listing sind 5 Fehler enthalten - korrigiere diese mit Hilfe der Check (Validierungs) - Funktion des Editors! Sorge ebenfalls dafür dass das Listing übersichtlich gestaltet ist - achte darauf was alles dazu gehört und mach es dir beim Programmieren nicht zu leicht!!! Du musst im Listing zusätzlich die korrigierten Fehler kommentieren bzw. erklären was du zur Verbesserung des Quelltextes gemacht hast! Speichere das fertige Listing mit dem Dateinamen 055b.html. Hinweis: Wenn das hier unten angeführte Listing nicht übersichtlich gestaltet war so zählt das NICHT zu den 5 Fehlern!
<?php
    $a=2;
    $b=3
    echo $a*$b; //Bildschirmausgabe 6
    echo "<br>" //Zeilenumbruch
    echo $a+$b; /Bildschirmausgabe 5
    echo "<br>"; //Zeilenumbruch
    echo a-$b; //Bildschirmausgabe -1
    echo "<br>"; //Zeilenumbruch
    echo $a/$a; //Bildschirmausgabe 1
    echo "<br>"; //Zeilenumbruch
>

4. Im folgenden Listing sind 5 Fehler enthalten - korrigiere diese mit Hilfe der Check (Validierungs) - Funktion des Editors! Sorge ebenfalls dafür dass das Listing übersichtlich gestaltet ist - achte darauf was alles dazu gehört und mach es dir beim Programmieren nicht zu leicht!!! Du musst im Listing zusätzlich die korrigierten Fehler kommentieren bzw. erklären was du zur Verbesserung des Quelltextes gemacht hast! Speichere das fertige Listing mit dem Dateinamen 055c.html. Hinweis: Wenn das hier unten angeführte Listing nicht übersichtlich gestaltet war so zählt das NICHT zu den 5 Fehlern!
<php
    $Wochentag[0] ="Montag";
    $Wochentag1] ="Dienstag";
    $Wochentag[2] ="Mittwoch"
    $Wochentag[3] ="Donnerstag";
    $Wochentag[4] ="Freitag";
    $Wochentag[5] ="Samstag";
    $Wochentag[6] ="Sonntag";
    echo Wochentag[0]."<br>";
    echo $Wochentag[1]."<br>";
    eo $Wochentag[2]."<br>";
    echo $Wochentag[3]."<br>";
    echo $Wochentag[4]."<br>";
    echo $Wochentag[5]."<br>";
    echo $Wochentag[6]."<br>";
?>

5. Im folgenden Listing sind 5 Fehler enthalten - korrigiere diese mit Hilfe der Check (Validierungs) - Funktion des Editors! Sorge ebenfalls dafür dass das Listing übersichtlich gestaltet ist - achte darauf was alles dazu gehört und mach es dir beim Programmieren nicht zu leicht!!! Du musst im Listing zusätzlich die korrigierten Fehler kommentieren bzw. erklären was du zur Verbesserung des Quelltextes gemacht hast! Speichere das fertige Listing mit dem Dateinamen 055d.html. Hinweis: Wenn das hier unten angeführte Listing nicht übersichtlich gestaltet war so zählt das NICHT zu den 5 Fehlern!
<?php
    $zahlen = aray(11, 22, 33, 44)
    //dem Wert werden 4 Werte zugewiesen
    foreach ($zahlen as $v) {
        //foreach wird so lange ausgeführt so lange
        //Werte in einem Array vorhanden sind.
        //$v enthält den Wert des jeweiligen Array - Elements
        echo v."<br>";
        //Werte für $v werden ausgegeben
        //<br> bewirkt einen Zeilenumbruch
    }
    foreach ($zahlen as $v)
        echo "Wert von \$zahlen: $v<br>";
        //Mit \$zahlen kann die Bezeichnung der Variablen
        //ausgegeben werden (Maskierung)
    }
?

6. Im folgenden Listing sind 5 Fehler enthalten - korrigiere diese mit Hilfe der Check (Validierungs) - Funktion des Editors! Sorge ebenfalls dafür dass das Listing übersichtlich gestaltet ist - achte darauf was alles dazu gehört und mach es dir beim Programmieren nicht zu leicht!!! Du musst im Listing zusätzlich die korrigierten Fehler kommentieren bzw. erklären was du zur Verbesserung des Quelltextes gemacht hast! Speichere das fertige Listing mit dem Dateinamen 055e.html. Hinweis: Wenn das hier unten angeführte Listing nicht übersichtlich gestaltet war so zählt das NICHT zu den 5 Fehlern!
<!DOCTYPE html>
<html lang="de">
<head>
    <title>Formular mit Dropdown - Liste</title>
    <meta charset="UTF-8">
</head>
<body>
<form action="formularmitdropdown.php" method="post">
Wahl der Anrede:
<select name="Anrede">
    <option value=" "> </option>
    <option value="Sie">Sie</option>
    <option value="Du">Du</option>
</select>
<br>
Einkaufsliste:
<!-- die ausgewählten Elemente werden in einem Array gespeichert -->
<select name="Einkauf[]" multiple="multiple">
    <option value="Milch">Milch</option>
    <option value="Eier">Eier</option>
    <option value="Brot">Brot</option>
</select>
<br>
<input type="submit" name="absenden" value="Liste absenden">
</form>
    <?php
    //Mit isset() wird überprüft ob einer Variablen bereits
    //ein Wert zugewiesen wurde
    if (isset(POST['absenden'])){
        if ($_POST['Anrede']=="Sie"){
            echo Ihre ";
        }
        if ($_POST['Anrede']=="Du"){
            echo "Deine "
        }
        echo "Einkaufsliste: <br>";
        //es werden alle Werte des Arrays mit einer foreach -
        //Schleife ausgegeben
        forech ($_POST['Einkauf'] as &$value) {
            echo $value."<br>";

    }
    ?>
</body>
</html>