AMIGA-Magazin
· Ausgabe
10/01 · Kurs: MySQL-Praxis auf dem Amiga (Folge 3)
von Michael Christoph
|
Was ist PHP ?
PHP ist eine Scriptsprache zur dynamischen Erstellung von Webseiten. Die Anweisungen können mit dem HTML-Code gemischt oder separat abgelegt werden. Der Syntax orientiert sich an C bzw. Java. Wer dynamische Webseiten erstellen will, kann dies, dank einfacher Datenbankanbindung, sehr leicht mittels PHP realisieren.
Der PHP-Code wird bereits serverseitig von Apache interpretiert und ausgeführt. Nur das dabei erzeugte Resultat gelangt als ganz normaler HTML-Code an den Client. Dadurch werden keine speziellen Anforderungen an den Browser gestellt, wie dies z.B. bei Java der Fall ist (s. »Serverseitig«).
PHP gibt es bereits seit einiger Zeit und findet immer mehr Verwendung. Noch stark verbreitet ist die Version 3.0 (die Dateien haben dann meist die Endung php3), wobei die neueste Version 4.0 ist. Dabei hängt es jedoch von der Konfiguration des (Apache-)Webservers ab, welche Endungen akzeptiert werden! In unseren Beispielen verwenden wir die Datei-Kennung *.php3. Eventuell müssen Sie diese für Ihr System umbenennen.
Der PHP-Code wird innerhalb von
<?php ... ?>
|
Verbindungsaufbau zum MySQL-Server
Die folgenden Beispiele arbeiten alle mit den Tabellen, die im letzten Kursteil vorgestellten wurden. Falls Sie diese noch nicht angelegt haben, sollten Sie das nun tun. Die Beispiele kümmern sich ausschließlich um die Daten in den Tabellen.
Bevor allerdings auch nur ein einziges Byte der Tabellen ausgelesen werden kann, muss eine Verbindung zwischen PHP und dem MySQL-Server hergestellt werden. Diese Aufgabe erledigt die Funktion php_connection(). Als Argumente sind Hostname, User und Passwort mitzugeben. Konnte die Verbindung hergestellt werden, wird eine Verwaltungs-Nummer zurückgeliefert, über die auch mehrere Datenbankverbindungen unterschieden werden könnten. Als nächstes muss noch die Datenbank ausgewählt werden dazu dient der Befehl mysql_select_db(). Anfragen und Aufgaben an die Datenbank werden alle über mysql_query() realisiert. Der Rückgabewert muss unbedingt gespeichert werden, da die folgenden Abfragefunktionen diesen erwarten.
Ein wichtiger Befehl ist noch echo (oder print), der den HTML-Code an den Browser sendet. Anhand der unterschiedlichen Aktionen (erfassen, suchen, löschen), wird weiter auf die einzelnen Befehle im Zusammenhang mit mySQL eingegangen. HTML- bzw. PHP-Grundlagen finden Sie in älteren Ausgaben des Amiga-Magazins [2]. Die Beispiele finden sich auf der Heft-CD zu dieser Ausgabe.
Alle Skripte haben eines gemeinsam: es werden Formulare eingesetzt, damit der Benutzer die Eingabe- und Such-Daten eintragen kann. Auf die Funktionsweise von HTML und Formularen wird hier nicht weiter eingegangen. Informationsquellen finden sie bei SelfHMTL [1]. Die Skripte enthalten sowohl die Eingabemasken, als auch den PHP-Code. In PHP können Befehlsfolgen auch in neuen Funktionen zusammengefasst werden. Diese allgemeinen Funktionen wurden in der Datei »mylibraryconnect.inc.php3 hinterlegt und werden mit include ("dateiname") in das PHP-File eingebunden.
Neue Adressen erfassen
Für die Eingabe und Erfassung der Daten dient »input.php3«. Wurde das Formular ausgefüllt, ist beim wiederholten Aufruf eine entsprechende Variable gesetzt. Da mehrere Aktionen möglich sind, hat jeder Schalter eine eindeutige Kennung. Wird z.B. auf den Schalter Nr oder Name suchen geklickt, so ist $form_person_suchen gesetzt. Danach wird festgestellt, ob eine Nummer oder ein Name eingegeben und eine entsprechende Suche in der Datenbank initiiert wurden (s. Listing 2).
Bei der Rückgabe der Werte müssen diese für den Browser aufbereitet werden. So wird z.B. ä in ä gewandelt. Diese Aufgabe wird durch die PHP-Funktion htmlentities() erledigt. Umgekehrt entfernt stripslashes() evtl. Escapes aus dem String, damit er im Klartext in die Datenbank geschrieben werden kann.
|
Danach wird durch mysql_insert_id() ermittelt, welche Bild-Nr der neue Eintrag erhalten hat. Diese Nummer ist notwendig, damit wir in der Personen-Datenbank die Verknüpfung herstellen können. Die entsprechenden Befehle entnehmen Sie Listing 4.
Vorhandene Adressen ändern und löschen
Das Skript in »input. php3« hat eine Doppelfunktion, es liest die Daten nicht nur ein, sondern ändert auch gleichzeitig bestehende Datensätze. Dazu wird nach der Personen-Nummer oder dessen Namen gesucht. Die angezeigten Daten können verändert und mit dem Befehl zum Aktualisieren wieder in die Datenbank zurückgeschrieben werden. Das erfolgt serverseitig mit der Anweisung UPDATE person ...". Die Einträge für E-Mail-Adressen und Fotos lassen sich mit dieser Routine nicht bearbeiten!
Um einen Eintrag aus der Adress-Datenbank zu löschen, wurde das Skript »delet.php3« entwickelt. Es wird zuerst der komplette Datenbank-Inhalt angezeigt. Jede Zeile enthält eine zusätzliche Spalte mit dem Löschen-Knopf. Wird dieser gedrückt, wird die betreffende Zeile aus der Datenbank gelöscht. Diese Variante ist nur solange praktikabel, wie die Datenmenge klein und überschaubar ist. Bei mehreren hundert Einträgen, muss dagegen eine Suchmaske verwendet werden. Das einfachste ist das Löschen einer E-Mail-Adresse, da hierbei weiter nichts passiert. Wird dagegen eine Person gelöscht, werden zuerst alle seine E-Mail-Adressen gelöscht:
$result = mysql_query ("DELETE FROM email WHERE person_iNr = $formNr");
und erst danach der eigentliche Personen-Eintrag:
$result = mysql_query ("DELETE FROM person WHERE iNr = $formNr");
Die Reihenfolge spielt hierbei keine Rolle, solange nicht später auf einen Eintrag der bereits gelöschten Datenbank (z.B. Personen-Nummer) zurückgegriffen wird. Da aber durchaus mehrere Client gleichzeitig auf eine Datenbank zugreifen können, ist es in der Praxis vorteilhaft, von innen nach außen zu löschen. Also werden zuerst alle abhängigen Datensätze (email) und erst zum Schluss die übergeordnete Datenbank (person) aus der Datenbank entfernt. Das Foto kann nur direkt gelöscht werden und nicht beim Löschen einer Person. Dabei müssen allerdings alle Personensätze korrigiert werden, die auf das Foto verwiesen haben. Denn sonst weisen die Personen auf nicht mehr existierende Fotos.
Adressen suchen
Das Beispiel-Skript »find.php3« realisiert die Suche nach Einträgen. Die meiste Logik verbirgt sich in diesem Programm. Es ist vorgesehen, nach Nummer, Familienname und E-Mail-Adresse zu suchen. Aber es besteht noch zusätzlich die Möglichkeit, die Datenbank nach Familienname und E-Mail-Adresse gleichzeitig zu durchforsten. Dabei kommt keine genaue Suche zu Stande, sondern es wird alles gefunden, was den Suchbegriff auch nur teilweise enthält:
$search .= " sFamilienname LIKE ¸%$formFamilienna me%`";
Dazu könnten mit if-else-Konstrukten verschiedene Suchanfragen zusammengestellt werden. Da diese aber zum großen Teil immer identisch sind, wird bei der gemeinsamen Suche die Suchanfrage »dynamisch« gebildet. Zur Kontrolle wird dieser auch mit der Anzahl Treffern als erstes angezeigt. Zu jedem Treffer wird neben der Personen-Nummer und dem Familiennamen auch eine E-Mail-Adresse angezeigt. Sind mehrere E-Mail-Adressen vorhanden, wird für jede ein eigener Block incl. der Personendaten generiert. Ist ein Foto hinterlegt, wird es auch angezeigt. Dazu wird das Konstrukt in Listing 5 verwendet.
|
while($row = mysql_fetch_object())
kann ein Satz nach dem anderen ausgelesen werden. Dabei wird der Feldname verwendet: $row->sFamilienname. Alternativ ist auch der Einsatz von mysql_fetch_row() denkbar. Dann liegen die Daten allerdings als Array vor ($row[0]. Die Anzahl an Einträgen liefert mysql_num_fields(). Die Beispiele zu diesem Kursteil sind kommentiert und sollten somit leicht verständlich sein. Die unterschiedlichen Techniken zeigen, wie auf die Daten zugegriffen werden kann. Sie bieten aber einen großen Raum für Erweiterungsmöglichkeiten und laden zur persönlichen Anpassung ein. Das vorgestellte Beispiel soll lediglich als Grundgerüst dienen.
Literatur:
[1] | Stefan Münz und Wolfgang Nefzger, HTML-4-Handbuch, Franzis Verlag, ISBN 3-7723-7514-6, WWW: http://www.franzis.de |
[2] | Martin Steigerwald, Pures Vergnügen Amiga-Magazin 10/2000,Seite 22 |
Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster
AMIGA schicken.
Zuletzt aktualisiert am 23. Oktober 2001, Michael Christoph.