PHP lernen (1): Einführung, Installation und erste Schritte
Einbettung von PHP in HTML
Einbettung von PHP in HTML
Auf dieser Seite
Mit Bild
Nun schreiben wir unser erstes richtiges PHP-Skript. Im Grunde kennen Sie das Beispiel schon aus dem Abschnitt Client-Server-Technologie mit PHP. Öffnen Sie Ihren Editor und schreiben in eine leere Datei ein HTML-Grundgerüst. In den Body-Tag schreiben Sie eine Ausgabe mit PHP:
Mit Bild
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>Workshop PHP lernen</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> </head> <body> <?php print "Hallo Welt!"; ?> </body> </html>
Mit Bild
Speichern Sie diese Datei zum Beispiel unter dem Namen php1_w1_01.php in das Verzeichnis htdocs/Workshop. Rufen Sie diese Datei nun im Browser über diese Adresse auf:
http://localhost/Workshop/php1_w1_01.php
Mit Bild
Sie sollten im Browserfenster jetzt die Worte "Hallo Welt!" sehen. Damit haben Sie Ihr erstes PHP-Skript geschrieben!
Mit Bild
Eine einfache Ausgabe wird mit print oder echo erzeugt, Zeichenketten (hier: Hallo Welt!) werden in Anführungszeichen gesetzt. Grundsätzlich kann PHP-Code überall stehen, also auch im Head des HTML-Grundgerüsts oder vor der Ausgabe irgendeines HTML-Tags. In diesem Kapitel erzeugen wir jedoch einfache Ausgaben, die im Browserfenster ausgegeben werden sollen. Diese gehören natürlich in den Body des HTML-Dokuments. Alle weiteren Beispiele werden also im Body-Tag eines HTML-Grundgerüsts stehen. Dieses Grundgerüst wird in den weiteren Skriptbeispielen der Übersicht halber weggelassen. Die folgenden Beispiele werden alle auch ohne das Grundgerüst funktionieren. Für eine vollständige und gültige HTML-Datei brauchen Sie aber auch das HTML-Grundgerüst.
Mit Bild
Es gehört inzwischen zum guten Stil in der PHP-Programmierung, HTML und PHP sorgfältig zu trennen. Dazu brauchen Sie aber erst einmal einige Grundkenntnisse. Um die einführenden Beispiele einfacher zu halten, schreiben wir vorerst den PHP-Code direkt in den body-Tag. Später werden wir den Code verfeinern.
Mit Bild
PHP-Tags
Damit PHP weiß, wo der PHP-Code beginnt, wird ein PHP-Container geöffnet. Der PHP-Parser interpretiert nur die Teile des Quelltextes, die für ihn als PHP-Code kenntlich gemacht wurden. Oben wurde das Tag <?php ... ?> dafür verwendet. Alles, was vom öffnenden Tag <?php bis zum schließenden Tag ?> steht, wird vom PHP-Parser interpretiert. Alles andere gibt er als HTML-Code direkt an den Browser aus.
Insgesamt gibt es vier Möglichkeiten, den HTML-Bereich einer Skript-Datei zu verlassen und in den "PHP-Modus" zu wechseln:
XML-Style: <?php ... ?> oder <?PHP ... ?>
SGML-Style: <? ... ?>
ASP-Style: <% ... %>
JavaScript-Style: <script language="php" runat=server> ... </script>
Die ersten beiden Varianten sind die gebräuchlichsten. Sie sollten eine der beiden verwenden - diese werden von den meisten Editoren mit Syntaxhervorhebung unterstützt. Nur der Code zwischen den PHP-Tags wird vom PHP-Parser interpretiert.
Um XML-konforme Dateien zu programmieren, muss die erste Variante (<?php ... ?>) benutzt werden. Vorsicht ist beim ASP-Style (<% ... %>) geboten: Er ist auf Unix-Servern nicht erlaubt.
Mit Bild
Anweisungen
Grundsätzlich wird jede einzelne Anweisung durch ein Semikolon abgeschlossen. Üblicherweise steht jede Anweisung in einer einzelnen Zeile.
Mit Bild
<?php print "Hallo Welt!"; ?>
Mit Bild
Wenn Sie wie in unserem Beispiel nur eine einzige Anweisung innerhalb der PHP-Tags haben, können Sie in einer Zeile schreiben:
Mit Bild
<?php print "Hallo Welt!"; ?>
Mit Bild
Theoretisch können Sie bei einer einzelnen Anweisung das abschließende Semikolon weglassen:
Mit Bild
<?php print "Hallo Welt!" ?>
Mit Bild
Auf einem Windows NT-Server kann das aber zu Problemen führen. Setzen Sie es am besten immer. Dann können Sie es auch nicht vergessen, wenn doch noch eine weitere Anweisung dazu kommt.
Für einzeilige Ausgaben können Sie übrigens eine noch kürzere Form verwenden, indem Sie das echo oder print durch ein Gleichheitszeichen ersetzen:
Mit Bild
<?="Hallo Welt"; ?>
Mit Bild
Das funktioniert nur in genau dieser Schreibweise, also nur einzeilig mit dem Tag <? ... ?> und einem Gleichheitszeichen direkt hinter dem öffnenden Tag ohne Leerzeichen dazwischen <?=. Mit dieser Syntax können Sie nur eine Ausgabe erzeugen.
Mit Bild
HTML und PHP
HTML-Code kann auch innerhalb des print- oder echo-Befehls stehen.
Mit Bild
<?php print "<h1>Hallo Welt!</h1>"; ?> <!-- oder so: --> <h1> <?="Hallo Welt!";?> </h1>
Mit Bild
Es ist meist besser, PHP und HTML sauber voneinander zu trennen, also möglichst wenig HTML-Code mit PHP erzeugen. Erstens bleibt der Code dann übersichtlicher und lesbarer. Und zweitens erleichtert das die nachträgliche Bearbeitung des HTML-Codes.
Mit Bild
Ein WYSIWYG-Editor (What You See Is What You Get) wie z. B. Macromedia Dreamweaver kann den Code innerhalb der PHP-Tags (<?...?>) nicht anzeigen.
<?php
...
print "<tr><td>Zelleninhalt</td></tr>";
...
?>
Dieser Skriptfitzel wird zwar im Browser richtig dargestellt, weil der PHP-Parser im Webserver den PHP-Code interpretiert hat (sofern die Tabelle außen herum definiert wurde!). Die Anzeige im WYSIWYG-Editor wird jedoch gar nicht erfolgen bzw. lediglich ein Symbol für den PHP-Code darstellen. Wenn Sie die komfortable Bearbeitung des HTML-Codes im WYSIWYG-Editor wünschen, schreiben Sie den PHP-Code so:
...
<tr>
<td>
<?php print "Zelleninhalt"; ?>
</td>
</tr>
...
Dieses Beispiel wird zumindest die Tabellenzeile darstellen. Das wird deutlicher, wenn wir später über Kontrollstrukturen (if ... else) sprechen und Tabellen zeilenweise innerhalb von Schleifen (for, while) ausgeben.
Mit Bild
Umgang mit Zeilenumbrüchen
Die Tabellen lassen wir jetzt erst einmal hinter uns und beschäftigen uns mit simplen Ausgaben von Text. Ein einzeiliges Beispiel kennen Sie schon:
Mit Bild
<?php print "Hallo Welt!"; ?>
Mit Bild
Probieren Sie es mehrzeilig aus:
Mit Bild
<?php print "Hallo Welt!"; print "Schönes Wetter heute!"; ?>
Mit Bild
Sie stellen anhand der Ausgabe über den Browser fest, dass genau wie im HTML-Code der Zeilenumbruch nicht automatisch erfolgt. Die Ausgabe sieht so aus:
Mit Bild
Hallo Welt!Schönes Wetter heute!
Mit Bild
Sie müssen den Zeilenumbruch mit <br> erzeugen:
Mit Bild
<?php print "Hallo Welt!"; ?> <br> <?php print "Schönes Wetter heute!"; ?>
Mit Bild
Oder so:
Mit Bild
<?php print "Hallo Welt!"; print "<br>"; print "Schönes Wetter heute!"; ?>
Mit Bild
Oder so:
Mit Bild
<?php print "Hallo Welt!<br>"; print "Schönes Wetter heute!"; ?>
Mit Bild
Oder so:
Mit Bild
<?php print "Hallo Welt!<br>Schönes Wetter heute!"; ?>
Mit Bild
Nun sieht die Ausgabe in allen Schreibweisen so aus:
Mit Bild
Hallo Welt! Schönes Wetter heute!
Mit Bild
Der mit den vorangegangenen PHP-Anweisungen erzeugte HTML-Code wird aber in allen Beispielen unterschiedlich aussehen. Wenn Sie dieses Skript im Browser über den Webserver aufgerufen haben, dann schauen Sie doch einmal in den Quelltext, indem Sie im Browser auf Ansicht - Quelltext klicken. Bei einem Frameset müssen Sie den Quelltext über das Kontextmenü, das Sie über die rechte Maustaste über dem entsprechenden Frame erreichen, aufrufen.
Beim ersten Beispiel werden die Ausgaben im Quelltext in mehreren Zeilen stehen, weil Sie für das break den PHP-Container verlassen und im HTML-Modus Zeilenumbrüche gesetzt haben. Diese sind genau wie in statischen HTML-Dateien im generierten Quelltext natürlich auch enthalten.
Mit Bild
Hallo Welt! <br> Schönes Wetter heute!
Mit Bild
Bei allen anderen Beispielen werden Sie alle mit PHP erzeugten Ausgaben im Quellcode des Browsers in einer Zeile finden:
Mit Bild
Hallo Welt!<br>Schönes Wetter heute!
Mit Bild
Das kann bei komplexer werdendem Code sehr unübersichtlich werden, zum Beispiel wenn Sie einen HTML-Fehler im generierten Code einer Tabelle suchen. Um im Quelltext Zeilenumbrüche zu erzeugen, benutzen Sie das Escape-Zeichen \n.
Nehmen wir das vorletzte Beispiel. Um im Quelltext hinter dem break einen Zeilenumbruch für den generierten HTML-Code zu erzeugen, fügen wir ein \n ein:
Mit Bild
<?php print "Hallo Welt!<br>\n"; print "Schönes Wetter heute!"; ?>
Mit Bild
Die Ausgabe bleibt unverändert zweizeilig, der generierte Quelltext im Browser enthält jetzt aber einen Zeilenumbruch:
Mit Bild
Hallo Welt!<br> Schönes Wetter heute!
Mit Bild
Experimentieren Sie ein wenig und schauen Sie dabei auch immer wieder in den Quelltext, der im Browser ankommt. So können Sie am besten prüfen, welchen Code Sie über PHP generiert haben.