Einf¨uhrung in die Skriptsprache PHP

Werbung
Einführung in die Skriptsprache PHP
Materialien zum NLI-Kurs 02.44.78
Version: 02-10-27
Einführung in PHP
In a world without fences who needs gates?“
”
Vorwort
Das Skript geht auf ein Vorlesungsskript von Alfred Wassermann, Uni Bayreuth, zurück. Es wurde für den
NLI-Kurs in wesentlichen Teilen überarbeitet und erweitert.
Die im Skript erwähnten Software- und Hardwarebezeichnungen sind in den meisten Fällen auch eingetragene Warenzeichen und unterliegen als solche den gesetzlichen Bestimmungen.
Das Skript wurde mit LATEX unter Verwendung des Makropackets pdfLATEX erstellt.
I
Inhaltsverzeichnis
1
2
3
Grundlagen, Variablen, Wiederholungen
1
1.1
Skriptsprache PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
PHP-Befehle in HTML einbetten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3
Unser erster PHP-Befehl! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.4
Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.5
Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.6
Vordefinierte Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.7
Einfache Rechenoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.8
Erste Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.9
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
Kontrollstrukturen, Dateioperationen
1
2.1
Weitere Befehle zur Ablaufkontrolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
2.2
Fallunterscheidungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2.3
Weitere Vergleichsmöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.4
Nochmals vordefinierte Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.5
Dateien hinzuladen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.6
Dateien lesen und schreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.7
Aufgaben zur Vorlesung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
Funktionen, Cookies, variable Variablen
1
3.1
Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
3.2
Vordefinierte Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
3.3
String-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
3.4
Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.5
Exkurs: Variable Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.6
Exkurs: Arrays aus Formularen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.7
Aufgaben zur Vorlesung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
II
Einführung in PHP
4
INHALTSVERZEICHNIS
Zugriff auf Datenbanken
1
4.1
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
4.2
Zugriff auf Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
4.3
SQL-Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
4.4
SQL-Befehle mit PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
4.5
Ein weiterer SQL-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
4.6
Aufgaben zur Vorlesung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
4.7
Fallaufgabe Elektronikversand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
A NLI-Kurs
1
A.1 Rechner-Umgebung NLI-Kurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
A.2 Loginparameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
A.3 Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
B Zugriff auf Access-Datenbanken mit PHP
4
B.1 Vorbereitung der Datenquelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
B.2 Zugriff auf Access-Datenbank mit Skript . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
III
Einführung in PHP
Vorlesung 1: Grundlagen, Variablen, Wiederholungen
Vorlesung 1
Grundlagen, Variablen, Wiederholungen
1.1
Skriptsprache PHP
PHP ist eine Skriptsprache, deren Befehle direkt in HTML-Seiten eingebettet werden, d. h. der Autor
schreibt PHP-Befehle zusammen mit HTML-Befehlen in eine Datei. Wird diese Datei von einem Betrachter angefordert, so werden diese PHP-Befehle von einer Zusatzsoftware“ des Webservers Schritt für Schritt
”
ausgeführt und die Ergebnisse als HTML-Dokument an den Betrachter weitergeleitet.
2)
1)
PHP-Dateien
3)
Webserver
PHPPreprocessor
8)
HTML
6)
7)
4)
5)
Datenbank
Achtung: Der Webserver muß PHP“-fähig sein. Standardmäßig funktionieren diese Befehle nicht. Welt”
weit bieten nahezu alle Hosting-Provider inzwischen Pakete an, die die Benutzung von PHP zulassen.
Je nach Installation interpretiert die PHP-Zusatzsoftware nur Dateien mit der Endung .php “, häufig aber
”
auch Dateien mit der Endung .php3 , .php4 , .phtml “. Es ist aber (bei entsprechender Konfiguration des
”
Webservers) auch möglich, PHP-Befehle in Dateien mit den Endungen .html “ oder .htm “ einzubetten.
”
”
PHP wird seit etwa 1994 entwickelt und erfreut sich stetig wachsender Beliebtheit, Eine die besondere
Stärke der Skriptsprache PHP ist die problemlose Einbindung verschiedener Datenbanken.
Die Sprache ist in ihrer Syntax an C, Java und Perl angelehnt.
Vorlesung 1 - 1
Einführung in PHP
1.2
Vorlesung 1: Grundlagen, Variablen, Wiederholungen
PHP-Befehle in HTML einbetten
PHP-Befehle werden in HTML-Dokumente eingebettet, indem für sie besondere Skriptbereiche abgegrenzt
werden.
Hierfür ein Beispiel:
<!doctype html public ” −//W3C / / DTD HTML 4 . 0 / / EN”>
<html>
<head>
<title>PHP-Beispiel</title>
</head>
<body>
<?php
echo ” H a l l o W e l t ”;
?>
</body>
</html>
Es gibt vier alternative Möglichkeiten, PHP-Skriptbereiche in einem HTML-Dokument abzugrenzen.
<? ... ?>
<?php ... ?>
<script language=”php”> ... </script>
<% ... %>
... “ steht hier für beliebige PHP-Befehle.
”
Es wird allgemein empfohlen die Form
<?php ... ?>
zu benutzen, da diese XML-konform und damit dauerhaft Unterstützung erfahren wird.
1.3
Unser erster PHP-Befehl!
Der echo-Befehl gibt Texte (sogenannte Strings) aus:
<?php
echo ” H a l l o ”;
?>
Alternativ ist auch die folgende Syntax zulässig:
<?php
echo( ” H a l l o ” );
?>
Das gleiche Ausgaberesultat erzielen Sie im Übrigen auch mit der print -Funktion, die Bestandteil der
mehrere hundert vordefinierte Funktionen umfassenden PHP-Standardbibliothek ist.
Vorlesung 1 - 2
Einführung in PHP
Vorlesung 1: Grundlagen, Variablen, Wiederholungen
<?php
print( ” H a l l o ” );
?>
Merke: Alle PHP-Befehle werden mit einem Semikolon ( ; “) abgeschlossen.
”
Es gibt eine Reihe von Sonderzeichen, die Sie in Strings verwenden können. Wichtigstes Sonderzeichen:
\n “ = Zeilenumbruch. C- oder Perl-Kennern sind diese Zeichen natürlich vertraut.
”
echo ” H a l l o \n”;
echo ” H a l l o \n”;
Man beachte dabei den Unterschied zu
echo ” H a l l o <BR>”;
echo ” H a l l o <BR>”;
Im ersten Fall wird lediglich im vom Webserver ausgelieferten HTML-Quelltext ein Zeilenumbruch durchgeführt. Im zweiten Fall enthält der HTML-Quelltext den HTML-Befehl zum Zeilenumbruch, der im Ausgabefenster des Browsers umgesetzt wird.
1.4
Variablen
Um sinnvolle Anwendungen erstellen zu können, benötigen wir Variablen, in denen Daten temporär abgelegt werden können.
Merke: Alle Variablennamen beginnen in PHP mit dem Dollarzeichen ( $ “).
”
$text = ” I c h b i n e i n S t r i n g ! ”;
echo $text;
echo $text,$text,$text;
$l = ” l a n g e r ”;
$k = ” k u r z e r ”;
echo ” I c h b i n e i n $l$l$l$l$l$l T e x t ! ”;
echo ” I c h b i n e i n $k T e x t ! ”;
$i = 10;
$j = 5;
echo $i,”+”$j,”=”,$i+$j;
Der Typ der Variablen (ganze Zahl, Gleitpunktzahl, String) wird je nach Verwendung von PHP automatisch
bestimmt. Der Benutzer braucht sich darum nur in Spezialfällen kümmern.
1.5
Arrays
In vielen Anwendungsfällen ist es von Vorteil, Daten nicht in vereinzelten Variablen abzulegen, sondern
sie in zusammengehörigen Datenfeldern, sogenannten Arrays, zu speichern.
PHP unterstützt von Haus aus skalare und assoziative Arrays.
Vorlesung 1 - 3
Einführung in PHP
Vorlesung 1: Grundlagen, Variablen, Wiederholungen
Beispiel für einen skalaren Array:
/* Deklaration eines
$text[0] = ” D i e s i s t
$text[1] = ” D i e s i s t
$text[2] = ” D i e s i s t
skalaren Arrays */
d i e e r s t e Z e i l e . ”;
d i e z w e i t e Z e i l e . ”;
d i e d r i t t e Z e i l e . ”;
/* Ausgabe */
echo $text[0].”<br >\n”;
echo $text[1].”<br >\n”;
echo $text[2].”<br >\n”;
Alternative Deklarationen ohne explizite Indexierung der Datenfelder:
/* Deklaration eines skalaren Arrays ohne explizite Indexierung */
$text[] = ” D i e s i s t d i e e r s t e Z e i l e . ”;
$text[] = ” D i e s i s t d i e z w e i t e Z e i l e . ”;
$text[] = ” D i e s i s t d i e d r i t t e Z e i l e . ”;
/* Ausgabe */
echo $text[0].”<br >\n”;
echo $text[1].”<br >\n”;
echo $text[2].”<br >\n”;
Möglich ist auch die Erzeugung eines Arrays mit Hilfe der array -Funktion:
/* Deklaration eines skalaren Arrays mit der array-Funktion */
$text = array( ” D i e s i s t d i e e r s t e Z e i l e . ”,
” D i e s i s t d i e z w e i t e Z e i l e . ”,
”Dies i s t die d r i t t e Z e i l e . ”
);
/* Ausgabe */
echo $text[0].”<br >\n”;
echo $text[1].”<br >\n”;
echo $text[2].”<br >\n”;
Beispiel für einen assoziativen Array:
/* Deklaration eines assoziativen Arrays */
$text[” Z e i l e A”] = ” D i e s i s t d i e e r s t e Z e i l e . ”;
$text[” Z e i l e B”] = ” D i e s i s t d i e z w e i t e Z e i l e . ”;
$text[” Z e i l e C”] = ” D i e s i s t d i e d r i t t e Z e i l e . ”;
/* Ausgabe */
echo $text[” Z e i l e A”].”<br >\n”;
echo $text[” Z e i l e B”].”<br >\n”;
echo $text[” Z e i l e C”].”<br >\n”;
Auch in diesem Fall ist eine Deklaration mit der array -Funktion möglich:
/* Deklaration eines assoziativen Arrays mit der array-Funktion */
$text = array( ”X” => ” D i e s i s t d i e e r s t e Z e i l e . ”,
”A” => ” D i e s i s t d i e z w e i t e Z e i l e . ”,
”H” => ” D i e s i s t d i e d r i t t e Z e i l e . ”
);
/* Ausgabe */
echo $text[”H”].”<br >\n”;
echo $text[”A”].”<br >\n”;
echo $text[”X”].”<br >\n”;
Vorlesung 1 - 4
Einführung in PHP
1.6
Vorlesung 1: Grundlagen, Variablen, Wiederholungen
Vordefinierte Variablen
Da PHP speziell zur Erzeugung von dynamischen Webseiten geschaffen wurde, ist es sehr leicht, Eingaben,
die aus HTML-Formularen stammen, zu bearbeiten.
Ein Beispiel:
Die Formulardatei enthalte:
<FORM ACTION=” t u w a s . php” METHOD=POST>
<INPUT NAME=” b e l i e b i g e r n a m e ”>
<INPUT TYPE=” s u b m i t ”>
</FORM>
Der HTML-Formular-Kenner sieht sofort: Beim Klicken auf den Submit-Button wird also die Datei tu”
was.php“ aufgerufen. Diese Datei könnte dann so aussehen:
<?php
echo ” S i e haben {$beliebigername} e i n g e g e b e n . ”;
?>
Zulässig ist in diesem Fall (Aufruf einer Einzelvariablen in Textstring) auch die vielen Programmierern aus
anderen Skriptsprachen vertraute nachlässige Schreibweise:
<?php
echo ” S i e haben $beliebigername e i n g e g e b e n . ”;
?>
Kurz gesagt: der Text, der in das Formularfeld beliebigername “ eingegeben wurde, ist automatisch in
”
einer entsprechenden PHP-Variablen $beliebigername “ enthalten, die dem Skript übergeben wird.
”
Achtung: Ab der PHP-Version 4.1 werden Variablen beim Aufruf eines PHP-Skripts aus einer FORMUmgebung nicht mehr standardmäßig als vordefinierte Variablen übernommen. Dieser Mechanismus muß
in der INI-Datei von PHP ausdrücklich aktiviert werden, was viele Provider aus Sicherheitsgründen aber
ablehnen.
Statt dessen werden Variablen aus GET- und POST-Aktionen in den vordefinierten Arrays $ REQUEST,
$ GET. $ POST bereit gestellt.
Das obige Beispiel muss dann wie folgt abgewandelt werden:
<?php
echo ” S i e haben {$_REQUEST [ ”beliebigername” ] } e i n g e g e b e n . ”;
?>
Oder aber noch spezifischer:
<?php
echo ” S i e haben {$_POST [ ”beliebigername” ] } e i n g e g e b e n . ”;
?>
GET-Aktionen können auch über den direkten Aufruf eines PHP-Skripts mit Parameterübergabe ausgelöst
werden.
Beispielsweise bewirkt der Skript-Aufruf http://localhost/tuwas.php?beliebigername=Hallo
”
Leute “ bei entsprechender Auswertung im PHP-Skript als GET-Aktion ein den obigen Beispielen entsprechendes Ergebnis.
Vorlesung 1 - 5
Einführung in PHP
1.7
Vorlesung 1: Grundlagen, Variablen, Wiederholungen
Einfache Rechenoperationen
Folgende Rechenoperationen stehen in PHP zur Verfügung:
Operator
+:
-:
*:
/:
%:
Beschreibung
Addition
Subtraktion
Multiplikation
Division
Reste-Bildung
.:
Verknüpft zwei Zeichenketten (Strings)
Beispiel
$i+$j
$i-$j
$i*$j
$i/$j
$i%$j
Erläuterung
z. B. 23%17 ergibt 6, da 23 geteilt
durch 17 gleich 1 Rest 6 ist.
Die Befehle
$l = ” l a n g e r ”;
$k = ” k u r z e r ”;
echo $l.$k;
ergeben die Ausgabe von langerkurzer“.
”
Dazu kommen noch ein paar Abkürzungen, um dem Programmierer das Leben zu erleichtern:
Der Unterschied zwischen $i++ und ++$i ist:
$i=0;
echo $i++;
gibt 0 aus, anschließend wird $i auf den Wert 1 erhöht.
$i=0;
echo ++$i;
erhöht zuerst $i auf 1 und gibt den Wert 1 aus.
1.8
Erste Schleifen
Gleich ein Beispiel:
$t = ” I c h s o l l m e i n e U e b u n g s a u f g a b e n s e l b s t e r s t e l l e n !<BR>\n”;
$i = 0;
while ($i < 10) {
echo $t;
$i++;
}
Hier wird 10-mal der Text in der Variablen $t ausgegeben. Zu Beginn wird $i auf 0 gesetzt. $i wird in
jedem Schleifendurchlauf um 1 erhöht, bis $i den Wert 10 erreicht. Dann ist die Bedingung ($i < 10)
nicht mehr wahr und die Schleife bricht ab.
1.9
Aufgaben
1. Schreiben Sie ein Dokument, die einen PHP-Befehl enthält, der den Text: Romanes eunt domus“
”
ausgibt.
Vorlesung 1 - 6
Einführung in PHP
Vorlesung 1: Grundlagen, Variablen, Wiederholungen
2. Erstellen Sie eine PHP-Datei, welche die angegebene Adresse in einem skalaren Array speichert und
anschließend auf dem Bildschirm ausgibt.
Name:
Vorname:
Anschrift:
PLZ:
Ort:
Meier
Wolfgang
Waldweg 13
12345
Testburg
3. Weisen Sie die o. g. Adressdaten mithilfe der array -Funktion einem assoziativen Array zu. Geben
Sie die Adresse anschließend auf dem Bildschirm aus.
4. Schreiben Sie eine HTML-Seite, auf der 1000-mal Romanes eunt domus“ richtig geschrieben steht.
”
5. Schreiben Sie ein HTML-Formular, in das man eine Zahl eingeben kann. Klickt man auf Abschicken,
wird so oft der Text aus Aufgabe 3 ausgegeben, wie diese Zahl angibt.
6. Schreiben Sie ein Formular, in das zwei Zahlen eingegeben werden können. Klickt man auf Abschicken, so sollen diese Zahlen miteinander multipliziert und das Ergebnis auf einer Webseite ausgegeben werden.
Vorlesung 1 - 7
Einführung in PHP
Vorlesung 2: Kontrollstrukturen, Dateioperationen
Vorlesung 2
Kontrollstrukturen, Dateioperationen
2.1
Weitere Befehle zur Ablaufkontrolle
Im vorherigen Kapitel haben wir die erste Möglichkeit kennengelernt, eine Programm-Schleife zu erzeugen. Statt
$t = ” I c h s o l l m e i n e U e b u n g s a u f g a b e n s e l b s t e r s t e l l e n !<BR>\n”;
$i = 0;
while ( $i < 10 ) {
echo $t;
$i++;
}
kann man aber auch schreiben:
$t = ” I c h s o l l m e i n e U e b u n g s a u f g a b e n s e l b s t e r s t e l l e n !<BR>\n”;
$i = 0;
do {
echo $t;
$i++;
} while ( $i < 10 );
Gibt es einen Unterschied?
Man bemerkt den Unterschied, wenn z. B. statt $i=0; “ zu Beginn $i=10; “ gesetzt wird. Im ersten Fall
”
”
ist die Bedingung ($i < 10) “ nicht wahr und die Befehle innerhalb der geschweiften Klammern werden
”
nicht ausgeführt.
Im zweiten Fall werden zuerst die Befehle innerhalb der geschweiften Klammern ausgeführt, danach wird
getestet, ob die Bedingung ($i<10) “ erfüllt ist. Dies ist nicht der Fall, also wird abgebrochen. D. h. aber,
”
die Schleife wird mindestens einmal durchlaufen.
Eine weitere Möglichkeit, eine Schleife zu programmieren, ist der for -Befehl. Gleich ein Beispiel:
$t = ” I c h s o l l m e i n e U e b u n g s a u f g a b e n s e l b s t e r s t e l l e n !<BR>\n”;
for ( $i=0; $i < 10; $i++ ) {
echo $t;
}
Der for -Befehl besteht aus drei Ausdrücken.
for ( ausdruck1; ausdruck2; ausdruck3) { ... }
Mit ausdruck1 “ wird die Schleife initialisiert, d. h. normalerweise wird die Variable, die die Schleifen”
durchläufe zählt, auf den Anfangswert gesetzt.
ausdruck2 “ gibt die Abbruchbedingung für die Schleife an.
”
In ausdruck3 “ wird die Variable, die die Schleifendurchläufe zählt, erhöht bzw. erniedrigt.
”
Der for -Befehl hat den Vorteil, dass alle zur Kontrolle der Schleife nötigen Befehle in einer Zeile stehen.
Vorlesung 2 - 1
Einführung in PHP
Vorlesung 2: Kontrollstrukturen, Dateioperationen
Ein weiteres Beispiel, diesmal wird heruntergezählt.
$t = ” I c h s o l l m e i n e U e b u n g s a u f g a b e n s e l b s t e r s t e l l e n !<BR>\n”;
for ( $i=10; $i > 0; $i-- ) {
echo $t;
}
Im Zusammenhang mit der Auswertung von Arrays ist die foreach -Schleife häufig nützlich.
Beispiel 1:
/* Deklaration eines skalaren Arrays mit der array-Funktion */
$text = array( ” D i e s i s t d i e e r s t e Z e i l e . ”,
” D i e s i s t d i e z w e i t e Z e i l e . ”,
”Dies i s t die d r i t t e Z e i l e . ”
);
/* Ausgabe mit foreach-Schleife */
foreach( $text as $zeile ){
echo $zeile.”<br >\n”;
}
Beispiel 2:
/* Deklaration eines assoziativen Arrays mit der array-Funktion */
$text = array( ”X” => ” D i e s i s t d i e e r s t e Z e i l e . ”,
”A” => ” D i e s i s t d i e z w e i t e Z e i l e . ”,
”H” => ” D i e s i s t d i e d r i t t e Z e i l e . ”
);
foreach ($text as $key => $value) {
echo ” S c h l ü s s e l : $key ; Wert : $value<br >\n”;
}
2.2
Fallunterscheidungen
Zur Fallunterscheidung (= bedingte Verzweigung) gibt es in PHP den if -Befehl:
if ($i < 0) {
echo ”$i i s t k l e i n e r a l s N u l l \n”;
}
oder auch
if ($i
echo
} else
echo
}
< 0) {
”$i i s t k l e i n e r a l s N u l l \n”;
{
”$i i s t n i c h t k l e i n e r a l s N u l l \n”;
Man kann diesen Befehl auch nach dem folgendn Muster schachteln:
if ( $i < 0 ) {
echo ”$i i s t k l e i n e r a l s N u l l \n”;
} else if ( $i > 0 ) {
echo ”$i i s t g r o e s s e r a l s N u l l \n”;
} else {
Vorlesung 2 - 2
Einführung in PHP
Vorlesung 2: Kontrollstrukturen, Dateioperationen
echo ”$i i s t N u l l \n”;
}
Hat man mehrere Tests der gleichen Variablen vorzunehmen, so läßt sich mit dem switch -Befehl evtl.
Arbeit einsparen:
switch ($name) {
case ” H e i n r i c h ”:
echo ” I c h b i n d e r k l u g e H e i n r i c h ”;
break;
case ”Hans”:
echo ” I c h b i n d e r dumme Hans”;
break;
case ” A g a t h e ”:
echo ” I c h b i n d i e A g a t h e und k l ü g e r a l s H e i n r i c h und Hans”;
break;
default:
echo ”Wir s i n d d e r R e s t ”;
}
Falls die Variable $name den Wert Hans“ hat, wird als nächster Befehl
”
echo ” I c h b i n d e r dumme Hans”;
ausgeführt. Normalerweise würden dann alle nachfolgenden Befehle ausgeführt werden, u. a.
echo ” I c h b i n d i e A g a t h e und k l ü g e r a l s H e i n r i c h und Hans”;
Dies ist meist nicht erwünscht, man springt deshalb mit der Anweisung break “ aus dem switch -Befehl
”
heraus.
2.3
Weitere Vergleichsmöglichkeiten
Bisher konnten wir testen, ob $i < 10 “ oder $i > 10 “ gilt.
”
”
Es gibt aber natürlich noch mehr Möglichkeiten:
$i
$i
$i
$i
==
!=
>=
<=
10 :
10 :
10 :
10 :
Ist $i
Ist $i
Ist $i
Ist $i
gleich 10?
ungleich 10?
größer oder gleich 10?
kleiner oder gleich 10?
Man kann auch durch den Einsatz der Logik-Operatoren && “ (= UND-Verknüpfung) bzw. || “ (= ODER”
”
Verknüpfung) beliebig kombinieren:
($i == 10) && ($j > 0) :
($i == 10) || ($j == 0) :
2.4
Ist $i gleich 10 und $j größer als 0?
Ist $i gleich 10 oder $j gleich 0?
Nochmals vordefinierte Variablen
Wir haben gelernt, dass in einer PHP-Datei, die aus einem Formular gestartet wird, die Namen der
Formular-Elemente als Variablen zur Verfügung stehen. Dies kann man nützen, um Formular und Befehle,
die das Formular behandeln, in eine einzige Datei zu schreiben:
Vorlesung 2 - 3
Einführung in PHP
Vorlesung 2: Kontrollstrukturen, Dateioperationen
Angenommen unsere Datei form.html“ enthält folgendes Formular:
”
<FORM ACTION=” f o r m . php” METHOD=POST>
<INPUT NAME=” b e l i e b i g e r n a m e ”>
<INPUT TYPE=” s u b m i t ”>
</FORM>
Dann ruft sich beim Klicken auf den Schaltknopf submit“ die Datei selbst auf. Allerdings ist beim Zwei”
taufruf die Variable $beliebigername “ Name gesetzt.
”
Dies können wir folgendermaßen ausnützen, um Anfrage und Antwort in einem Skript abzuwickeln:
<?php
if (isset($beliebigername)) {
echo ” S i e haben $beliebigername e i n g e g e b e n \n”;
}
?>
<P>
<FORM ACTION=” f o r m . php” METHOD=POST>
<INPUT NAME=” b e l i e b i g e r n a m e ”>
<INPUT TYPE=” s u b m i t ”>
</FORM>
Wird die Datei zum ersten Mal aufgerufen, d. h. ohne daß man auf den Submit-Button klickt, so ist die Variable $beliebigername nicht gesetzt, der Ausdruck isset($beliebigername) ist also nicht wahr.
Füllt man das Formular dann aus und klickt auf submit“, so ist die Variable gesetzt, Die Bedingung is”
”
set($beliebigername) “ ist wahr, und es wird Sie haben $beliebigername eingegeben
”
n“ ausgegeben.
Will man danach die Skriptauswertung abbrechen, so sollte der Befehl
exit;
verwendet werden.
2.5 Dateien hinzuladen
Der Befehl
include(” d a t e i n a m e ”);
liest den Inhalt der Datei dateiname so, als ob er an dieser Stelle stehen würde. Damit kann z. B. sehr
leicht ein einheitliches Layout bei einer größeren Anzahl von Dateien erreicht werden.
Beispiel:
1
2
3
4
5
6
7
8
9
10
<?php
$kopf=” v o r l a g e n / k o p f b e r e i c h . t p l ”;
$fuss=” v o r l a g e n / f u s s b e r e i c h . t p l ”;
?>
<!doctype html public ” −//W3C / / DTD HTML 4 . 0 / / EN”>
<html>
<head>
<title>Titel hier</title>
</head>
Vorlesung 2 - 4
Einführung in PHP
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2.6
Vorlesung 2: Kontrollstrukturen, Dateioperationen
<body>
<?php
if( file_exists( $kopf
include( $kopf );
}
) ){
?>
<p>
Hier steht nun der Hauptteil des Dokuments.
</p>
<?php
if( file_exists( $fuss ) ){
include( $fuss );
}
?>
</body>
</html>
Dateien lesen und schreiben
Wir wollen nun von Dateien, die auf dem Server liegen, lesen, bzw. in diese Dateien etwas hineinschreiben.
Dies ist nützlich, um z. B. Zähler oder Gästebücher zu erzeugen.
Wichtig:
Aus Sicherheitsgründen ist der Webserver auf Systemen, die von mehreren Usern genutzt werden, i. d. R.
einem besonderen Benutzer auf dem Server-Computer zugeordnet, der sehr wenig Rechte hat. U. a. darf er
nicht einfach in eine Datei in einem User-Verzeichnis schreiben. Genausowenig darf er eine Datei in einem
User-Verzeichnis erzeugen.
Um eine für Schreibaktionen durch den Webserver freigegebene Datei xxx “ zu erzeugen, müssen Sie auf
”
Serversystemen folgendermaßen vorgehen:
Verwenden Sie z. B. das Programm ws ftp unter Windows, so kann man im ftp-Programm die Datei
anwählen, auf die rechte Maustaste klicken und dann den Befehl chmod verwenden.
Steht der Befehl chmod nicht per Mausklick zur Verfügung, so kann man die Rechte dennoch mit einem
ftp-Befehl eingeben: Der Befehl lautet
site chmod xyz DATEINAME
x, y, z sind 3 Ziffern, die die Rechte für den Datei-Eigentümer, die Benutzergruppe des Datei-Eigentümers
(das sind üblicherweise alle anderen Benutzer auf dem Computer) und den Rest der Welt bestimmen.
Dabei gilt: Jede der 3 Ziffern liegt zwischen 0 und 7.
0 bedeutet:
1 bedeutet:
2 bedeutet:
4 bedeutet:
keinerlei Zugriffsrecht.
Ausführrecht (wichtig bei Programmen und Verzeichnissen).
Schreibrecht (was gleichzeitig auch L̈öschrechtïst).
Leserecht.
Der Clou an der Sache ist, dass die Zahlen addiert werden können: Will man einer Datei Lese- und Schreibrecht zuordnen, so ist die Zahl 2+4=6 anzugeben.
Vorlesung 2 - 5
Einführung in PHP
Vorlesung 2: Kontrollstrukturen, Dateioperationen
Beispiele:
site chmod 777 DATEINAME
gibt jedem das Recht, alles mit der Datei DATEINAME anzustellen.
site chmod 754 DATEINAME
bedeutet, der Eigentümer darf alles mit der Datei anstellen, die Gruppe des Eigentümers darf die Datei
ausführen und lesen, der Rest darf die Datei nur lesen.
Achtung: Der Webserver läuft normalerweise unter dem User nobody“, ist also weder der Eigentümer
”
noch gehört er zur Gruppe des Eigentümers.
OK. Gehen wir davon aus, dass wir nun eine Datei mit dem Namen xxx “ haben, deren Inhalt wir lesen
”
wollen.
Zuerst müssen wir die Datei öffnen, dabei muß angegeben werden, was mit der Datei geschehen soll:
Wollen wir lesen, schreiben, anhängen,...
Der PHP-Befehl lautet
$datei = fopen(” x x x ”,” r ”);
Das heißt, wir öffnen die Datei mit dem Namen xxx und wollen darin lesen ("r" ). Die technischen Details
lassen wir dabei von der Variablen $datei regeln, d. h. wenn wir später aus der Datei lesen wollen, so
benützen wir die Variable $datei .
Nun lesen wir zeilenweise den Inhalt der Datei, und zwar so lange, bis wir ans Ende der Datei gelangt sind:
while (!feof($datei)) {
$zeile = fgets($datei,1000);
echo $zeile;
}
feof($datei) “ ist wahr, sobald wir an das Datei-Ende gelangt sind.
$zeile =
”
”
fgets($datei,1000); “ liest maximal die nächsten 1000 Zeichen, hört aber auf, sobald eine
neue Zeile beginnt, oder das Ende der Datei erreicht ist. echo $zeile; “ gibt einfach das Gelesene
wieder aus.
”
Schließlich muß die Datei noch geschlossen werden:
fclose($datei);
Folgende Möglichkeiten gibt es, eine Datei zu öffnen:
"r" :
"r+" :
"w" :
"w+" :
"a" :
"a+" :
nur lesen, begonnen wird am Dateianfang.
lesen und schreiben, begonnen wird am Dateianfang.
nur schreiben. Existiert die Datei bereits, wird der bisherige Inhalt
gelöscht. Existiert sie nicht, wird versucht, sie zu erzeugen.
lesen und schreiben. Ansonsten wie "w" .
nur schreiben. Begonnen wird am Ende der Datei (a wie append,
anhängen). Existiert sie nicht, wird versucht. sie zu erzeugen.
lesen und schreiben. Ansonsten wie "a" . Achtung: Es wird beim Lesen
natürlich auch am Ende der Datei begonnen (dort steht natürlich nichts
mehr...)
Mit dem Befehl
Vorlesung 2 - 6
Einführung in PHP
Vorlesung 2: Kontrollstrukturen, Dateioperationen
fwrite($datei, ” E i n T e x t ”);
kann der String Ein Text“ in die Datei geschrieben werden.
”
2.7
Aufgaben zur Vorlesung
1. Lassen Sie alle Schlüssel und Werte des vordefinierten assoziativen Arrays $ SERVER als HTMLSeite mit Hilfe der foreach -Funktion ausgeben.
2. Schreiben Sie einen einfachen Rechner, der mit Hilfe der bedingten Verzweigung (if-else bzw.
switch ) die vier arithmetischen Grundrechenarten Addition, Subtraktion, Multiplikation und Division für zwei in ein Formular einzugebende Zahlen umsetzt.
3. Ändern Sie die Lösung von Aufgabe 5 aus Vorlesung 1 so, dass nur noch eine Datei benötigt wird.
4. Schreiben Sie ein Gästebuch. D. h. der Benutzer kann in einem Formular einen Text eingeben. Dieser
Text wird dann an eine Datei angehängt, die ausgegeben wird.
5. Schreiben Sie mit PHP einen Zähler (Counter) für eine Seite.
Lösungshilfe:
Beim Aufruf der Seite wird eine Datei geöffnet. Die darin enthaltene Zahl wird nun gelesen, ausgegeben, um 1 erhöht und wieder in die Datei zurückgeschrieben.
6. Schreiben Sie ein PHP-Skript, mit dem dynamisch verschiedene Inhalte geladen und in einem festen
Seitenlayout dargestellt werden können.
Lösungshilfe:
Schreiben Sie eine HTML-Seite mit vordefiniertem Kopf- und Fussteil. Laden Sie durch Übergabe
im Array $ GET dynamisch die Inhalte aus anderen Dateien unter Benutzung der include-Funktion
in den Mittelteil der Ausgabe.
Vorlesung 2 - 7
Einführung in PHP
Vorlesung 3: Funktionen, Cookies, variable Variablen
Vorlesung 3
Funktionen, Cookies, variable Variablen
3.1
Funktionen
Ein wichtiger Bestandteil einer jeden modernen Programmiersprache ist die Fähigkeit, mehrere Anweisungen zu einem einzigen Befehl zusammenzufassen, d. h. neue Funktionen zu definieren (benutzerdefinierte
Funktionen). PHP verfügt über diese Fähigkeit selbstverständlich auch.
Ein Beispiel: Wir wollen für eine bestimmte Anzahl von Tagen berechnen, wieviele Sekunden diese Tage
zusammen haben.
function tag ($anzahl) {
$sekunden = 3600 * 24 * $anzahl;
return $sekunden;
}
$x = tag(7);
echo ” 7 Tage b e s t e h e n a u s $x S e k u n d e n ! ”;
$anzahl “ nennt man auch Argument oder Übergabeparameter der Funktion. Eine Funktion kann mehrere
”
Argumente, oder auch kein Argument besitzen:
function zinseszins ($prozent,$laufzeit) {
$kapital = 10000.0;
$x = 1.0 + ($prozent/100.0);
$y = $kapital * exp( $laufzeit*log($x) );
return $y;
}
$proz = 6;
$zeit = 10;
$x = zinseszins($proz,$zeit);
echo ”Das K a p i t a l b e t r ä g t $x Euro ”;
Mehr zu den verwendeten mathematischen Funktionen kann man im PHP-Handbuch nachlesen.
Problematisch ist im obigen (zugegebenermaßen etwas konstruierten) Beispiel, dass die Variable $kapital in der Funktion selbst festgelegt wird. Natürlich wird man auch diesen Wert normalerweise als
Argument der Funktion übergeben, also etwa:
function zinseszins ($prozent,$laufzeit,$kapital) { ...
Wir wollen aber jetzt den Fall betrachten, dass diese Variable bereits gesetzt ist, und wir sie nicht als
Argument übergeben wollen. Dann müssen wir für die Funktion explizit angeben, dass die Variable von
”
außen“ stammt. Dies geschieht durch den Befehl global :
$kapital = 10000.0;
function zinseszins ($prozent,$laufzeit) {
global $kapital;
$x = 1.0 + ($prozent/100.0);
$y = $kapital * exp( $laufzeit*log($x) );
Vorlesung 3 - 1
Einführung in PHP
Vorlesung 3: Funktionen, Cookies, variable Variablen
return $y;
}
$proz = 6;
$zeit = 10;
$x = zinseszins($proz,$zeit);
echo ”Das K a p i t a l b e t r ä g t $x Euro ”;
Es empfiehlt sich benutzerdefinierte Funktionen, die häufig in verschiedenen Skripten zum Einsatz kommen, in gesonderten Bibliotheks-Dateien zu speichern und bei Bedarf mit dem include -Befehl in die
Skripten einzubinden.
3.2
Vordefinierte Funktionen
PHP verfügt über eine inzwischen umfangreiche Bibliothek von vordefinierten Funktionen, die für die
meisten Problemstellungen im Zusammenhang mit der Erzeugung dynamische Webseiten optimierte
Lösungen bereit stellen. Einige dieser Funktionen wurden bereits vorgestellt.
Diese Funktionsbibliothek ist im Abschnitt Funktionsreferenz“ des PHP-Handbuchs dokumentiert, wel”
ches für jede PHP-Version veröffentlicht wird.
Hier im Überblick die Referenzkapitel der PHP-Version 4:
Allgemein nützliche Funktionen für die Erzeugung dynamischer Webseiten:
II.
IV.
VI.
IX.
XVI.
XVIII.
XXIII.
XXIV.
XXX.
XCVII.
XCIX.
LI.
LV.
LIX.
LXXVIII.
LXXXII.
LXXIV.
LXXXVII.
LXXXIX.
Array Funktionen
Mathematische Funktionen mit beliebiger Genauigkeit
Kalender-Funktionen
Klassen- und Objekt-Funktionen
Character type functions
Datums- und Zeit-Funktionen
Direkte Ein-/Ausgabe Funktionen
Verzeichnis-Funktionen
Funktionen des Dateisystems
String-Funktionen
Tokenizer functions
Mathematische Funktionen
Hash Funktionen
Sonstige Funktionen
PHP Optionen und Informationen
Funktionen zur Programmausführung
Funktionen zur Ausgabesteuerung
Regular Expression Functions (Perl-Compatible)
Reguläre Ausdrücke Funktionen (POSIX erweitert)
Funktionen zur Generierung und Bearbeitung bestimmter Dateiformate:
V.
X.
XXV.
XXXI.
XLI.
XCIV.
Bzip2 Komprimierungsfunktionen
ClibPDF Funktionen
DOM XML Funktionen
Forms Data Format Funktionen
Grafik-Funktionen
Shockwave Flash Funktionen
Vorlesung 3 - 2
Einführung in PHP
LVIII.
LXXVI.
CIV.
CV.
CVI.
CVII.
CX.
CXI.
Vorlesung 3: Funktionen, Cookies, variable Variablen
Ming functions for Flash
PDF Funktionen
WDDX Funktionen
XML parser functions
XML-RPC functions
XSLT Funktionen
ZIP Funktionen (Lesezugriff)
Zlib Komprimierungsfunktionen
Funktionen für Netzwerk-Operationen:
I.
XII.
XV.
XXXIII.
XXXVII.
XLII.
XLVIII.
XLIX.
L.
LVI.
XLVI.
LXV.
XC.
LXXI.
XCIII.
XCV.
XCII.
XCVI.
C.
CII.
CIX.
Apache-spezifische Funktionen
CURL, Client URL Library Functions
Cyrus IMAP administration functions
FTP-Funktionen
HTTP-Funktionen
IMAP, POP3 und NNTP Funktionen
LDAP Funktionen
Mail Funktionen
mailparse functions
Mimetype Functions
IRC Gateway Funktionen
Netzwerk Funktionen
Semaphor und Shared Memory Funktionen
OpenSSL Funktionen
Shared Memory Funktionen (Gemeinsamer Speicher)
SNMP Funktionen
Session Funktionen
Socket Funktionen
URL Funktionen
vpopmail functions
YP/NIS Funktionen
Funktionen für den Zugriff auf spezielle Datenbanken:
XVII.
XIX.
XX.
XXI.
XXII.
XXVIII.
XXIX.
XXXVIII.
XXXIX.
XLIII.
XLIV.
XLV.
LVII.
LXI.
LXII.
LXVII.
LXVIII.
LXX.
LXXII.
dba Datenbank (dbm-style) Abstraktions-Funktionen
dBase Funktionen
DBM Datenbankfunktionen
dbx Funktionen
DB++ Functions
FrontBase Funktionen
filePro Funktionen
Hyperwave functions
Hyperwave API functions
Informix Funktionen
InterBase-Funktionen
Ingres II Funktionen
Microsoft SQL Server Funktionen
mSQL Funktionen
MySQL Funktionen
Lotus Notes functions
ODBC Funktionen
Oracle 8 Funktionen
Oracle Funktionen
Vorlesung 3 - 3
Einführung in PHP
LXXIII.
LXXX.
XCI.
XCVIII.
Vorlesung 3: Funktionen, Cookies, variable Variablen
Ovrimos SQL functions
PostgreSQL Funktionen
SESAM Datenbankfunktionen
Sybase functions
Weitere Funktionen der Standardbibliothek
XIV.
III.
VII.
VIII.
XI.
XIII.
XXVI.
XXVII.
XXXII.
XXXIV.
XXXV.
XXXVI.
XL.
XLVII.
LII.
LIII.
LIV.
LX.
LXIII.
LXIV.
LXVI.
LXIX.
LXXV.
LXXVII.
LXXIX.
LXXXI.
LXXXIII.
LXXXIV.
LXXXV.
LXXXVI.
LXXXVIII.
CIII.
CVIII.
Crédit Mutuel CyberMUT functions
Aspell Funktionen [veraltet]
CCVS API Funktionen
COM Support Funktionen für Windows
Crack Funktionen
Cybercash Bezahl Funktionen
.NET Funktionen
Error Handling and Logging Functions
FriBiDi Funktionen
Function Handling functions
GNU Gettext
GMP functions
iconv Funktionen
Java Funktionen
Multi-Byte String Functions
MCAL Funktionen
Mcrypt Encryption Functions
mnoGoSearch Funktionen
Mohawk Software Session Handler Funktionen
muscat functions
Ncurses terminal screen control functions
Object Aggregation/Composition Functions
Object property and method call overloading
Verisign Payflow Pro Funktionen
POSIX Funktionen
Process Control Functions
Printer functions
Pspell Funktionen
GNU Readline
GNU Recode Funktionen
qtdom functions
W32api functions
YAZ functions
Achtung: Nicht jedes Funktionsmodul ist bei den verschiedenen Providern auch tatsächlich aktiviert.
3.3
String-Funktionen
Ein wichtiges Betätigungsfeld von PHP ist die Bearbeitung von Zeichenketten. Es gibt eine ganze Reihe
von vordefinierten Funktionen um Zeichenketten zu manipulieren. Wir stellen hier nur die wichtigsten vor,
der Rest kann im Handbuch unter dem Stichwort String-Funktionen“ nachgeschlagen werden.
”
Die Funktion trim() entfernt Leerzeichen, Tabulatorzeichen etc. (sogenannten whitespace“) vor dem
”
ersten und nach dem letzten echten“ Zeichen in der Zeichenkette.
”
$x = ”
I c h b i n e i n e Z e i c h e n k e t t e ! ”;
Vorlesung 3 - 4
Einführung in PHP
Vorlesung 3: Funktionen, Cookies, variable Variablen
$y = trim($x);
Die Funktionen ltrim() und chop() entfernen whitespace“ vor bzw. nach der Zeichenkette.
”
Für die verspielten PHP-Programmierer: strtoupper() und strtolower() wandeln alle Zeichen eines
Strings in Großbuchstaben bzw. Kleinbuchstaben um.
Achtung: Probleme kann es bei Umlauten geben.
Die Funktion ucfirst() wandelt das erste Zeichen eines Strings in Großbuchstaben um (wenn möglich).
Die Funktion ucwords() hingegen wandelt in jedem Wort eines Strings das erste Zeichen in Großbuchstaben um (wenn möglich).
Die folgende Funktion ist besonders wichtig, wenn man vorhandenen Text für das WWW aufbereiten will:
$x = nl2br($y);
ersetzt alle Zeilenumbruch-Zeichen ( \n “) des Strings $y in die Zeichenfolge <BR>\n “.
”
”
Daneben gibt es noch einige wichtige Funktionen, um Strings zu vergleichen, zu ersetzen und mit HTMLSonderzeichen umzugehen.
3.4
Cookies
Als Cookies werden kurze Informationen bezeichnet, die der WWW-Server beim Client (Betrachter) hinterlassen kann. Sie sind vor allem beim elektronischen Einkaufen im WWW von Bedeutung, genauer gesagt
sind sie immer dann von Bedeutung, wenn der Server weitergehende Information vom Betrachter haben
muß, als nur die Internet-Adresse, die eine Seite anfordert.
Cookies bestehen aus folgenden optionalen Information:
name:
value:
expires:
domain:
path:
secure:
Name; Bezeichnung
Wert
Verfallsdatum
Adressraum der Server, die das Cookie wieder lesen dürfen.
Nur über Seiten, die in diesem Verzeichnis, oder Unterverzeichnissen
davon liegen, darf das Cookie angefordert werden.
Wenn gesetzt, darf das Cookie nur über verschlüsselte Informationskanäle übertragen werden.
Beispiel:
Wir wollen feststellen, ob ein Betrachter eine Seite schon einmal aufgerufen hat. Dazu setzen wir beim
ersten Aufruf der Seite ein Cookie. Dies muß allerdings vor dem HTML-Head geschehen, d. h. am Anfang
der Datei. (Unbedingt auch die Ausgabe von Leerzeilen, -zeichen vor diesem PHP-Teil vermeiden!)
<?php
$t = time()+3600*24*10;
setcookie(” m y c o o k i e ”,” s c h o n b e s u c h t ”,$t);
?>
<HTML>
...
Dieser Befehl setzt ein Cookie mit dem Namen mycookie“ auf den Wert schon besucht“ mit einem
”
”
Verfallsdatum von 10 Tagen.
Vorlesung 3 - 5
Einführung in PHP
Vorlesung 3: Funktionen, Cookies, variable Variablen
Das Verfallsdatum des Cookie muss in Sekunden seit dem 1. Januar 1970 angegeben werden. Die Funktion time() gibt die Sekunden seit dem 1. Januar 1970 der momentanen Zeit an. Weitere Datums- und
Zeitfunktionen sind im Handbuch nachzulesen.
Da die Berechnung der Sekunden nicht immer ganz übersichtlich ist, empfiehlt sich die Verwendung einer
Funktion:
function tage ($anzahl) {
$sekunden = time()+ 3600 * 24 * $anzahl;
return $sekunden;
}
setcookie(” m y c o o k i e ”,” Schon b e s u c h t ”,tage(10));
Cookies lesen ist mit PHP wieder sehr einfach realisiert: Der Inhalt des Cookies ist in einer Variablen mit
dem Namen des Cookies enthalten:
echo ”$mycookie”;
gibt also den Wert des Cookies aus, in unserem Fall den Text schon besucht“.
”
Ab der PHP-Version 4 sind auch die Cookie-Variablen nicht mehr standardmässig automatisch gesetzt.
Die entsprechenden Werte sollen nunmehr aus den vordefinierten Arrays $ REQUEST bzw. $ COOKIE
gezogen werden.
Beispiel:
echo $_COOKIE[” m y c o o k i e ”].”<BR>\n”;
echo $_REQUEST[” m y c o o k i e ”];
Ein Server kann mit PHP ein Cookie wieder entfernen, indem lediglich die Funktion setcookie() mit
dem Namen des Cookies als Argument angegeben wird:
setcookie(” m y c o o k i e ”);
3.5
Exkurs: Variable Variablen
Dies ist nun schon fortgeschrittene PHP-Programmierung: In manchen Fällen will man Schleifen über eine
Menge von Variablen laufen lassen. Zum Beispiel wenn man viele Eingabefelder in einem Formular hat:
<INPUT
<INPUT
<INPUT
...
<INPUT
NAME=” f e l d 0 ” >
NAME=” f e l d 1 ” >
NAME=” f e l d 2 ” >
NAME=” f e l d 9 9 ” >
Nun ist es sehr mühsam, alle Felder einzeln zu behandeln. Will man z. B. einfach den Inhalt aller Eingabefelder ausgeben, so kann man statt der folgenden 100 Befehle
echo ” f e l d 0 : $feld0 <BR>\n”;
echo ” f e l d 1 : $feld1 <BR>\n”;
...
echo ” f e l d 9 9 : $feld99 <BR>\n”;
auch folgendermaßen vorgehen. Wir basteln uns den jeweiligen Variablennamen zusammen:
Vorlesung 3 - 6
Einführung in PHP
Vorlesung 3: Funktionen, Cookies, variable Variablen
for ($i=0; $i < 100; $i++) {
$var = ” f e l d ”.$i;
echo ”$var : ${$var} <BR>\n”;
}
Mit einem $var erhalten wir den Variablennamen, mit ${$var} greifen wir auf den Inhalt der Variablen
mit dem Namen $var zu.
3.6
Exkurs: Arrays aus Formularen
Abschließend noch ein kleiner PHP-Trick:
Wenn wir in einem Formular aus einer Menge von HTML-Checkboxen mit PHP ermitteln wollen, welche
Checkboxen angeklickt wurden, dann scheitert die bisherige Vorgehensweise:
<INPUT TYPE=CHECKBOX NAME=” x” VALUE=1 > Option 1
<INPUT TYPE=CHECKBOX NAME=” x” VALUE=2 > Option 2
...
Schickt man dieses Formular ab, so hat die PHP-Variable $x nur den Wert der ersten angeklickten Checkbox.
Der Trick ist, in HTML die Checkbox zum Beispiel so zu benennen:
<INPUT TYPE=CHECKBOX NAME=” x [ ] ” VALUE=1 > Option 1
<INPUT TYPE=CHECKBOX NAME=” x [ ] ” VALUE=2 > Option 2
...
Dadurch wird in PHP ein Array mit dem Namen $x existieren. Die Werte können dann so ausgelesen
werden:
for ($i=0; $i < sizeof($x); $i++) {
echo ”$x [ $i ] ”;
}
3.7
Aufgaben zur Vorlesung
1. Erstellen Sie eine Funktion flaeche() , welche als Übergabeparameter zwei Zahlen erhält (eine
Längen- und ein Breitenangabe) und die entsprechende Fläche zurück liefert. Testen Sie die Funktion
in einer PHP-Anwendung.
2. Erstellen Sie eine Funktion mitglied() , welche als Übergabeparameter eine Zahl erhält. Die Funktion soll das dieser Zahl entsprechende Mitglied zurückgeben.
Erzeugen Sie dazu zunächst innerhalb der Funktion ein skalares Array nach folgendem Muster:
$adresse[0] :
$adresse[1] :
$adresse[2] :
$adresse[3] :
Dieter Schulz
Wolfgang Herbst
Franz Lang
Horst Schmidt
3. Erweitern Sie die vorhergehende Aufgabe so, dass überprüft wird, ob ein bestimmter Name Mitglied
ist. D. h. als Übergabeparameter erhält die Funktion einen beliebigen Namen und liefert entweder die
Nummer zurück oder aber eine Fehlermeldung.
Vorlesung 3 - 7
Einführung in PHP
Vorlesung 3: Funktionen, Cookies, variable Variablen
4. Lassen Sie einen Text über ein HTML-Formular eingeben und geben Sie den Text vollständig in
Großbuchstaben als Antwort zurück. Benutzen Sie dazu eine geeignete String-Funktion aus der PHPBibliothek.
5. Lassen Sie einen Text über ein HTML-Formular eingeben und geben Sie den Text in umgekehrter
Reihenfolge aller Buchstaben als Antwort zurück. Benutzen Sie dazu eine geeignete String-Funktion
aus der PHP-Bibliothek.
6. Lassen Sie einen Text über ein HTML-Formular eingeben und geben Sie den Text in umgekehrter
Reihenfolge alle Wörter als Antwort zurück. Benutzen Sie dazu die Funktion explode() aus der
PHP-Bibliothek.
7. Schreiben Sie ein PHP-Programm fuer eine HTML-Datei, das mitprotokolliert, wie oft ein Benutzer
diese HTML-Datei aufgerufen hat. Verwenden Sie dazu den Cookie-Befehl.
Vorlesung 3 - 8
Einführung in PHP
Vorlesung 4: Zugriff auf Datenbanken
Vorlesung 4
Zugriff auf Datenbanken
4.1
Einführung
Eines der Haupteinsatzgebiete von PHP ist der Online-Zugriff auf Datenbanken.
Was ist eine Datenbank?
Vereinfacht gesagt: Eine Datenbank enthält Daten. Zusammengehörige Daten sind dabei in Datensätzen
vereint.
Mit den Daten in einer Datenbank kann unter Nutzung eines Datenbank-Management-Systems (DBMS)
bedarfgerecht gearbeitet werden. Zum Beispiel können bestimmte Datensätze ausgelesen werden, neue
Datensätze hinzugefügt werden, Datensätze können aktualisiert oder gelöscht werden. Diese Vorgänge
erfolgen durch sogenannte Datenbank-Abfragen.
Weit verbreitet sind relationale Datenbanken-Management-Systeme, die Datenbanken über mehrere Tabellen (Relationen) verteilt verwalten.
Alle marktgängigen DBMS ermöglichen die Übermittlung von Anfragen an eine Datenbank mit Hilfe der
Abfragesprache SQL (Structured Query Language).
PHP unterstützt die Datenbankabfrage mittels SQL und kann mit den DBMS nahezu aller Hersteller direkt
oder unter Vermittlung der spezifischen ODBC-Treiber kommunizieren.
Im Bereich der Webprogrammierung erfreut sich das DBMS MySQL besonderer Beliebtheit.
Vorteile von MySQL: es ist schnell und es ist kostenlos.
4.2 Zugriff auf Datenbanken
Um eine SQL-Abfrage mit PHP auszuführen, muss
• zuerst die Datenbank geöffnet werden (vergleichbar mit dem Zugriff auf eine Datei),
• dann wird die SQL-Befehlszeile an die Datenbank geschickt,
• die Antwort der Datenbank wird aufgenommen und
• schließlich wird die Datenbank-Verbindung wieder geschlossen.
4.3
SQL-Grundlagen
Um mit MySQL produktiv arbeiten zu können, müssen wir uns zunächst etwas Hintergrundwissen über die
Struktur von SQL-Abfragen verschaffen.
Vorlesung 4 - 1
Einführung in PHP
Vorlesung 4: Zugriff auf Datenbanken
SQL-Datenbanken bestehen aus einer Tabelle oder mehreren Tabellen (Relationen). Jeder Datensatz der
Datenbank entspricht dabei genau einer Zeile in einer Tabelle.
Beispiel: Ein Kneipenführer.
Die Tabelle kneipen:
ID
1
2
3
Name
Herzogkeller
Glenk
...
Art
Biergarten
Biergarten
...
Note
1
1
...
Kommentar
Sehr schöner Baumbestand
Gute Bratwürste
...
Man kann auf die Tabellen einer Datenbank einzeln zugreifen, aber auch Tabellen verküpfen.
Wir wollen uns hier der Einfachkeit halber auf eine einzige Tabelle beschränken.
Es gibt im wesentlichen vier Abfragemöglichkeiten:
Auslesen:
Einfügen:
Überschreiben:
Löschen:
SELECT
INSERT
UPDATE
DELETE
Will man z. B. alle Kneipennamen, die sich in der Datenbank befinden, auslesen, so gibt man den SQLBefehl
SELECT Name FROM kneipen;
ein.
Will man Name und Art der Kneipe ausgeben, so lautet der Befehl
SELECT Name,Art FROM kneipen;
Soll schließlich die komplette Tabelle ausgelesen werden, so genügt der Befehl
SELECT * FROM kneipen;
Die auszulesenden Datensätze können nun noch weiter spezifiziert werden:
SELECT * FROM kneipen WHERE NOTE=1;
gibt nur die Datensätze aus, die in der Spalte Note eine 1 enthalten.
Eine sortierte Ausgabe der Datensätze kann mit
SELECT * FROM kneipen WHERE NOTE=1 ORDER BY Name;
erzeugt werden.
Neue Datensätze werden folgendermaßen hinzugefügt:
INSERT kneipen (Name,Art,Note,Kommentar)
VALUES ( ’ G l e n k ’, ’ B i e r g a r t e n ’, ’ 1 ’, ’ Gute B r a t w ü r s t e ’);
Vorhandene Datensätze können mit
UPDATE kneipen SET Note= ’ 2 ’,
Kommentar= ’ Die B r a t w ü r s t e l a s s e n nach ’ WHERE ID=2;
Vorlesung 4 - 2
Einführung in PHP
Vorlesung 4: Zugriff auf Datenbanken
überschrieben werden.
Das soll als erster Einblick genügen. SQL ist eine sehr mächtige Abfragesprache, insbesondere für Kombinationsabfragen aus mehreren Tabellen gleichzeitig (inner joins, outer joins,...) existiert eine eigene, beinahe mathematische Theorie.
4.4
SQL-Befehle mit PHP
Die vorgestellten SQL-Befehle verwenden wir nun mit PHP. Wir wollen als Beispiel alle Datensätze aus
der Tabelle kneipen “ in der Datenbank nli03 “ ausgeben.
”
”
Zuerst muß eine Verbindung von PHP zum Datenbank-Server (d. h. dem Computer, auf dem die Datenbank
liegt) hergestellt werden:
$verbindung = mysql_connect(” l o c a l h o s t ”,” nobody ”,””);
oder bei Zugriff auf einen fremden Datenbankserver z. B.
$verbindung = mysql_connect(”db . bbs−l o e n i n g e n . de ”,” n l i 0 3 ”,” h e u t e ”);
localhost “ bedeutet, wir fordern eine Verbindung zum selben Computer an, auf dem auch der Webser”
ver läuft. Dies funktioniert natürlich nur, wenn Webserver und MySQL-Server auf einem Rechner liegen.
Wie im zweiten Beispiel zu sehen, kann aber auch auf einen Datenbankserver auf einem beliebigen anderen
Rechner im Internet zugegriffen werden - vorausgesetzt man besitzt die entsprechende Zugangsberechtigung.
nobody “ ist der Benutzername für den Datenbankserver (dies wurde vom Datenbank-Verwalter so fest-
”
gelegt).
“ “ bedeutet, dieser Benutzer benötigt kein Password.
Server, Benutzername und Passwort müssen Sie an die Gegebenheiten Ihres Systems anpassen.
Wir sollten im Skript auch überprüfen, ob die Verbindung zum MySQL-Server klappt:
$verbindung = mysql_connect(”db . bbs−l o e n i n g e n . de ”,” n l i 0 3 ”,” h e u t e ”);
if (!$verbindung) {
echo ” K e i n e V e r b i n d u n g m ö g l i c h ! \ n”;
exit;
}
Steht die Verbindung, so können wir die erste Abfrage starten.
Zur besseren Übersicht schreiben wir die geplante SQL-Abfrage in eine Variable:
$abfrage = ”SELECT Name , A r t f r o m k n e i p e n ”;
Diese Abfrage wird nun an den Datenbank-Server geschickt.
Das Resultat fangen wir in der Variablen $erg auf.
mysql_select_db( ” n l i 0 3 ” );
$erg = mysql_query( $abfrage );
Die erste Anweisung wählt die Datenbank nli03 “ aus, die wir abfragen wollen.
”
Vorlesung 4 - 3
Einführung in PHP
Vorlesung 4: Zugriff auf Datenbanken
Die zweite Anweisung schickt den SQL-Befehl an die ausgewählte Datenbank und liefert als Ergebnis eine
Verweis auf das Abfrageergebnis. Dieser Verweis wird in der Variablen $erg abgelegt.
Nun kommt eine etwas knifflige Arbeit:
Wir müssen unter Verwendung von $erg die zurückgelieferten Datensätze auslesen. Hätten wir einen
INSERT, UPDATE oder DELETE Befehl verschickt, bräuchten wir nur testen, ob $erg wahr oder falsch
ist, d. h. ob die Abfrage geklappt hat oder nicht.
Da wir aber den SELECT-Befehl an die Datenbank geschickt haben, wollen wir die von der Datenbank
zurückgelieferten Datensätze auslesen.
Wir haben pro Datensatz die beiden Spalten Name und Art angefordert.
Diese lesen wir nun zeilenweise in einen skalaren Array aus:
$ergArray = mysql_fetch_row($erg);
echo $ergArray[0].” i s t e i n ( e ) ”.$ergArray[1].”<br >\n”;
Die Variable $erg enthält nach der Abfrage Zeilen mit jeweils zwei Spalten (Name und Art). mys”
ql fetch row($erg) “ gibt genau eine Zeile als skalaren Array aus.
Zu Beginn steht eine Art Zeiger auf der ersten Zeile, führt man den Befehl mysql fetch row($erg) “
”
aus, rutscht der Zeiger zur nächsten Zeile usw.
Will man alle Zeilen ausgeben, empfiehlt sich eine Schleife:
while ( $ergArray = mysql_fetch_row($erg) ) {
echo $ergArray[0].” i s t e i n ( e ) ”.$ergArray[1].”<br >\n”;
}
Die Ergebnisse verarbeiten wir also zeilenweise zu HTML-Text.
Alternative:
Etwas eleganter läßt sich das Ergebnis der Datenbankabfrage auch unter Verwendung des list -Konstrukts
auswerten, mit dem ein skalarer Array in Einzelvariablen (hier $Name und $Art ) aufgeteilt werden kann.
list($Name,$Art) = mysql_fetch_row($erg);
Innerhalb einer while -Schleife:
while (list($Name,$Art) = mysql_fetch_row($erg)) {
echo $Name.” i s t e i n ( e ) ”.$Art.”<BR>\n”;
}
Am Ende empfiehlt es sich, die Verbindung zur Datenbank zu kappen:
mysql_close($verbindung);
Dies waren nur die einfachsten MySQL-Befehle in PHP, die aber schon für sehr viele Anwendungen ausreichen.
Vorlesung 4 - 4
Einführung in PHP
4.5
Vorlesung 4: Zugriff auf Datenbanken
Ein weiterer SQL-Befehl
Nachdem wir nun ein wenig Erfahrung mit SQL-Befehlen sammeln konnten, trauen wir uns auch an den
DELETE -Befehl heran. Wichtig ist für diesen Befehl, dass ganz genau (und vorsichtig) spezifiziert wird,
welcher Datensatz oder welche Datensätze aus der Datenbank gelöscht werden sollen.
In unserem Beispiel ist es am besten, wenn man über das Feld ID “ den zu löschenden Datensatz angibt,
”
denn dieses Feld enthält für jeden Datensatz eine eindeutige Nummer (= Primärschlüssel der Tabelle).
Wollen wir den Datensatz mit ID=120 löschen, so geben wir als Abfrage an:
$abfrage = ”DELETE FROM k n e i p e n WHERE ID=120”;
Achtung: Vergißt man den WHERE -Teil, werden alle Datensätze der Tabelle gelöscht!
Als Ersteller einer dynamischen Webseite mit PHP und einer Datenbank sollte man also immer genau
darüber nachdenken, was den Betrachtern erlaubt werden soll und was nicht.
4.6
Aufgaben zur Vorlesung
1. Schreiben Sie ein PHP-Programm, das aus der Tabelle kneipen in der Datenbank nli03 alle Datensätze ausgibt, deren Bewertung schlechter als 2 ist.
2. Schreiben Sie ein HTML-Formular, das neue Datensätze in die Tabelle kneipen in der Datenbank
nli03 einfügt.
3. Erweitern Sie Ihr Formular zur Eingabe in die Datenbank-Tabelle kneipen : Fragen Sie mit PHPBefehlen ab, ob alle Felder ausgefüllt sind und ob die Note im gültigen Bereich zwischen 1 und 6
liegt.
4. Schreiben Sie ein PHP-Programm zur Auswertung der Tabelle kneipen : Es soll für jede Kneipe
die Anzahl der Einträge gezählt und die durchschnittliche Note berechnet werden. Damit die Kneipen besser unterscheidbar sind, wandeln Sie die Namen in Kleinbuchstaben um und entfernen Sie
überflüssige Leerzeichen am Anfang und Ende.
Hinweis: Bitte geben Sie nur existierende Kneipen ein und geben Sie nur öffentlich vorzeigbare
Kommentare ab.
4.7
Fallaufgabe Elektronikversand
Ein Elektronik-Versand möchte seine Waren in Zukunft über das Internet verkaufen. Dabei sollen interessierte Kunden die Möglichkeit haben, über eine Suchmaske Artikel (hier Notebooks oder Monitore) nach
bestimmten Kriterien auszuwählen.
1. Vorbereitet ist die Datenbank Artikel“ mit den Tabellen Notebooks“ und Monitore“.
”
”
”
Tabelle Notebooks:
Artikel-Nr
1001
1002
1003
1004
1005
1006
Bezeichung
Notebook TPT 23
Notebook
Top Note
Notebook
Thinkpad
Vaio-PCG
Hersteller
IBM
ECS
IPC
Gericom
IBM
Sony
Preis
1.799
999
899
859
1.299
999
Bestand
15
7
6
9
4
11
Arbeitsspeicher
128
256
256
128
128
128
Prozessor
1600
1000
900
750
900
866
Display
15
14
13
13
14
14
Vorlesung 4 - 5
Einführung in PHP
Vorlesung 4: Zugriff auf Datenbanken
Tabelle Monitore:
Artikel-Nr
2001
2002
2003
Bezeichung
Monitor
P76
V75
Hersteller
Siemens
IBM
Compaq
Preis
299
199
199
Bestand
3
2
4
Lochmaske
0,28
0,24
0,26
Display
21
17
17
2. Der Benutzer soll zunächst auswählen können, welchen Artikel er kaufen möchte (vgl. Abbildung).
3. Anschließend soll der Benutzer über Textfelder und Radiobuttons und/oder Checkboxen die
Möglichkeit erhalten, eine Auswahl nach bestimmten Kriterien vorzunehmen. Dazu wurden zwei
Eingabemasken nach dem folgenden Vorbild (monitore.html und notebooks.html) erstellt.
4. Stellen Sie sicher, dass wenn ein Artikel von einem Benutzer gekauft wurde, dessen Bestand in der
Datenbank um 1 reduziert wird.
5. Möchte ein Kunde einen Artikel mit einem Bestand von 0 erwerben soll eine entsprechende Fehlermeldung angezeigt werden.
Vorlesung 4 - 6
Anhang A
NLI-Kurs
A.1
Rechner-Umgebung NLI-Kurs
Novell-File-/Print-Server
BBSLOE
User-Laufwerk H
Datenbank-Server
db.bbs-loeningen.de
IP: 172.18.100.9
Intranet-Server
ins.bbs-loeningen.de
IP: 172.18.100.1
Client-Rechner
IP: 172.18.101.x
Laufwerke C, D
Internet
A.2
Raum 101
Loginparameter
Für die Teilnehmer/-innen des NLI-Kurses sind die Benutzernamen nli01 “ bis nli20 “ vorbereitet. Als
”
”
Passwort ist für alle Accounts heute “ festgelegt. Dieses Passwort bitte nicht eigenmächtig ändern!
”
Benutzername und Passwort gelten für das Novell-Login und die Anmeldung am MySQLDatenbankserver. Auf dem Datenbankserver sind für alle Teilnehmer/innen entsprechende Datenbanken
nli01 “ bis nli20 “ eingerichtet.
”
”
1
Einführung in PHP
Anhang A: NLI-Kurs
A.3 Entwicklungsumgebung
Für jeden Kursteilnehmer/jede Kursteilnehmerin steht ein eigener Bereich auf der Serverfestplatte zur
Verfügung, der auf den Clientrechner als Laufwerk H: erscheint.
Auf diesem Laufwerk H: können die eigenen Dateien dauerhaft gespeichert werden.
Auf dem Laufwerk H: ist die Entwicklungsumgebung für den PHP-Kurs vorinstalliert und kann über den
Aufruf der entsprechenden Batchdateien aktiviert werden.
Nähere Erläuterungen:
Das Verzeichnis apache “ ist für den Betrieb des lokalen Webservers notwendig und darf nicht gelöscht
”
werden. Hier werden Logdateien des Webservers abgelegt.
Das Verzeichnis dbg “ enthält die Dateien des PHP-Debuggers, der bei der schrittweisen Abarbeitung von
”
Skripten eingesetzt wird.
Das Verzeichnis Maguma Studio “ enthält die Dateien der Entwicklungsumgebung Maguma Studio
”
”
Light“.
Anhang A - 2
Einführung in PHP
Anhang A: NLI-Kurs
Im Verzeichnis www “ sollten Sie alle HTML-Dokumente und PHP-Skripten ablegen. Der lokale Webserver
”
betrachtet dieses Verzeichnis als Root-Verzeichnis für alle verfügbaren Webdokumente.
Über die Verknüpfung Editor “ können Sie die PHP-IDE Maguma Studio“ starten.
”
”
Über die Verknüpfung PHP “ wird die lokale Entwicklungsumgebung initialisiert. Dies muss einmalig nach
”
jedem neuen Login am Novellserver erfolgen.
Über die Verknüpfungen Start Webserver “ und Stop Webserver“ können Sie den lokalen Webser”
”
ver aktivieren bzw. deaktivieren. Wenn der lokale Webserver aktiviert ist, kann er unter der Adresse
http://localhost “ via Browser kontaktiert werden. Von anderen Client-Rechnern kann der lokale
”
Webserver unter der Adresse http://172.18.101.x “ angesprochen werden, wobei x “ durch die
”
”
Platznummer ersetzt werden muss. Webdokumente für den lokalen Webserver müssen unterhalb von
H:\www “ abgelegt werden.
”
Anhang A - 3
Einführung in PHP
Anhang B: Zugriff auf Access-Datenbanken mit PHP
Anhang B
Zugriff auf Access-Datenbanken mit PHP
B.1
Vorbereitung der Datenquelle
Für diese kleine Beispielanwendung sollte eine Access-Datenbank als MDB-Datei vorhanden sein. Im
Folgenden wird die Datenbank beispiel.mdb“ benutzt, in der eine Tabelle kneipen“ gemäß der folgenden
”
”
Abbildung bereitgestellt ist.
Um auf diese Datenquelle extern zugreifen zu können, muss ein ODBC-Treiber für die Datenbank installiert werden.
Sie finden das Installationsprogramm für ODBC-Treiber auf einem Windowssystem unter Start — Ein”
stellungen — Systemsteuerung“ (muss evtl. von der Setup-CD nachinstalliert werden).
Durch Doppelklick auf dem Icon ODBC-Datenquellen“ wird das Installationsprogramm gestartet.
”
Anhang B - 4
Einführung in PHP
Anhang B: Zugriff auf Access-Datenbanken mit PHP
Im ODBC-Datenquellen-Administrator wählen Sie die Option Hinzufügen...“.
”
Es öffnet sich der Dialog Neue Datenquelle erstellen“. Wählen Sie hier den Microsoft Access-Treiber“
”
”
und drücken Sie den Button Fertigstellen“.
”
Anhang B - 5
Einführung in PHP
Anhang B: Zugriff auf Access-Datenbanken mit PHP
Im Dialog ODBC Microsoft Access Setup“ nehmen Sie die Einstellungen nach dem abgebildeten Muster
”
vor. Wichtig: Sie müssen die Datenbank über einen Datei-öffen-Dialog mit dem ODBC-Treiber verbinden
(Option Datenbank: Auswählen...“).
”
Bei Rückkehr in den ODBC-Datenquellen-Administrator erkennen Sie, dass nunmehr für die ausgewählte
Datenquelle ein ODBC-Treiber installiert wurde, der unter dem DSN-Namen phpAccess“ angesprochen
”
werden kann.
Anhang B - 6
Einführung in PHP
B.2
Anhang B: Zugriff auf Access-Datenbanken mit PHP
Zugriff auf Access-Datenbank mit Skript
Es ist nun an der Zeit ein PHP-Skript zu schreiben, mit dem auf die Access-Datenbank zugegriffen werden
kann. Es wird im Beispielskript eine einfache SELECT-Abfrage der Datenbank durchgeführt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!doctype html public ” −//W3C / / DTD HTML 4 . 0 / / EN”>
<html>
<head>
<title>PHP-Zugriff auf Access</title>
</head>
<body>
<?php
// Aufbau der Verbindung, Funktions-Parameter dsn-name,user,password
$verbindung = odbc_connect(” p h p A c c e s s ”,””,””);
if( !$verbindung ){
echo ” K e i n e V e r b i n d u n g . . . < br>”;
exit; // Nix wie raus, klappt heute nicht
}
// SQL-Anfrage
$erg = odbc_exec($verbindung, ”SELECT ∗ FROM K n e i p e n ”);
// Zeilenweise Abfrageergebnis holen und auswerten
while( $row = odbc_fetch_row( $erg ) ){
$kname = odbc_result($erg,”Name”) ;
$kart = odbc_result($erg,” A r t ”);
echo $kname.” i s t e i n ( e ) ”.$kart.”<br >\n”;
}
// Datenbank schliessen
odbc_close( $verbindung );
?>
</body>
</html>
Als Ausgabe im Browser sollte das Skript eine Ergebnis wie in der nachfolgenden Abbildung erzeugen.
Anhang B - 7
Herunterladen