Titelbild
Username: Passwort:   Bei jedem Besuch automatisch einloggen
  registrieren  Passwort vergessen?
Tutorials

PHP - Tutorial


Inhaltsverzeichnis

  1. Allgemeiner Hinweis
  2. Einleitung
  3. erste Schritte
  4. Hallo Welt! und Textausgabe
  5. Kommentare
  6. Variablen
  7. Formulare
  8. Rechenoperatoren
  9. Vergleichsoperatoren
  10. logische Operatoren
  11. if-Abfrage
  12. while-Schleife
  13. for-Schleife
  14. time(), date(), mktime()
  15. Arrays
  16. include
  17. Funktionen
PHP 5.3 + MySQL 5.1: Der Einstieg in die Programmierung dynamischer Websites

PHP 5.3 und MySQL 5.1


1. Allgemeiner Hinweis

Solltet ihr Fragen zu einem der folgenden Abschnitte haben, scheut euch nicht diese zu stellen. Meine email-Adresse findet ihr unter .kontakt. Ich werde versuchen sie dann so gut ich kann zu beantworten.

zurück zum Inhalt

2. Einleitung

Bei PHP handelt es sich um eine Scriptsprache, die auf dem Server ausgeführt wird. Stolpert ein Server vor dem Ausliefern einer HTML-Datei zum Browser des Users, der die Datei aufgerufen hat, über PHP-Code, interpretiert er diesen und liefert normalen HTML-Code aus.

Ein bedeutendes Feature von PHP ist, dass man damit auf mySQL-Datenbanken auf einem Server zugreifen kann. Datenbanken werden dabei immer dann verwendet, wenn es darum geht (große Mengen an) Daten abzuspeichern und ständig verfügbar zu halten. Zum Beispiel werden Beiträge und Userinformationen in Internet-Foren in Datenbanken abgelegt. Mit PHP ist es möglich diese Daten zu verwalten.
Aber auch sonst bietet PHP einige Features, die das Erstellen einer Homepage erleichtern. Allerdings kann man PHP-Dateien nicht mehr einfach über einen Doppelklick auf dem heimischen Computer testen, man benötigt einen Webserver, der PHP unterstützt. Im XAMPP-Tutorial könnt ihr euch angucken, wie ihr den Apache-Webserver so konfiguriert, dass ein Verzeichnis eurer Wahl auf eurem Heimrechner zum Wurzelverzeichnis eurer Homepage wird.
Auch bei eurem Webspace solltet ihr darauf achten, dass ihr PHP-Unterstützung habt. Im Tutorial Homepage online bringen hab ich mit Funpic einen Anbieter vorgestellt, der nicht nur PHP, sondern auch mySQL unterstützt. Funpic ist dabei völlig kostenlos, nur die eingeblendete Werbung nervt natürlich. (Wenn ihr euch über den Link auf Funpic anmeldet, bekomme ich übrigens Punkte gutgeschrieben, die irgendwann wohl zu Werbefreiheit führen. Wieviele Leute sich über diesen Link anmelden müssen, weiß ich allerdings nicht. Wenn ihr mir den Gefallen nicht tun wollt, könnt ihr auch über diesen Link dorthin gelangen.)

Ich gehe ab jetzt davon aus, das ihr eine Möglichkeit habt, den PHP-Code, den ihr schreiben werdet, auch zu testen, sei es lokal oder online über euren Anbieter. Optimal wäre das Einrichten eines Ordners auf eurer Festplatte, auf die im XAMPP-Tutorial beschriebene Weise. Ich werde im Folgenden von der Adresse test.local ausgehen. Wenn ihr online testet, ändert sich aber natürlich nicht viel für euch.

zurück zum Inhalt

3. erste Schritte

Im HTML - Tutorial haben wir gesehen, dass es auf die Dateiendung ankommt. Hat eine Datei die Endung .html oder .htm versucht unser Browser irgendwelche sinnvollen Seiten aus dem Inhalt zu parsen. Auch bei PHP spielt die Dateiendung eine wichtige Rolle. Für PHP-Dateien lautet diese (im Normalfall) .php. So merkt der Webserver, dass die Datei evtl. Informationen enthält, die von ihm vor dem Ausliefern zunächst interpretiert werden müssen.

Im Tutorial Homepage online bringen haben wir ja gelernt, dass es wichtig ist, dass eine Datei mit dem Namen index.html oder index.htm existiert, da der Browser diese Datei automatisch ausliefert, wenn unsere Homepage aufgerufen wird. Für Server, die PHP unterstützen, gilt dies auch für Dateien mit dem Namen index.php.

PHP-Dateien müssen übrigens nicht nur PHP-Code enthalten, es ist auch möglich sie mit ganz normalen HTML-Code zu füllen. Solltet ihr also bereits eine Homepage haben, könnt ihr eure Dateien auch einfach in "dateiname.php" umbenennen. dateiname entspricht dabei jeweils dem von euch gewählte Dateinamen, also ersetzt ihr z.B. den Namen index.html durch index.php.

Wenn ihr in einer Datei PHP-Code verwenden wollt, muss dieser als solcher kenntlich gemacht werden. Dies geschieht über die PHP-Klammern <?php und ?>. Alles was zwischen diesen beiden Klammern steht, wird vom Server als PHP interpretiert. Festhalten können wir schon mal, dass wieder ein einfacher Texteditor reicht, um PHP schreiben zu können.

zurück zum Inhalt

4. Hallo Welt! und Textausgabe

Lernt man eine Programmiersprache ist "Hallo Welt!" (oder englisch: "Hello World!") meistens das erste Programm, was man schreibt. Dies gilt nicht nur für PHP, sondern auch für mächtige Sprachen wie C++ oder Java. Die Popularität dieses Programms kann man am gleichnamigen Wikipedia-Artikel erkennen, der "Hallo Welt!" in vielen Programmiersprachen vorstellt.

Auch dieses Tutorial soll keine Ausnahme darstellen und daher fangen wir mit

<?php
  echo "Hello World!";
?>

an. Wie wir bereits wissen, muss PHP-Code in PHP-Klammern (<?php und ?>) stehen, damit der Server weiß, dass er tätig werden muss. Nun speichern wir den oberen Code in einer Datei namens hello.php in unserem Server-Ordner ab. Mit der Eingabe test.local/hello.php in die Adressleiste des Browser können wir die Datei nun aufrufen. Angezeigt wird nur: Hello World!.

Natürlich werden die PHP-Klammern auf der Seite nicht mit angezeigt, sie dienen ja nur dazu den PHP-Code zu kennzeichnen. "echo" sorgt für die Ausgabe in unserem Browser. Es ist grundsätzlich möglich beliebige Zeichenketten auf diese Weise auszugeben. Allerdings gibt es einige Zeichen, die man speziell kennzeichnen muss, da sonst nicht eindeutig ist, wie PHP diese interpretieren muss. Man spricht in diesem Zusammenhang von Escape-Sequenzen. Folgende Tabelle gibt einige Zeichen und ihre Escape-Sequenz an:

Zeichen Escape-Sequenz
' \'
" \"
\ \\
neue Zeile \n

Wenn man also z.B. einen Link mit PHP ausgeben möchte, muss das folgendermaßen geschehen:

<?php
  echo "<a href=\"http://www.google.de\">google</a>";
?>

Ein weiteres Beispiel ist das Angeben eines Bildes:

<?php
  echo "<img src=\"./xyz.gif\" alt=\"bildbeschreibung\">";
?>

Wie man sieht, wurde das Anführungszeichen (") jeweils durch seine Escape-Sequenz (\") ersetzt.

Nach allen Anweisungen steht in PHP grundsätzlich ein Semikolon (;)! Ein Weglassen führt zu einem Fehler, d.h. anstelle der gewünschten Ausgabe liefert PHP eine Fehlermeldung an den Browser aus, und der zeigt diese an. Das ist natürlich unschön und sollte vermieden werden.
Daher empfiehlt es sich den Code, den man schreibt, so oft wie möglich zu testen. Ich nutze dafür XAMPP. Auf diese Weise kann ich in dem Ordner entwickeln, den ich als virtuellen Host eingerichtet habe und kann meine Seite im Browser über "name.local" aufrufen. Wenn ich dann Änderungen an einer Datei vornehme, muss ich im Browser einfach nur F5 drücken, um die Seite zu aktualisieren und sehe sofort, ob sich versehentlich Fehler eingeschlichen haben. Lokal halte ich also immer eine exakte Kopie meiner Homepage, die ich im Internet veröffentlicht habe (abgesehen von aktuellen Datenbankeinträgen). Der Aufruf des PHP-Tutorials auf meiner Festplatte ist also über vidan.local/tuts/php_tut.php möglich. Natürlich müsst ihr für euch selbst herausfinden, wie ihr euch am besten organisiert. Nun zurück zum Thema :).

Ihr könnt in einer PHP-Datei auch einfach HTML verwenden oder HTML und PHP kombinieren, also beispielsweise so:

<html>
<head>
  <title>Meine erste PHP-Seite</title>
</head>
<body>
  <?php
    echo "<h1>Diese Überschrift erzeugt PHP ;)</h1>";
  ?>
</body>
</html>

Wenn das, was ihr ausgeben wollt, zu lang für eine Zeile wird, könnt ihr auch einfach in der nächsten Zeile weiterschreiben. Wenn ihr tatsächlich in PHP eine neue Zeile erzeugen wollt, müsst ihr die Escape-Sequenz \n benutzten. Diese fügt in euren Quelltext eine neue Zeile ein:

<?php
  echo "hier schreib ich total wichtigen Kram der einfach zu lang<br> für eine Zeile ist.
Daher schreib ich einfach in der nächsten Zeile weiter. jetzt will ich aber einen Zeilenumbruch im erzeugten Quelltext erzwingen\n Da nehm ich wohl das \\n. So komme ich auch in PHP in die nächste Zeile.

Juhu!";
?>

Wenn ihr bei Textausgaben einen Zeilenumbruch bei der Anzeige im Browser erzeugen wollt, könnt ihr natürlich <br> benutzen.
Hier die Browserausgabe:

hier schreib ich total wichtigen Kram der einfach zu lang
für eine Zeile ist. Daher schreib ich einfach in der nächsten Zeile weiter. jetzt will ich aber einen Zeilenumbruch im erzeugten Quelltext erzwingen Da nehm ich wohl das \n. So komme ich auch in PHP in die nächste Zeile. Juhu!

zurück zum Inhalt

5. Kommentare

In HTML haben wir Kommentare ja bereits kennengelernt. Sie dienten dem Programmierer dazu, sich in seinem (oder auch fremden) Code zurecht zu finden. Vom Browser werden Kommentare auch in PHP ignoriert, also nicht dargestellt. In HTML sahen sie so aus:

<!--das ist ein html-Kommentar-->

In PHP hat man mehrere Möglichkeiten, wie das folgende Beispiel zeigt:

<?php
  // ich bin ein einzeiliger Kommentar
  echo "hinter mir steht ein Kommentar<br>"; // Kommentar
  echo "hinter mir steht auch ein Kommentar<br>"; /* Kommentar */
  /*ich bin ein
  Kommentar,der über
  mehrere Zeilen geht*/
?>

Zu sehen ist davon nur das:

hinter mir steht ein Kommentar
hinter mir steht auch ein Kommentar

zurück zum Inhalt

6. Variablen

Variablen dienen dazu beliebige Werte abzuspeichern. Am Dollarzeichen ($) erkennt PHP, dass es sich um eine Variable handelt. Folgendes Beispiel zeigt, wie man Variablen Werte zuweist und diese ausgeben lässt:

<?php
  $zeichenkette = "ich bin eine Zeichenkette";
  $x = 24;
  // jetzt noch die Variablen-Werte ausgeben lassen
  echo "zeichenkette enthält den Wert ". $zeichenkette ."." ;
  echo "x enthält den Wert ". $x ."." ;
?>

Wie man sieht, kann man Variablen auch einfach per echo ausgeben lassen. Dabei muss man beachten, dass Variablen von den Zeichenketten, die man sonst ausgeben möchte, durch einen Punkt (oder Komma - verwende ich nicht) abgetrennt werden müssen. Der Punkt dient dazu Zeichenketten miteinander zu verbinden. Das kann man sich auch bei Variablen zu Nutze machen, wie das folgende Beispiel zeigt:

<?php
  $x = 24;
  $zeichenkette = "x = ".$x;
  echo $zeichenkette;
  $zeichenkette = "Alter Wert überschrieben!";
  echo $zeichenkette;
  // auf diese Weise kann ich noch etwas an die Zeichenkette ranhängen.
  $zeichenkette .= "Wert wird nicht überschrieben! Diese Zeichenkette wird einfach hinten dran gehängt!";
  echo $zeichenkette;
  // natürlich kann man auch $x einen neuen Wert zuweisen
  $x = 4;
  echo $x;
?>

Variablen sind z.B. dann gut, wenn man Elemente die man auf einer Seite ständig verwendet und die reltaiv lang sind, abkürzen möchte. In diesem Tutorial verwende ich zum Beispiel den "zurück zum Inhalt"-Link ständig. PHP kann man sich jetzt folgendermaßen zu nutzen machen:

<?php
  $BACK2TOP = "<p><a href=\"#inhalt\" class=\"back\">zurück zum Inhalt</a></p>";
  /* immer wenn ich jetzt einen "zurück zum Inhalt"-Link brauche, reicht es, wenn ich das schreibe*/
  //<?php echo $BACK2TOP; ?>
  //Also versuchen wir's mal:
  echo $BACK2TOP;
   /**
   * Ausgabe:
   *

zurück zum Inhalt

   *
   **/
  /*Ich habe "BACK2TOP" hier komplett groß geschrieben, weil ich damit andeuten will, dass es sich um eine Konstante handelt, der Inhalt der Variablen auf der Seite also nicht mehr verändert wird*/
?>

zurück zum Inhalt

7. Formulare

Formulare haben wir sicherlich alle schon mal benutzt. Suchmasken, Login-Fenster, Profilangaben, usw., all diese Eingabefelder sind Bestandteile von Formularen. Hier werden wir lernen, wie man Formulare erstellt und wie man die Eingabedaten mit PHP weiter verarbeiten kann.
Das folgende Beispiel zeigt ein Formular mit 2 Eingabefeldern (x und y), das beim Abschicken die Datei addXY.php aufruft. Der Inhalt dieser Seite ist weiter unten aufgeführt und sorgt dafür, dass die beiden Zahlen x und y addiert werden und das Ergebnis im Browser angezeigt wird. Hier zunächst der Inhalt der Datei form.php (eine .html-Endung wäre auch möglich, da die Datei keinen PHP-Code enthält!):

<!--Formular zum Addieren von zwei Zahlen x und y. Das Attribut "action" gibt an, welche Datei aufgerufen werden und die Formualerdaten erhalten soll -->
<form action="addXY.php" method="POST">
<!--erzeugt ein Textfeld in das x eingeben werden kann, der name wird gleich wichtig -->
Hier Wert für x eingeben: <input type="text" size="5" name="x"><br>
<!--erzeugt ein Textfeld in das y eingeben werden kann, der name wird gleich wichtig -->
Hier Wert für y eingeben: <input type="text" size="5" name="y"><br>
<!--erzeugt einen Knopf (Button) mit der Aufschrift addieren. Wird dieser Button geklickt wird das Formular abgesendet, d.h. die Datei addXY.php wird aufgerufen und die Daten werden an diese übermittelt.-->
<input type="submit" value="addieren">
</form>

Das einzige was jetzt noch unklar ist, ist das Attribut "method" und der Wert "POST".
Zunächst einmal gibt es zwei verschiedene Methoden Formularfelddaten an eine Datei (hier: addXY.php) zu senden. Die eine Variante ist eben "POST" und die andere wäre "GET".
Bei POST kann man beliebig viele Daten an die aufgerufende Datei schicken, bei GET ist diese Menge begrenzt. Die gesendeten Daten bekommt ein normaler User bei POST nicht zu sehen, bei GET stehen diese in der Adressleiste des Browsers. In diesem Fall sähe das so aus test.local/addXY.php?x=24&y=4
Wie man sieht werden die Formulardaten in diesem Fall einfach hinter einem Fragezeichen angehängt. Und zwar mit dem Namen, den wir für das Formularfeld definiert hatten und dem Wert. Hier bin ich davon ausgegangen, dass wir ins x-Feld 24 und ins y-Feld 4 eingetragen haben. Verbunden werden verschiedene Felder durch ein &-Zeichen.

Unser Formular ist jetzt also fertig und wir können uns der Datei addXY.php widmen:

<?php
  $x = $_POST["x"];
  $y = $_POST["y"];
  $ergebnis = $x + $y;
  echo "Das Ergebnis lautet: ".$ergebnis;
?>

Wie man sieht kann man mit $_POST["name"] auf die übermittelten Felder zurückgreifen und diese dann Variablen zuweisen. Im Falle von "GET" wäre $_GET["name"] der Weg, um an die Daten zu kommen. Das man mit Variablen auch Rechnen kann, so wie in diesem Fall, lernen wir eigentlich erst im nächsten Abschnitt kennen ;).

Hier können wir uns das Formular mal angucken und ein bisschen mit ihm rumspielen.
Natürlich kann der Benutzer in die Felder auch Werte eintragen, die keine Zahlen sind. In der Datei addXY.php müsste man die Eingabe also zunächst darauf testen, ob es sich tatsächlich um Zahlen handelt und andernfalls eine Meldung an den Benutzer ausgeben. Mit der if-Abfrage lernen wir später einen Baustein kennen, der soetwas ermöglicht.

Wie bereits erwähnt, werden Formulare auch verwendet um den Benutzername und das Passwort eines Users abzufragen. Hier geht man dann ähnlich vor, wobei in diesem Fall natürlich POST die Methode der Wahl ist, weil wohl niemand sein Passwort in der Adressleiste des Browser sehen möchte ;).

Erwähnen möchte ich hier noch, dass man die Adresse natürlich auch ohne ein Formular erweitern kann, um so Daten (z.B. Variablenwerte) von einer Seite zur anderen zu bringen. Das mache ich mir zum Beispiel bei meinem Gästebuch zu nutze:

<a href="http://pasdan.pa.funpic.de/gb/gaestebuch.php?seite=1">mein Gästebuch</a>

Auf diese Weise kenne ich innerhalb der Datei gaestebuch.php immer die aktuelle Seite (hier: seite=1) und kann so das Gästebuch dynamisch erzeugen. Was das genau heißt, werden wir im Tutorial über mySQL sehen, dass ich demnächst schreiben werde.

zurück zum Inhalt

8. Rechenoperatoren

In PHP kann man natürlich auch Rechnen. Folgende Operatoren stehen dafür zur Verfügung:

Operator Beispiel
+ echo $a + $b;
* echo $a * $b;
- echo $a - $b;
/ echo $a / $b;
% //Modulo
echo $a % $b;
++ //Inkrement
$a++;
-- //Dekrement
$a--;

Die ersten 4 Operatoren sind die ganz normalen Grundrechenarten (+ Plus, - Minus, * Mal, / Geteilt).
Das %-Zeichen entspricht der Modulo-Rechnung, diese gibt den Rest einer Division zweier ganzer Zahlen an. 10%4 (sprich: 10 modulo 4, oder 10 mod 4) macht also 2, 100%34 macht 32 und 10%10 macht natürlich 0.
Bei allen der bisher vorgestellten Operatoren können auch konstante Werte statt Varibalen benutzt werden:

Operator Beispiel
+ echo 80 + 19;
* echo 24 * 4;
- echo 4 - 24;
/ echo 2404 / 4;
% echo 424 % 19;

Die Inkrement- (++) und Dekrement-Operatoren (--) bilden da eine Ausnahme. Sie erhöhen bzw. verringern den Wert einer Variablen um 1 und sind somit abkürzende Schreibweisen für:

$a++; $a = $a + 1;
$a--; $a = $a - 1;

Es gibt weitere Möglichkeiten Zuweisungen abzukürzen. In folgender Tabelle habe ich diese mal aufgelistet:

kurze Version lange Version
$a += 1; $a = $a + 1;
$a -= 1; $a = $a - 1;
$a *= 1; $a = $a * 1;
$a /= 1; $a = $a / 1;
$a %= 1; $a = $a % 1;

Im Abschnitt über Variablen habe wir ja bereits den Operator für das Zusammenfügen von Zeichenketten kennengelernt:

$a = "Hallo ";
$a .= "Welt";
$a = "Hallo ";
$a = $a."Welt";

zurück zum Inhalt

9. Vergleichsoperatoren

Vergleichsoperatoren ermöglichen es (Variablen-)Werte miteinander zu vergleichen. Folgende Tabelle zeigt alle möglichen Vergleichsoperatoren auf:

Operator Beispiel Umgangssprachlich
== $a == $b Wert von $a ist gleich Wert von $b.
!= $a != $b Wert von $a ist ungleich Wert von $b.
>
>=
$a > $b
$a >= $b
Wert von $a ist größer (>) bzw.
größer oder gleich (>=) Wert von $b.
<
<=
$a < $b
$a <= $b
Wert von $a ist kleiner (<) bzw.
kleiner oder gleich (<=) Wert von $b.

Auf diese Weise lassen sich nicht nur Variablen miteinander vergleichen, sondern auch konstante Zahlenwerte und auch Zeichenketten (Strings).
Beispiele:

  1. "Hallo" == "hallo"
  2. 4 != 7
  3. $b <= 4
  4. $a > 24
  5. $wort == "Hallo Welt!"
  6. $wort != "Hallo Welt!"

Vergleichsoperatoren liefern immer das Ergebnis "wahr" (true) oder "falsch" (false). Das Ergebnis eines Vergleichsoperators gibt also den Wahrheitsgehalt der Aussage an, die man mit diesem Operator ausdrückt (vgl. Spalte "Umgangssprachlich" in der oberen Tabelle).
Das zweite Beispiel liefert sicherlich true, weil 4 nunmal ungleich 7 ist.
Eines der Beispiele 5 oder 6 wird ebenfalls true leifern, da das Wort $wort entweder gleich "Hallo Welt!" ist oder eben nicht (Vorrausgesetzt es wird zwischen diesen Vergleichen, der Inhalt der Variable $wort nicht mehr verändert!).

Eine Aussage der Form "$a op $b" nennen wir Ausdruck, wobei op für einen der Vergleichsoperatoren steht. $a und $b können, wie oben bereits erwähnt, auch konstante Werte sein.

Bisher ist euch wahrscheinlich noch nicht wirklich klar, wofür wir das Ganze eigentlich brauchen. Wir erarbeiten uns in diesem und dem nächsten Abschnitt jedoch die Theorie, die wir für die darauf folgenden Abschnitte benötigen. Also bitte noch ein bisschen Geduld.

zurück zum Inhalt

>> Fortsetzung: Seite 2 <<

© 2007-2017 Daniel Pasqua
kontakt inhalt info