Anhand einer konkreten Anwendung wird der Entwurfsprozess einer Webapplikation unter einer PHP/MySQL-Umgebung dargestellt. Hauptaugenmerk liegt dabei auf die PHP Bibliothek "Smarty", einer OpenSource Templateengine.
Inhaltsverzeichnis
A. Die PHP-Anwendung ""FloriOffice""
1. Grundlagen
1.1 Überblick: Ist-Stand
1.2 Probleme
1.3 Soll-Stand
2. Funktionen
2.1 Personalverwaltung
2.2 Einsatzverwaltung
2.3 Fahrzeuge und Geräte
2.4 Aufwandsentschädigung
2.5 Allgemeine Einstellungen
2.6 Administrationsverwaltung
3. Wunschfunktionen
B. Grundlagen der Webprogrammierung
3. Hypertext Markup Language
3.1 Definition
3.2 Aufbau eines HTML-Dokuments
3.3 Cascading Stylesheets
4. PHP
4.1 Definition
4.2 Der Apache HTTP Webserver
4.3 Aufbau von PHP-Quellcodes
4.4 Leistungsumfang von PHP
4.4.1 Objektorientierung unter PHP
4.5 Funktionsweise von PHP
5. MySQL
5.1 Definition
5.2 Beispiel: Datenbankentwurf und Datenabfrage
5.3 MySQL und PHP
C. Design Templates
6. Allgemeines
6.1 Forderungen an eine Template-Engine
7. Smarty als Template-Engine
7.1 Definition
7.2 Grundlegende Funktionen
7.3 Funktionsweise
D. Entwicklung der PHP-Anwendung
8. Entwicklungsumgebung
8.1 Hardware
8.2 Software
10. Realisierung am Beispiel der Personalverwaltung
10.1 Pflichtenheft
10.2 Modelle
10.2.1 UML-Klassenmodell
10.2.2 ER-Datenbankmodell
10.3 PHP-Programmierung
10.3.1 Headerdateien
10.3.2 Klassendefinition
10.3.3 Programmablauf
10.4 Template Design
10.4.1 Personaldetails
10.4.2 Person löschen
10.4.3 Personalübersicht
10.4.4 Personal hinzufügen
11. Tests
11.1 Funktionstests der Module
11.2 Multi-User Test
E. Abschließende Anmerkungen
12. Entwicklungstand zum jetzigen Zeitpunkt
13. Ausblick
14. Bewertung des Einsatzes von Smarty als Template-Engine
14.1 Smarty und HTML-Editoren
15. Schlusswort
Literatur- und Quellenverzeichnis
Abbildungsnachweis
A. Die PHP-Anwendung ""FloriOffice""
1. Grundlagen
Mit der Anwendung ""FloriOffice"" soll eine Anwendung erstellt werden, welche die Verwaltung von Feuerwehren vereinfacht.
Der Name ""FloriOffice"" setzt sich zusammen aus "Flori" für "Florian" (Schutzpatron der Feuerwehren) und "Office" für "Büro".
1.1 Überblick: Ist-Stand
Aus eigener Erfahrung weiß ich, dass gerade bei kleineren Freiwilligen Feuerwehren auf dem Land eine zentrale Verwaltung aller betriebsrelevanten Daten sich als äußerst schwierig erweist. Diese Feuerwehren bestehen meist aus mehreren kleineren Abteilungen, deren Verwaltungsarbeit meistens vom jeweiligen Abteilungskommandanten ohne abteilungsübergreifende Dokumentationsstandards erledigt wird. Beispiel der dezentralen ländlichen Struktur (Kartenmaterial: Google Earth)
1.2 Probleme
Das Fehlen solcher zentralen Dokumentationsstrukturen führt dazu, dass die Besorgung von benötigten Datensätzen zeit- und nervenintensiv werden kann.
Aus meiner Arbeit bei eben solch einer ländlich geprägten Freiwilligen Feuerwehr will ich hier ein exemplarisches Beispiel geben. Ziel war es, eine gemeinsame, aktuelle Liste aller Jugendfeuerwehrmitglieder aus den vier vorhandenen Abteilungen zu verfassen - mit Namen, Adressen und Geburtsdaten. Zwei Abteilungen haben innerhalb einer Woche eine Liste per Email gesendet. Eine war als Worddokument verfasst, eine andere als Exceldokument. Die dritte Abteilung hat nach drei Wochen eine unvollständige Liste gesendet und in einer Abteilung musste durch mehrere Telefonanrufe eine Email-Adresse der zuständigen Person erst besorgt werden. Alles in allem hat es gut vier Wochen gedauert bis diese Liste vollständig war. Aktuell war diese aber schon zu diesem Zeitpunkt nicht mehr.
Obengenanntes Beispiel ist leider kein Einzelfall, war aber nicht kritisch für die feuerwehrtechnische Arbeit. Stellen wir uns jedoch ein Szenario vor, bei dem der Verantwortliche für Atemschutzgeräteträger durch langsame Kommunikationswege dringend notwendige ärztliche Untersuchungen nicht veranlassen kann, da er nicht schnell und unkompliziert auf die Personaldaten zugreifen kann. Würde dieser Feuerwehrmann ohne ärztliche Untersuchung verunfallen, hätte dies in erster Linie strafrechtliche Folgen für den Beauftragten, welcher aber im Prinzip nichts falsch gemacht hat.
1.3 Soll-Stand
Was also gebraucht wird ist eine Software, die zentral jederzeit aktuelle Daten bereit hält. Aufgrund der ländlichen Strukturen müssen die Anwender von zu Hause auf diese Daten zugreifen können. Dies erfordert eine Vernetzung der Anwender, welche aus Kostengründen nur über das Internet realisierbar ist. Die Wahl des Internets als Client-Server Verbindung ermöglicht, theoretisch die Nutzung des Programms von jedem Punkt der Erde aus. Selbstverständlich erfordert dies auch zusätzliche Sicherheitsmaßnamen, auf die später noch detailiert eingegangen wird.
Die Anwendung soll eine Webanwendung sein. Das heißt, dass keine spezielle grafische Benutzeroberfläche erstellt werden muss und die Software neben einem Internetanschluss lediglich einen Webbrowser benötigt. Ein weiterer Grund für diese Wahl der Benutzeroberfläche ist, dass die Benutzung von Webanwendungen heutzutage für die meisten Personen schon zur Alltäglichkeit geworden ist. Eine spezielle grafische Benutzeroberfläche für die Anwendung brächte somit eine längere Eingewöhnungszeit mit sich.
Die Programmierung der Anwendung auf Webebene erfordert für eventuelle Korrekturen lediglich HTML und PHP-Kenntnisse. In den meisten Feuerwehren gibt es mindestens eine Person, welche sich damit auskennt. Ein Programm zu erstellen, welches alle Eigenheiten verschiedener Feuerwehren abdeckt wäre viel zu zeitintensiv, sodass diese Eigenheiten, welche über das gemeinsame Grundsystem hinausgehen, leicht direkt vor Ort durch erfahrene Personen hinzugefügt werden können.
Durch die Definition verschiedener Benutzergruppen soll darüberhinaus gewährleistet sein, dass ein Benutzer auch nur die Daten erhält, die er wirklich benötigt, was auch dem Datenschutz zugute kommt.
2. Funktionen
2.1 Personalverwaltung
Sie dient in allererster Linie dazu, den Personalbestand aller Abteilungen und Unterorganisationen (Jugendfeuerwehr, Aktive Wehr,...) zu erfassen. Desweiteren muss es moglich sein für jede Person eine detailierte Personalakte anzulegen in der Daten über die Laufbahn, Lehrgänge, Untersuchungen und weitere Eigenschaften festgehalten werden. Selbstverständlich müssen diese Personalstammsätze jederzeit bearbeitbar sein.
2.2 Einsatzverwaltung
Die Einsatzverwaltung ermöglicht alle Einsätze genauestens zu dokumentieren: "Wann war welcher Einsatz? Welche Fahrzeuge und Personen waren anwesend? Welche Verbrauchsmaterialien wurden benötigt? Welche feuerwehrtechnischen Arbeiten wurden durchgeführt?"
Diese Daten sind neben ihrer Eigenschaft als Einsatzstatistische Erfassungsmethode für beispielsweise Jahresberichte auch Grundlage für finanzielle Berechnungen. Jeder Einsatz kostet Geld, das je nach Einsatzart durch die Gemeinde vom Verursacher eingefordert wird. Durch eine übersichtliche und einheitliche Darstellung ist der genaue Personal- und Materialeinsatz leicht berechenbar. Natürlich wäre auch denkbar diese Berechnung zu automatisieren, dieses ist jedoch durch unter-schiedliche Abrechnungsmethoden, die von Gemeinde zu Gemeinde differieren, äußert komplex zu realisieren.
2.3 Fahrzeuge und Geräte
Was wäre eine Feuerwehr ohne ihre Feuerwehrfahrzeuge? Natürlich kommen hier auch auf die kleinen Feuerwehren im ländlichen Raum vom Gesetzgeber Bestimmungen über diese. Jede Bewegung und Wartung muss und wird penibel aufgeschrieben. Und "aufgeschrieben" ist hier wirklich noch in seiner ursprünglichsten Form gemeint t nämlich von Hand. Keinesfalls soll hier das Programm als Ersatz für Fahrtenbücher zum Einsatz kommen, denn dies würde einen
PC mit Internetanschluss im Feuerwehrhaus verlangen, da eine spätere Eintragung zu Hause sicher vergessen wird. Jedoch ist es gut vorstellbar, die Wartungs- und TÜV-Protokolle sowie die Inventarisierung der einzelnen Geräte zentral zu Sammeln, damit gleich auf den ersten Bick erkenntlich ist, welches Gerät wann zum Feuerwehr-TÜV o.ä. muss.
2.4 Aufwandsentschädigung
Auch wenn es "Freiwillige" Feuerwehr heißt. Eine kleine Aufwandsentschädigung für die oft nächtliche Alarmierung gibt es schon. Diese Programmfunktion lässt sich einfach durch Kombination der Einsatz- und Personaldaten verwirklichen. Sind die Personen, die an einem Einsatz teilgenommen haben in ""FloriOffice"" eingetragen, so ist es am Ende eines zeitlichen Abschnittes ein Leichtes zu berechnen, an wie vielen Einsätzen ein Feuerwehrmann teilgenommen hat und welche Entschädigungssumme ihm zu vergüten ist.
Für diese Programmfunktion ist jedoch ein kleines Einstellungsmenü notwendig. Es ist oft unterschiedlich welche Summe die Feuerwehren ihren Einsatzkräften als Entschädigung zukommen lassen. Zum Beispiel erhält ein Feuerwehrmann der Feuerwehr Rheinmünster pauschal 10 ¦ } Einsatz, während ein Feuerwehrmann der Feuerwehr Offenburg 10 ¦ } vP ( vP v ^µv i Einsatz erhält.
2.5 Allgemeine Einstellungen
In dieser Funktion verstecken sich funktionsübergreifende Einstellmöglichkeiten. Es wird hier definiert, welche Abteilungen einer Feuerwehr angehören oder welche Lehrgänge und Dienstgrade ein Feuerwehrmann absolvieren bzw. erreichen kann.
2.6 Administrationsverwaltung
Hinter der Adminstrationsverwaltung verbirgt sich vor allem die Organisation der Benutzerkonten, also das Festlegen von Benutzername, Passwort und die Gruppenzugehörigkeit. Diese bestimmt wie tief sich der Benutzer in der Anwendung bewegen darf.
3. Wunschfunktionen
Obengenannte Funktionen sind auch als Muss-Funktionen zu bezeichnen, die ""FloriOffice"" auf jeden Fall am Ende der Entwicklung haben sollte. Weitere Funktionen sind noch denkbar, welche an dieser Stelle noch kurz beschrieben werden sollen:
Homepage-Funktion:
Da heutzutage fast jede Feuerwehr eine Homepage hat, auf der sie sich der Öffentlichkeit vorstellt sind gerade im Bereich der Fahrzeuge und Einsätze alle Daten, welche auch später auf der Homepage stehen, sollen bereits vorhanden. Es ist also nur eine Schnittstelle erforderlich, die es dem Webmaster der Homepage erlaubt diese Daten zu nutzen.
Auch eine Art Terminkalender für Proben und andere Veranstaltungen könnte man über "FloriOffice" pflegen und ähnlich wie die Fahrzeug- und Einsatzstatistiken in die Homepage einbinden. Auch ein Newssystem wäre eine denkbare Erweiterung der Anwendung.
Fahrzeugreservierung:
Nicht jeder Abteilung ist es aus finanziellen und/oder bautechnischen Gründen möglich eine breite Palette an Feuerwehrfahrzeugen bereitzustellen. Gerade sogenannte MTWs
(Mannschaftstransportwagen) sind oft für Besorgungen, Ausflüge oder Lehrgangsbesuche ideale Fahrzeuge, über welche aber nicht alle Abteilungen verfügen. Diese Fahrzeuge müssen daher von anderen Abteilungen ausgeliehen werden. Eine einfache Online-Reservierung der Fahrzeuge könnte unnötiges Hin- und Herfahren vermeiden, denn nicht immer sind die gewünschten Fahrzeuge auch wie geplant verfügbar.
Man muss aber eingestehen, dass diese Funktion nur sinnvoll ist, wenn auch wirklich alle ihre Reservierungen rechtzeitig eintragen (Einsätze natürlich ausgenommen).
B. Grundlagen der Webprogrammierung
In diesem Hauptkapitel werden die verwendeten Technologien wie HTML und PHP grob erklärt: Wie man mit ihnen arbeitet, was man mit ihnen machen kann und wo die Schwächen liegen.
3. Hypertext Markup Language
3.1 Definition
Die Hypertext Markup Language, auch kurz HTML genannt, ist die Sprache, die der Webbrowser versteht. Oft fälschlicherweise als Programmiersprache bezeichnet ist HTML eine sogenannte Auszeichnungssprache, die nur dazu dient dem Browser Formatierungseigenschaften für Webinhalte zu übergeben. Diese Formatierungseigenschaften werden in sogenannten Tags angegeben. Wie der Browser die Formatierungen darstellt, bleibt ihm überlassen. Er interpretiert also nur die HTMLAnweisungen, die sogenannten Tags.
HTML wurde im Jahre 1989 zum ersten Mal am CERN in Genf spezifiziert. Die letzte HTML Version 4.01 von 1999 wurde Anfang 2000 den Regeln von XML angepasst und heißt seither XHTML, das aktuell in der Version 1.1 vorliegt.
3.2 Aufbau eines HTML-Dokuments
Ein HTML-Dokument lässt sich in zwei Abschnitte gliedern: In den Kopf (Head) und den Körper (Body). Im Kopf werden allgemeine Elemente angegeben, wie etwa der Titel der Webseite, Metainformationen oder die Einbindung von Scriptsprachen wie JavaScript.
Der Kopf enthält die Inhalte, die schlussendlich vom Webbrowser dargestellt werden. Also Texte, Grafiken, Tabellen, Hyperlink, Formulare und noch vieles mehr.
Abbildung in dieser Leseprobe nicht enthalten
In obigem Beispiel ist ein einfaches HTML-Dokument abgebildet. Die Tags sind in eckigen Klammern gefasst und besitzen meist ein Anfangs- und Endetag (<tag> </tag>), in dem der zu formatierende Text eingebettet ist.
In der Abbildung rechts ist die Ausgabe des Quelltextes mit dem Webbrowser abgebildet.
HTML ist eine statische Auszeichnungssprache. Es ist nicht möglich ohne Nicht-HTML-Befehle einer Webseite dynamische Inhalte zu geben, und sei es nur etwas Einfaches wie das aktuelle Datum. JavaScript ist eine Möglichkeit dynamische Inhalte in eine Seite zu integrieren. Das Ausführen des Scriptcodes erfolgt jedoch clientseitig durch den Webbrowser. Je nach verwendetem Browser können diese das Script unterschiedlich ausführen.
Hier noch eine kleine Liste der gebräuchlichsten HTML-Tags:
Abbildung in dieser Leseprobe nicht enthalten
3.3 Cascading Stylesheets
Cascading Stylesheets (CSS) bieten dem Webentwickler die Möglichkeit einen Webauftritt einheitlich zu gestalten. Diese t meist in externen Dateien abgelegten t Formatierungsregeln erlauben es Formatvorlagen zu erstellen, die einfach nur noch in das HTML-Dokument eingebunden werden müssen. Beispielsweise kann in der Stylesheet-Datei definiert werden, dass alle Überschriften der Stufe 2 (<h2>) in der Schriftart Arial, der Schriftgröße 10, der Farbe Blau und fett gedruckt sein sollen. Werden diese Stylesheets in alle Dokumente eingebunden ergibt sich automatisch ein einheitliches Bild.
Das Listing des obengenannten Beispiels lautet denn wie folgt:
Abbildung in dieser Leseprobe nicht enthalten
Dies abgespeichert in der Datei style.css kann in den HTML folgendermaßen eingebunden werden:
Abbildung in dieser Leseprobe nicht enthalten
Wird jetzt im HTML-Dokument die Überschrift <h2> aufgerufen wird sie automatisch ohne zusätzliche Angaben wie gewünscht formatiert. Nachträglich angegebene HTML-Befehle überschrieben jedoch die CSS Einstellungen.
4. PHP
4.1 Definition
PHP ("PHP: Hypertext Preprocessor", ursprünglich "Personal Home Page Tools" t Version 1.0 vom 8.6.1995) ist im Gegensatz zu HTML eine Programmiersprache (besser gesagt Skriptsprache), die hauptsächlich dazu verwendet wird Webseiten dynamisch zu gestalten. Neben grundlegenden Funktionen, wie Schleifen und If-Abfragen, bietet PHP in der aktuellen Version 5 fast alle Vorzüge der Objektorientierung.
In den meisten Anwendungsfällen ist die PHP-Engine als Modul in einem Webserver integriert, aber es ist auch möglich andere Ausgabemöglichkeiten als den Webbrowser für seine Anwendungen zu verwenden. Dies sind jedoch Ausnahmen.
Warum man Webseiten dynamisch erzeugen will liegt auf der Hand. Gerade bei großen Internetauftritten mit häufigen Aktualisierungen bietet es sich an, die Inhalte aus Datenbanken zu beziehen und diese anzuzeigen, statt in den Quellcode des HTML-Dokumentes von Hand hinein zu schreiben. Daher bietet PHP viele Module für Datenbankanbindungen und Auswertungen.
Die Verfügbarkeit von PHP ist sehr hoch. Fast jeder Webserver, den man mieten kann, hat das PHPModul als Teil eines Apache Webserver installiert und verfügt über eine MySQL Datenbank (LAMP/WAMP t Linux/Windows Apache MySQL PHP). Diese Softwarepakete sind OpenSource und kostenlos via Download erhältlich.
Gerade bei großen Unternehmen ist aber auch die Kombination eines Windows-Servers mit Microsofts Internet Information Services als Webserver, ASP.NET als Skriptsprache und MSSQL als Datenbank anzutreffen.
4.2 Der Apache HTTP Webserver
Der Apache HTTP Webserver der Apache Software Foundation ist der am häufigsten eingesetzte Webserver im Internet1. An zweiter Stelle kommt das bereits oben genannte Internet Information Services (IIS) aus dem Hause Microsoft. Apache liegt momentan in der Version 2 (April 2002) vor und ist für jedermann frei zugänglich und auch für viele Betriebssysteme verfügbar.
Der Apache Server ist Modular aufgebaut. Das heißt, dass man je nach Verwendung und Bedürfnis Module aus dem Internet nachinstallieren kann. Eines der wichtigsten Module ist eben PHP, das standardmäßig nicht installiert ist und somit nachträglich in den Server integriert werden muss. Neben dem PHP-Modul gibt es aber noch viele weitere Module wie beispielsweise auch ein Modul für ASP.NET.
Im Bereich Benutzerauthentifizierung und Sicherheit bietet der Apache Server direkten Zugriff auf Datenbankserver um die vom Benutzer eingegeben Log-In-Daten zu verifizieren. Als wichtigen Punkt für die Sicherheit unterstützt Apache SSL-Verschlüsselung auf der Kommunikationsebene.
4.3 Aufbau von PHP-Quellcodes
In der einfachsten Form steht der PHP-Quellcode vermischt mit HTML-Anweisungen in einer Datei. Wie man diese einfach und präzise trennt wird in Kapitel 6 näher erläutert.
Damit der Webserver weiß, welcher Teil des Dokuments PHP-Code und welcher Teil HTML-Code ist, werden die Blöcke mit PHP-Code von
Abbildung in dieser Leseprobe nicht enthalten
umklammert, wobei das php hinter dem Fragezeichen auch weggelassen werden kann.
Variablen und Objekte beginnen grundsätzlich mit einem $-Zeichen, ansonsten ähnelt die Syntax der von C++, ohne die teilweise unbeliebten Zeiger. Ausgaben innerhalb des PHP-Blocks erfolgen mit dem Befehl echo.
Im folgenden Listing ist eine komplette Datei aufgelistet inklusive aller HTML und PHP Elemente.
Abbildung in dieser Leseprobe nicht enthalten
Die Webbrowserausgabe sehen sie rechts abgebildet. Wie vermutet wird eine Überschrift ganz wie in HTML gewohnt ausgegeben. Anschließend erfolgt der PHP- Teil in dem zuerst ein Array mit dem Namen $name erzeugt wird, welches die Elemente "Franz", "Heinz" und "Otto" beinhaltet. Anschließend wird jedes Element durch die Indizierung mit der Zählvariabel $i mit anschließendem Zeilenumbruch am Bildschirm ausgegeben.
Zu erwähnen ist, dass PHP nicht wie viele andere Programmiersprachen eine Initialisierung der Variablen benötigt, sondern selbst entscheidet um welchen Datentyp es sich handelt. In unserem Fall ein Array aus Strings.
4.4 Leistungsumfang von PHP
Abbildung in dieser Leseprobe nicht enthalten
Neben der Erzeugung von HTML-Dokumenten bietet PHP unter anderem die Möglichkeit Grafiken oder PDF-Dokumente zu erzeugen. Aber auch Programme, die nichts mit dem Internet zu tun haben, lassen sich durch eine grafische Benutzeroberfläche erstellen.
Ein großer Bereich nimmt das Auslesen und Auswerten von Datenbanken ein. PHP kann mit vielen verschiedenen Datenbanktypen zusammenarbeiten, sogar mehrere Typen in einer Datei.
Durch sogenanntes Session-Management können mehrere Benutzer gleichzeitig eine Seite individuell betrachten. Als Beispiel sei an dieser Stelle ein Internetforum zu nennen. Obwohl alle Benutzer die gleiche Seite aufrufen, weiß der Webserver anhand von bestimmten Session-Variablen, die meist nach der Anmeldung eines Benutzers erstellt werden, welcher Benutzer an welchem Endsystem arbeitet, sodass neue Forenbeiträge auch dem richtigen Benutzer zugeordnet werden. SessionVariablen löschen sich in den meisten Fällen mit dem Schließen des Browsers. PHP bietet aber die Möglichkeit die Session-Daten lokal unter Verwendung von Cookies zu speichern.
Häufig vorkommende Code-Fragmente lassen sich zu Funktionen definieren, die jederzeit aufgerufen werden können.
Auch die aus C bekannten Header-Dateien gibt es in ähnlicher Form bei PHP. Logisch zusammengehörende Elemente des Codes werden in externe Dateien abgespeichert, die beim Start des Skriptes über den include-Befehl eingebunden werden. Dadurch ergibt sich allgemein eine bessere Lesbarkeit.
Neben solchen einfachen Leistungen gibt es noch weitere Funktionen von PHP, die hier nur als Liste aufgeführt werden: Fehlerbehandlung (Exception Handling seit PHP5), Debugging, Automatische Dokumentation, ZIP-Komprimierung, Caching und vieles mehr.
4.4.1 Objektorientierung unter PHP
Obwohl schon in den Versionen 3 und 4 von PHP Grundzüge der Objektorientierung vorhanden waren können einige objektorientierte Prinzipien erst seit der aktuellen Version 5 verwendet werden. Alles in allem ist PHP aber auch in dieser Version immer noch sehr prozedural aufgebaut. Während Version 4 sich grob gesagt darauf beschränkt Klassen mit ihren Attributen, Konstruktoren und Methoden zu definieren, diese an andere Klassen zu Vererben und Objekte von ihnen zu erzeugen bietet PHP 5 neue objektorientierte Ansätze.
Neu ist die Kapselung von Attributen und Methoden, das heißt, die Möglichkeit Eigenschaften des Objekts nach außen mit dem Schlüsselwort private zu verbergen. Auch werden Objekte nicht mehr wie bei PHP4 Call by Value sondern Call by Reference übergeben. Wird ein Objekt kopiert entsteht nicht automatisch, wie bisher, ein neues, unabhängiges Objekt sondern nun wird bei der Manipulation eines Objekts auch gleich die Kopie, die ja nun nur noch eine Referenz ist, mit manipuliert. Auch neu in PHP5 sind Destruktoren, also Funktionen die beim Löschen von Objekten aufgerufen werden.
4.5 Funktionsweise von PHP
PHP wird im Gegensatz zu JavaScript nicht vom Client sondern auf dem Server ausgeführt. Dabei übersetzt das PHP-Modul des Webservers den PHP-Quellcode in HTML, welches an den Webbrowser gesendet wird. Ein Webbrowser versteht also kein PHP.
Die Vorteile der serverseitigen Verarbeitung liegen in der prinzipiellen Egalität der Wahl des Webbrowsers. Da nur HTML vom Webserver übertragen wird, werden an den Browser keine speziellen Anforderungen gestellt.
Natürlich gibt es auch Nachteile. Jeder Aufruf eines PHP-Dokuments führt dazu, dass dieses erst in HTML übersetzt werden muss. Dies belastet die Rechenleistung der Webserver. Dieser Nachteil spielt heutzutage so gut wie keine Rolle mehr, da die Webserver meist sehr leistungsfähig sind. Ein weiter Nachteil liegt in der Entwicklung selbst. Während man eine HTML-Seite ohne Webserver lokal betrachten kann, muss für die Betrachtung einer PHP-Seite ein lokaler Webserver eingerichtet werden.
In der nachfolgenden Grafik ist der prinzipielle Ablauf zwischen Seitenaufruf und Seitenausgabe nochmals dargestellt.
Abbildung in dieser Leseprobe nicht enthalten
Quelle: http://upload.wikimedia.org/wikipedia/de/6/67/PHP_funktionsweise.svg
5. MySQL
5.1 Definition
Der MySQL-Datenbankserver der schwedischen Firma MySQL AB ist ein OpenSource Datenbankverwaltungssystem, das häufig in Verbindung mit PHP eingesetzt wird.
In der aktuellen Version 5 bietet MySQL AB grafische Administrationsprogramme (MySQL Administrator / MySQL Query Browser) für Windows, die es ermöglichen ohne größere Schwierigkeiten Datenbanken und Tabellen zu entwerfen sowie Daten einzutragen, zu ändern oder zu löschen.
MySQL unterstützt beliebig viele Datenbanken mit beliebig großen Tabellen. Die Datenbankabfragen können Tabellen-, Datenbank- und sogar Serverübergreifend ausgeführt werden. Die Befehle vom MySQL, sind quasi identisch zum SQL-Standard (SQL=Structured Query Language) und bieten somit alle Möglichkeiten eines relationalen Datenbanksystems. Obwohl der SQL-Standard schon im Jahre 1986 (ANSI) bzw. 1987 (ISO) veröffentlich wurde konnte er sich bis heute behaupten.
Neben MySQL AB bieten noch andere namhafte Softwarehäuser (MSSQL, PostgreSQL) ihre Versionen von SQL an, die natürlich t wie auch bei MySQL AB t durch eigene Erweiterungen den Standard ergänzen.
PHP bietet ein Modul zur Nutzung dieses Datenbanksystems, welches leider ab Version 5 nicht mehr standardmäßig aktiviert ist.
5.2 Beispiel: Datenbankentwurf und Datenabfrage
Eine relationale Datenbank kann man als eine Sammlung von Tabellen sehen. Ohne näher darauf einzugehen kommen wir gleich zu einem einfachen, gerne zitierten Beispiel:
- Ein Student besitzt eine Matrikelnummer und einen Namen. Da die Matrikelnummer hochschulweit nur einmal vorkommt ist sie ein sogenannter Primärschlüssel (primary key).
- n Studenten hören m Vorlesungen
- Diese Vorlesungen besitzen jeweils eine Vorlesungsnummer und einen Titel, wobei die Vorlesungsnummer wieder der Primärschlüssel ist
Diese Primärschlüssel sind eindeutige Identifikationsmerkmale.
Im Datenbankmodelldiagramm (ER t Entity Relationship) sieht das Beispiel wie folgt aus:
Abbildung in dieser Leseprobe nicht enthalten
Unten abgebildet sind beispielhafte Tabellen für oben gezeigtes Modell.
Abbildung in dieser Leseprobe nicht enthalten
Wie man erkennen kann, ist bei sogenannten n zu m (n:m) Beziehungen, im Fachbegriff auch Entitäten genannt, eine Hilfstabelle t in unserem Fall "hört" t erforderlich. Das liegt daran, dass die Tabellen statisch sind. Man kann also nicht in der Tabelle "Student" eine Spalte "Vorlesungsnummer" hinzufügen, da man nicht weiß, wie viele Vorlesungen ein Student hören wird und die Anzahl von Vorlesungen bei jedem Student unterschiedlich ist.
Zum Auslesen der Daten gilt die "SFW-Block"-Anweisung (SELECT FROM WERE). Will man jetzt anhand unseres Beispiels wissen, welche Studenten die Vorlesung Datenbanken hören, sieht die Abfrage wie folgt aus:
Abbildung in dieser Leseprobe nicht enthalten
Was hier passiert ist vergleichbar mit dem Anfügen (JOIN) der Tabellen "Student" und "Vorlesung" an die Tabelle "hoert". Um dies zu verdeutlichen ist unten eine Tabelle zu sehen, wie man sie sich vereinigt vorstellen kann.
Abbildung in dieser Leseprobe nicht enthalten
Durch das SELECT DISTINCT s.Name werden nun die Namen aller Studenten ausgegeben. Durch den Anhang WHERE v.Titel='Datenbanken' werden schlussendlich nur die Namen der Studenten ausgegeben, die auch die Vorlesung "Datenbanken" besuchen.
Ausgabe: Müller
Schmidt
[...]
1 Weltweiter Anteil 67,43% (Stand Januar 2004) (Wolfgarten, 2004)
-
-
-
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen.