php-Programme.de |
||||||
|
2) Unser erster PHP-Befehl!Der echo-Befehl gibt Texte (sogenannte Strings) aus: <? echo "Hallo"; ?>Merke: Alle PHP-Befehle werden mit ";" abgeschlossen.
Es gibt eine Reihe von Sonderzeichen. Wichtigstes Sonderzeichen:
"\n": Neue Zeile.
echo "Hallo\n"; echo "Hallo\n";Man beachte dabei den Unterschied zu echo "Hallo<BR>"; echo "Hallo<BR>";Im ersten Fall wird lediglich im vom Webserver ausgelieferten HTML-Text ein Zeilumbruch durchgeführt. Im zweiten Fall enthält der HTML-Text den HTML-Befehl zum Zeilenumbruch.
3) Variablen
Um sinnvolle Anwendungen erstellen zu können, benötigen wir
Variablen.
$text = "Ich bin ein String !"; echo $text; echo $text,$text,$text; $l = "langer"; $k = "kurzer"; echo "Ich bin ein $l$l$l$l$l$l Text!"; echo "Ich bin ein $k Text!"; $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.
Ein Beispiel.
Achtung: Anfänger sollten immer
METHOD=POST beim Formular angeben!
7) Weitere Befehle zur AblaufkontrolleIn 6 haben wir die erste Möglichkeit kennengelernt, eine Programm-Schleife zu erzeugen. Statt$t = "Ich soll meine Uebungsaufgaben selbst erstellen!<BR>\n"; $i = 0; while ($i<10) { echo $t; $i++; }kann man auch schreiben: $t = "Ich soll meine Uebungsaufgaben selbst erstellen!<BR>\n"; $i = 0; do { echo $t; $i++; } while ($i<10);Was ist der 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 ($i<10). 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 = "Ich soll meine Uebungsaufgaben selbst erstellen!<BR>\n"; for ($i=0;$i<10;$i++) { echo $t; }Der for-Befehl besteht aus drei Ausdrücken. for (ausdruck1;ausdruck2;ausdruck3) { ... }
$t = "Ich soll meine Uebungsaufgaben selbst erstellen!<BR>\n"; for ($i=10;$i>0;$i--) { echo $t; }
8) FallunterscheidungenZur Fallunterscheidung gibt es den if-Befehl:if ($i<0) { echo "$i ist kleiner als Null\n"; }oder auch if ($i<0) { echo "$i ist kleiner als Null\n"; } else { echo "$i ist nicht kleiner als Null\n"; }Man kann diesen Befehl auch schachteln: if ($i<0) { echo "$i ist kleiner als Null\n"; } else if ($i>0) { echo "$i ist groesser als Null\n"; } else { echo "$i ist Null\n"; }Hat man mehrere Tests der gleichen Variable, so kann man mit dem switch-Befehl evtl. Arbeit einsparen: switch ($name) { case "Heinrich": echo "Ich bin der kluge Heinrich"; break; case "Hans": echo "Ich bin der dumme Hans"; break; case "Agathe": echo "Ich bin die Agathe und klüger als Heinrich und Hans"; break; default: echo "Wir sind der Rest"; }Falls die Variable $name den Wert "Hans" hat, wird als nächster Befehl echo "Ich bin der dumme Hans";ausgeführt. Normalerweise würden dann alle nachfolgenden Befehle ausgeführt werden, u.a. echo "Ich bin die Agathe und klüger als Heinrich und Hans";Dies ist meist nicht erwünscht, man springt deshalb mit break aus dem switch-Befehl heraus.
9) Weitere VergleichsmöglichkeitenBisher konnten wir testen, ob $i<10 oder $i>10 gilt. Es gibt aber noch mehr Möglichkeiten:
10) Nochmals vordefinierte VariablenIn 4 haben wir gelernt, daß 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: Angenommen unsere Datei form.html enthält folgendes Formular: <FORM ACTION="form.html" METHOD=POST> <INPUT NAME="beliebigername"> <INPUT TYPE="submit"> </FORM>Dann ruft sich beim Klicken auf submit die Datei selbst auf. Allerdings ist dann die Variable beliebigername beliebiger Name gesetzt. Dies können wir folgendermaßen ausnützen: <? if (isset($beliebigername)) { echo "Sie haben $beliebigername eingegeben\n"; } ?> <P> <FORM ACTION="form.html" METHOD=POST> <INPUT NAME="beliebigername"> <INPUT TYPE="submit"> </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, isset($beliebigername) ist wahr, und es wird "Sie haben $beliebigername eingegeben\n"; ausgegeben. Will man danach abbrechen, so sollte der Befehl exit;verwendet werden.
11) Dateien hinzuladenDer Befehlinclude("dateiname");liest den Inhalt der Datei dateiname so, als ob er an dieser Stelle stehen würde. Damit kann z.B. einheitliches Layout bei einer größeren Anzahl von Dateien erreicht werden.
OK. Gehen wir davon aus, daß wir nun eine Datei mit dem Namen xxx haben, deren Inhalt wir lesen wollen.
fwrite($datei, "Ein Text");kann der String Ein Text in die Datei geschrieben werden.
13) Bildbearbeitung
Mit PHP können wir nicht nur HTML-Text
erzeugen, wir können sogar Bilder dynamisch erzeugen. Zum Beispiel können
wir eine Datei "bild.php" erstellen, die ein Bild zurückliefern
wird. In diese Datei schreiben wir keine HTML-Befehle, sondern ausschließlich
PHP-Befehle. Ausschließlich heißt auch, daß vor dem ersten <?-Befehl
nichts, auch kein Leerzeichen oder Leerzeile, stehen darf. Ansonsten ist der
Browser sofort der Überzeugung, daß ein Textdokument ankommt. <? Header( "Content-type: image/gif"); $im = imagecreate(200,100); $blue = ImageColorAllocate($im, 0x2c,0x6D,0xAF); ImageFilledRectangle($im,0,0,200,100,$blue); ImageGif($im); ImageDestroy($im); ?>Ruft man diese Datei auf, so erscheint ein blaues Rechteck. Natürlich kann diese Datei auch mit <IMG SRC="bild.php">in eine HTML-Seite eingebunden werden. Was bewirken obige Befehle? Der Befehl Header( "Content-type: image/gif");teilt dem Browser mit, daß nun ein GIF-Bild kommen wird. (Um Fehlermeldungen in unserer PHP-Datei angezeigt zu bekommen, können wir diesen Befehl auch zeitweise auskommentieren, indem wir davor ein #-Zeichen setzen.) Der Befehl $im = imagecreate(200,100);erzeugt ein Bild, das 200 Pixel breit und 100 Pixel hoch ist. Jede Farbe, die wir verwenden wollen, muß zuerst erzeugt werden. Dies geschieht mit dem Befehl $blue = ImageColorAllocate($im, 0x2c,0x6D,0xAF);Dabei bezeichnet $im das Bild, für das wir die Farbe erzeugen wollen, während die restlichen drei Parameter die hexadezimalen RGB-Werte sind. (Man beachte die Schreibweise: 0x2c ergibt den dezimalen Rot-Anteil 36.) Mit ImageFilledRectangle($im,0,0,200,100,$blue);zeichnen wir ein ausgefülltes Rechteck, das bei 0,0 (links oben) beginnt und 200 Pixel nach rechts und 100 Pixel nach unten endet, und in der eben erzeugten Farbe $blue gefüllt ist. Der Befehl ImageGif($im);erzeugen zuerst ein GIF-Bild aus der internen Darstellung und sendet es an den Betrachter, während ImageDestroy($im);den internen Speicherplatz für das Bild freigibt. Es gibt nun eine Reihe von weiteren Möglichkeiten. Zum Beispiel kann noch ein Text in das Bild geschrieben werden: $white = ImageColorAllocate($im, 255,255,255); imagestring($im, 5, 20, 20, "Hallo", $white);Der erste Befehl erzeugt weiße Farbe: Man sieht, die RGB-Werte können auch als Dezimal-Werte angegeben werden. Der zweite Befehl schreibt den Text "Hallo" in Schriftgröße 5 beginnend bei Position 20,20 (20 Pixel nach rechts, 20 Pixel nach unten). Die beiden Befehle sollten direkt vor ImageGif($im); stehen.
14) Zugriff auf DatenbankenEines der Haupteinsatzgebiete von PHP ist der Online-Zugriff auf Datenbanken.Was ist eine Datenbank? Vereinfacht gesagt: Eine Datenbank enthält Datensätze, die mit einer speziellen Sprache bearbeitet werden können. Zum Beispiel können bestimmte Datensätze ausgelesen werden, neue Datensätze hinzugefügt werden, Datensätze können aktualisiert oder gelöscht werden. All diese Vorgänge nennt man Abfragen. Weit verbreitet sind sogenannte SQl-Datenbanken, d.h. Datenbanken, die mit der Sprache SQL (Abkürzung für Structured Query Language) bearbeitet werden können. PHP kann mit Datenbanken verschiedener Hersteller umgehen, besonders beliebt ist die Datenbank MySQL. Vorteile von MySQL: Um eine SQL-Abfrage mit PHP auszuführen, muß zuerst die Datenbank geöffnet werden, dann wird die SQL-Befehlszeile an die Datenbank geschickt, die Antwort der Datenbank wird aufgenommen und schließlich wird die Datenbank-Verbindung wieder geschlossen. Zuerst müssen wir uns etwas Hintergrundwissen über die SQL-Befehlszeile verschaffen:
15) SQL-GrundlagenSQL-Datenbanken bestehen aus 1 oder mehreren sogenannten Tabellen. Jeder Datensatz der Datenbank ist genau eine Zeile in einer Tabelle.Beispiel: Ein Kneipenführer für Bayreuth. Die Tabelle kneipen:
Man kann nun auf eine dieser Tabellen 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:
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 ganze Zeile 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. Sortiert können die Datensätze mit SELECT * FROM kneipen WHERE NOTE=1 ORDER BY Name;werden. Neue Datensätze werden folgendermaßen hinzugefügt: INSERT kneipen (Name,Art,Note,Kommentar) VALUES ('Glenk','Biergarten','1','Gute Bratwürste');Vorhandene Datensätze können mit UPDATE kneipen SET Note='2',Kommentar='Die Bratwürste lassen nach' WHERE ID=2;ü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.
16) SQL-Befehle mit PHPDie obigen SQL-Befehle verwenden wir nun mit PHP. Wir wollen als Beispiel alle Datensätz aus der Tabelle kneipen in der Datenbank www2 ausgeben.
17) Ein weiterer SQL-BefehlNachdem 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, daß 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. Wollen wir den Datensatz mit ID=120 löschen, so geben wir als Abfrage an:$abfrage = "DELETE FROM kneipen 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.
18) FunktionenEin wichtiger Bestandteil einer jeden Programmiersprache ist die Fähigkeit, mehrere Befehle zu einem einzigen Befehl zusammenzufassen, d.h. neue Funktionen zu definieren. PHP hat diese Fähigkeit selbstverständlich auch.Ein Beispiel: function tag ($anzahl) { $sekunden = 3600 * 24 * $anzahl; return $sekunden; } $x = tag(7); echo "7 Tage bestehen aus $x Sekunden !";$anzahl nennt man auch Argument der Funktion. Eine Funktion kann mehrere Argumente, oder auch kein Argument besitzen: function zinseszins ($prozent,$laufzeit) { $kapital = 10000.0; $x = 1.0 + ($proz/100.0); $y = $kapital * exp( $laufzeit*log($prozent) ); return $y; } $proz = 6; $zeit = 10; $x = $zinseszins($proz,$laufzeit); echo "Das Kapital beträgt $x Euro";Mehr zu den verwendeten mathematischen Funktionen kann man wiederum im Handbuch nachlesen. Problematisch ist im obigen (zugegebenermaßen etwas konstruierten) Beispiel, daß 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, daß diese Variable bereits gesetzt ist, und wir sie nicht als Argument übergeben wollen. Dann müssen wir explizit angeben, daß die Variable "von außen" stammt. Dies geschieht durch den Befehl global: $kapital = 10000.0; function zinseszins ($prozent,$laufzeit) { global $kapital; $x = 1.0 + ($proz/100.0); $y = $kapital * exp( $laufzeit*log($prozent) ); return $y; } $proz = 6; $zeit = 10; $x = $zinseszins($proz,$laufzeit); echo "Das Kapital beträgt $x Euro";
19) String-FunktionenEin weiteres wichtiges Betätigungsfeld von PHP ist die Bearbeitung von Zeichenketten. Es gibt eine ganze Reihe von Befehlen um Zeichenketten zu manipulieren, wir stellen hier nur die wichtigsten vor, der Rest kann im Handbuch nachgeschlagen werden. trim entfernt Leerzeichen, Tabulatorzeichen etc. (sogannten "whitespace") vor dem ersten und nach dem letzten "echten" Zeichen in der Zeichenkette.$x = " Ich bin eine Zeichenkette! "; $y = trim($x);Die Befehle 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. Der Befehl ucfirst() wandelt das erste Zeichen eines Strings in Großbuchstaben um (wenn möglich). Der Befehl ucwords() hingegen wandelt in jedem Wort eines Strings das erste Zeichen in Großbuchstaben um (wenn möglich). Der folgende Befehl 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 HTML-Sonderzeichen umzugehen.
function tage ($anzahl) { $sekunden = time()+ 3600 * 24 * $anzahl; return $sekunden; } SetCookie("mycookie","Schon besucht",tage(10),"/test",".de"); 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". Ein Server kann mit PHP ein Cookie wieder entfernen, indem lediglich der Befehl setcookie mit dem Namen des Cookies als Argument angegeben wird: SetCookie("mycookie");
21) Variable VariableDies 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 NAME="feld0" > <INPUT NAME="feld1" > <INPUT NAME="feld2" > ... <INPUT NAME="feld99" >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 "feld0: $feld0 <BR>\n"; echo "feld1: $feld1 <BR>\n"; ... echo "feld99: $feld99 <BR>\n";auch folgendermaßen vorgehen. Wir basteln uns den jeweiligen Variablennamen zusammen: for ($i=0;$i<100;$i++) { $v = "feld".$i; echo "$v: ${$v} <BR>\n"; }Mit einem $v erhalten wir den Variablennamen, mit ${$v} greifen wir auf den Inhalt der Variablen mit dem Namen $v zu.
22) Arrays aus FormularenAbschließend noch ein letzter 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] "; }
Soweit zur Einführung in PHP. Natürlich spiegelt dies nur einen geringen Teil der Möglichkeiten von PHP wider. Aber das bisher Gelernte sollte es dem Leser ermöglichen, sich selbst im PHP-Handbuch neue Befehle anzueignen.
|
php-Programme.de © 1998-2002