Ganz kurze Einführung in die Programmierung mit PHP

Nach den Grundlagen der HTML-Programmierung und der Vorstellung von FORMS kommt nun der nächste Schritt.
PHP ist eine Sprache, die auf dem Webserver ausgeführt wird und so dynamisch Webseiten erstellt. Die wichtigsten Punkte, die PHP so geeignet machen, sind die sehr einfache Auswertung von FORMS und der Zugriff auf Datenbanken.

Zuerst folgt ein kurzer Überblick über die Entstehung von PHP, danach die grundlegenden Sprachelemente, wie Variablen, Funktionsaufrufe, Schleifen, bedingte Ausführung und Ausgabe von HTML-Code. Als nächstes wird der Zugriff auf FORM-Daten erklärt.
Der letzte Teil, die Programmierung von Datenbankzugriffen, also das Abfragen und Ändern von Daten auf einer Datenbank, folgt in einer extra Dokumentation.

 
 Überblick über PHP

PHP wurde von dem Kanadier Rasmus Lerdorf entwickelt, dem es zu lästig wurde, seine FORMS mit CGI-Skripten in Perl auszuwerten, und der sich auch einen leichteren Datenbankzugriff wünschte, ein Vorhaben, das mit Perl eher umständlich ist. Der ursprüngliche Name von PHP war PHP/FI, was für Personal Home Pages / Form Interpreter stand. Die neue Abkürzung ist ein Akronym im GNU Stil, und steht für PHP: Hypertext Preprocessor.

Die Syntax von PHP ähnelt teilweise der von C, Perl und Java. String- und Speicherverarbeitung wurde eher an Perl angelehnt, da diese mächtiger und einfacher zu benutzen sind. Ein einfache Klassenmodell mit Vererbung ist an Java und C++ angelehnt.
PHP ist eine interpretierte Sprache und damit gut geeignet für kleine bis mittlere Webprojekte. Auch große Projekte lassen sich durchaus realisieren, jedoch werden mit komplexen Routinen die Grenzen erreicht. Solche Vorhaben lassen sich jedoch in C erstellen und als Modul zu PHP hinzufügen.

PHP kann als normales CGI-Programm laufen, oder als Modul in einen Webserver eingebettet werden, wobei zur Zeit der Apache-Server sowie die Produkte von Netscape und Microsoft unterstützt werden. Fast alle gebräuchlichen Unix-Varianten werden unterstützt, da das Programm im Quellcode vorliegt. Auch auf Windows NT und 95 ist PHP mit einigen Einschränkungen lauffähig.

Datenbanken werden von PHP über spezifische Funktionen angesprochen, als Abfragesprache wird SQL verwendet. PHP unterstützt eine große Zahl von DB-Systemen.

 Syntax und Features

 Integration in HTML

PHP-Code wird direkt in die HTML-Seite geschrieben. Um für den PHP-Interpreter zu kennzeichnen, welche Teile der Seite er verarbeiten soll, muß der Code von einem öffnenden und einem schließenden Tag umgeben werden. Das öffnenden Tag ist <?, das schließende ?>. In einer HTML-Seite können beliebig viele solcher PHP-Blöcke enthalten sein. Aller Text zwischen den beiden Tags muß gültiger PHP-Code sein, HTML ist hier direkt nicht erlaubt, kann jedoch mit Funktionen von PHP erzeugt werden.

Das nachstehende Beispiel bindet einen Seitenkopf ein, gibt dann die aktuelle Zeit aus und fügt dann einen Seitenfuß ein. Die Funktionen im einzelnen werden im folgenden erklärt:

<? require("seitenkopf.html"); ?>
<h1>Guten Tag!</h1>
Es ist <? echo date("H:i",time()); ?> Uhr
<p>
Willkommen bei uns.
<? require("seitenfuss.html"); ?>

 Anweisungen

PHP-Code besteht aus einer Folge von Anweisungen. Das können zum Beispiel Variablenzuweisungen, Funktionsaufrufe oder Schleifen sein. Eine Anweisung kann wiederum einen Block von Anweisungen umfassen, wie im Falle von bedingter Ausführung oder von Schleifen.

Einzelne Anweisungen müssen voneinander getrennt werden. In PHP wird dazu das Semikolon (;) verwendet. Vor dem schließenden Tag braucht kein Semikolon gesetzt zu werden, es ist jedoch guter Programmierstil, dort trotzdem eines einzufügen. Dies verhindert Fehler, wenn nachträglich am Ende eines Blocks weitere Anweisungen eingefügt werden.

PHP verwendet untypisierte Variablen, d.h. es muß nicht festlegt werden, ob Zahlen, Texte oder sonstige Werte in einer Variablen gespeichert werden sollen, PHP paßt den Typ automatisch an die Verwendung an. So kann zum Beispiel mit einem String, der nur eine Zahl enthält, und einer Zahl ganz normal gerechnet werden.
Variablen beginnen in PHP mit einem Dollarzeichen, gefolgt von dem Variablenbezeichner (, , ). Für Zuweisungen wird das einfache Gleichheitszeichen verwendet.

<? $a = 1;     // eine Zahl
$b = "2";   // ein String
$summe = $a + $b;
$produkt = $a * $b;   // rechnen mit Zahlen und Strings ist kein Problem
?>

 Text ausgeben

Mit PHP lassen sich nette Programme entwickeln, aber das Interessante dabei ist es, Text an den Browser auszugeben, bzw. in die ausgegebene HTML-Seite einzufügen. PHP bietet dafür das Kommando echo an, das Text nicht auf den Bildschirm, sondern an den Browser schickt. So kann HTML-Code erzeugt werden, der dann vom Browser verarbeitet wird.

echo "<table><tr><td>";
echo "Dies erzeugt eine Tabelle";
echo "</td></tr></table>";

Ein wichtiger Punkt, der am Anfang sicher immer wieder für Parser-Fehler sorgen wird, ist, daß in einem auszugebenen String natürlich keine Anführungszeichen (") verwendet werden dürfen. Sollen sie trotzdem verwendet werden, muß ihnen ein Backslash (\) vorangestellt werden.

Innerhalb eines auszugebenden Textes können Variablen verwendet werden, die dann von PHP mit den aktuellen Werten ersetzt werden.

$a = 1; $b = 2;
$summe = $a + $b;
echo "Die Summe aus $a und $b ist $summe";

Ein Problem, das bei der Erzeugung von HTML-Code aus PHP heraus auftritt, ist die schlechte Lesbarkeit des erzeugten Codes, da PHP von sich aus keine Zeilenumbrüche einfügt. Will man im Code solch einen Umbruch haben, muß er explizit in der \n erzeugt werden.

echo "Dies ist die erste Zeile\n...und dies die Zweite";

 Bedingte Ausführung

Wie in anderen Programmiersprachen gibt es auch in PHP Möglichkeiten, die Ausführung von Code von bestimmten Bedingungen abhängig zu machen.

IF

if (Bedingung) {
   Anweisung;
} else {
   Anweisung;
}

Der ELSE-Zweig kann wieder mit einer IF-Abfrage verknüpft sein:

if (Bedingung) {
   Anweisung;
} elseif (Bedingung) {
   Anweisung;
}

Folgende Vergleichsoperatoren sind in PHP definiert:

== gleich
< kleiner
> größer
<=,>= kleiner gleich, größer gleich
<>,!= ungleich

SWITCH

Die SWITCH-Anweisung ist prinzipiell eine Vereinfachung von vielen IF..ELSEIF..ELSEIF..ELSE Anweisungen hintereinander. Der Inhalt einer Variablen/eines Wertes wird gegen mehrere verschiedene Möglichkeiten auf Gleichheit überprüft. Außerdem ist ein DEFAULT-Fall möglich.
Die Syntax ist der von C sehr ähnlich: sobald eine Übereinstimmung gefunden wurde, werden alle folgenden Anweisungen bis zum Ende des SWITCH-Blocks ausgeführt. Verhindern kann man dies, indem man eine break-Anweisung einfügt, die zum Ende des Blocks springt.

switch ($a) {
   case 1: echo "Der Wert ist 1"; break;
   case 2: echo "Der Wert ist 2"; break;
   default: echo "Der Wert ist weder 1 noch 2"; break;
}

 Schleifen

Um Anweisungen mehrfach auszuführen, werden Schleifen verwendet. PHP bietet dazu drei verschiedene Varianten, die alle ähnlich sind, jedoch für verschiedene Anweisungszwecke mehr oder weniger geeignet sind.

WHILE

$i=0;
while ($i<10) {
   echo "\$i = $i<br>";
   $i++;
}

Die Anweisungen in der Schleife werden solange ausgeführt, wie die Bedingung zu Beginn eines Schleifendurchlaufs erfüllt ist. Ist dies nicht der Fall, werden alle Anweisungen in der Schleife übersprungen und die Ausführung wird nach dem endwhile; fortgesetzt.

DO ... WHILE

$i=0;
do {
   echo "\$i = $i<br>";
   $i++;
} while ($i<10);

Im Unterschied zur WHILE-Schleife wird hier erst nach dem Schleifendurchlauf die Bedingung geprüft, was zu dem Effekt führt, daß die Anweisungen in der Schleife in jedem Fall einmal ausgeführt werden.

FOR

for ($i=0;$i<10;$i++) {
   echo "\$i = $i<br>";
}

Vor dem Einstieg in die Schleife wird die erste Anweisung in der Klammer ausgeführt (hier: =0), dann läuft die Schleife solange wie die Bedingung in der Mitte (hier: <10) erfüllt ist. Nach jedem Schleifendurchlauf wird die dritte Anweisung (hier: ++) ausgeführt.
Aus der Beschreibung wird deutlich, daß sich eine FOR-Schleife sehr leicht durch eine WHILE-Schleife realisieren läßt, sie ist jedoch häufig eleganter zu benutzen.

 Arrays

Neben einfachen Variablen gibt es in PHP auch Arrays. Der Index des Arrays wird in eckigen Klammern hinter die Bezeichnung der Arrayvariablen angehängt. Im Vergleich zu C sind PHP-Arrays assoziativ, d.h. sie haben keine fortlaufende Nummerierung der Elemente, sondern es können beliebige Schluüssel verwendet werden.
Da PHP untypisiert ist, kann auch der Typ der in einem Array gespeicherten Werte beliebig sein.

$arr[0] = "ein element";
$arr[name] = "vielleicht der Name";
$arr["extra"] = 1234;

 Funktionen aufrufen

PHP bietet eine Reihe von Funktionen, die man als Programmierer nutzen kann. Ein Funktionsaufruf besteht aus dem Funktionsnamen gefolgt von einer Argumentsliste in Klammern.

funktionsname(Argument1,Argument2,Argument3);


Ein Dokumentation aller Funktionen ist in der Dokumentation zu PHP zu finden.

 Einbinden von Dateien

Bei der Gestaltung von Websites werden am Beginn und am Ende einer Seite häufig gleiche Elemente wiederverwendet, z.B. ein Seitenkopf/-fuß oder ein Auswahlmenü. Prinzipiell kann man dies auf jeder einzelnen Seite neu schreiben, einfacher ist es jedoch, diese Teile in gesonderten Dateien vorzuhalten und bei Zugriffen auf Seiten diesen Code dann einzubinden. Dadurch wird vor allem auch die Wartbarkeit von ganzen Websites wesentlich vereinfacht, da dann nicht mehr jede Seite einzeln geändert werden braucht, sondern Änderungen lediglich zentral in einer einzigen Datei vorgenommen werden können.

PHP3 stellt dazu die Funktion require zur Verfügung, die andere Dateien einbindet. Als Argument wird ein String mit dem Namen der Datei angegeben, die eingebunden werden soll. Zu beachten ist dabei, daß nicht eine URL angegeben wird, sondern der echte Pfad im Dateisystem des Webservers. Es ist ratsam, hier relative Pfade zu verwenden, da ansonsten eine Umstrukturierung des Dateisystems auf dem Server fast alle Seiten unbrauchbar machen würde.

// fügt an dieser Stelle die Datei kopf.inc ein
require("../includes/kopf.inc");


Der Inhalt der Datei wird als HTML-Code eingebunden, d.h. also, daß PHP-Befehle in der eingebundenen Datei in PHP-Tags eingeschlossen werden müssen.

 FORMS auswerten mit PHP3

Die Auswertung von FORMS ist mit PHP sehr einfach. PHP stellt für alle Werte, die von einem FORM übertragen werden, Variablen zur Verfügung, deren Namen der Bezeichnung der Felder im FORM entsprechen.

Gibt es zum Beispiel in einem FORM ein INPUT-Feld mit dem Namen textfeld, so steht in PHP eine Variable $textfeld zur Verfügung, die den eingegeben Wert enthält.

Hier ein Beispiel:

Datei form.html:
---------------------
<form method="post" action="print.php">
<input type="text" name="textfeld" size="50">
<input type="submit" value="Abschicken" size="50">
</form>

Datei print.php
--------------------
Sie haben folgende Daten eingegeben:<br>
<? echo "textfeld = $textfeld"; ?>

L