Inhaltsverzeichnis 2
Inhaltsverzeichnis
Inhaltsverzeichnis 2
A. Die PHP-Anwendung ""FloriOffice"" 4
1. Grundlagen 4
1.1 Überblick: Ist-Stand 4
1.2 Probleme 4
1.3 Soll-Stand 5
2. Funktionen 5
2.1 Personalverwaltung 5
2.2 Einsatzverwaltung 5
2.3 Fahrzeuge und Geräte 6
2.4 Aufwandsentschädigung 6
2.5 Allgemeine Einstellungen 6
2.6 Administrationsverwaltung 6
3. Wunschfunktionen 7
B. Grundlagen der Webprogrammierung 8
3. Hypertext Markup Language 8
3.1 Definition 8
3.2 Aufbau eines HTML-Dokuments 8
3.3 Cascading Stylesheets 9
4. PHP 10
4.1 Definition 10
4.2 Der Apache HTTP Webserver 10
4.3 Aufbau von PHP-Quellcodes 10
4.4 Leistungsumfang von PHP 11
4.4.1 Objektorientierung unter PHP 12
4.5 Funktionsweise von PHP 12
5. MySQL. 13
5.1 Definition 13
5.2 Beispiel: Datenbankentwurf und Datenabfrage 13
5.3 MySQL und PHP 15
C. Design Templates 16
6. Allgemeines 16
6.1 Forderungen an eine Template-Engine 16
7. Smarty als Template-Engine 17
7.1 Definition 17
7.2 Grundlegende Funktionen 18
Inhaltsverzeichnis 3
7.3 Funktionsweise 19
D. Entwicklung der PHP-Anwendung 21
8. Entwicklungsumgebung 21
8.1 Hardware 21
8.2 Software 21
10. Realisierung am Beispiel der Personalverwaltung 21
10.1 Pflichtenheft 21
10.2 Modelle. 24
10.2.1 UML-Klassenmodell 24
10.2.2 ER-Datenbankmodell 26
10.3 PHP-Programmierung 27
10.3.1 Headerdateien 27
10.3.2 Klassendefinition 28
10.3.3 Programmablauf 31
10.4 Template Design 41
10.4.1 Personaldetails 42
10.4.2 Person löschen 45
10.4.3 Personalübersicht 46
10.4.4 Personal hinzufügen 48
11. Tests 51
11.1 Funktionstests der Module 51
11.2 Multi-User Test 51
E. Abschließende Anmerkungen 52
12. Entwicklungstand zum jetzigen Zeitpunkt. 52
13. Ausblick. 52
14. Bewertung des Einsatzes von Smarty als Template-Engine 52
14.1 Smarty und HTML-Editoren 53
15. Schlusswort. 54
Literatur - und Quellenverzeichnis 55
Abbildungsnachweis 55
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.
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.
Sie dient in allererster Linie dazu, den Personalbestand aller Abteilungen und Unterorganisationen ~:µPv(µÁZU l]À tZUY ̵ (vX Desweiteren muss es möglich 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.
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
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(vPv ^µ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.
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).
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.
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 HTML-Anweisungen, 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.
In obigem Beispiel ist ein einfaches HTML-Dokument abgebildet. Die Tags sind in eckigen Klammern gefasst und besitzen meist ein Anfangs- und Endetag (
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:
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 () 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:
Dies abgespeichert in der Datei style.css kann in den HTML folgendermaßen eingebunden werden:
OLQNUHO VW\OHVKHHWKHUI ³VW\OHFVV³W\SH ³WH[WFVV³!
Wird jetzt im HTML-Dokument die Überschrift aufgerufen wird sie automatisch ohne zusätzliche Angaben wie gewünscht formatiert. Nachträglich angegebene HTML-Befehle überschrieben jedoch die CSS Einstellungen.
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 PHP-Modul 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 Internet 1 . 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
1 Weltweiter Anteil 67,43% (Stand Januar 2004) (Wolfgarten, 2004)
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.
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
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
Arbeit zitieren:
Thomas Frietsch, 2007, Realisierung einer PHP-Anwendung mit der Template-Engine Smarty, München, GRIN Verlag GmbH
Dieser Text kann über folgende URL aufgerufen und zitiert werden:
Einbetten
DOI
Formatvorlage (Microsoft Word) für eine Diplomarbeit, Masterarbeit, Ha...
Für MS Word 2003 - Update 2010
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 25 Seiten
Formatvorlage (OpenOffice) für eine Diplomarbeit, Masterarbeit, Hausar...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 35 Seiten
Formatvorlage / Vorlage zur Erstellung einer Diplomarbeit, Bachelorarb...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 15 Seiten
Formatvorlage / Vorlage für eine Diplomarbeit / Hausarbeit
Für MS Word 2007 - dotx
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 25 Seiten
Anleitung zum Erstellen schriftlicher Arbeiten: Der Aufbau einer wisse...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 20 Seiten
Erstellen einer schriftlichen Hausarbeit
Vorlagen, Muster, Formulare, Infobroschüren
Hausarbeit, 14 Seiten
Grundtechniken wissenschaftlichen Arbeitens
Bibliografieren - Reden - Schr...
Vorlagen, Muster, Formulare, Infobroschüren
Skript, 46 Seiten
Ratgeber zur Erstellung wissenschaftlicher Arbeiten. Diplomarbeiten - ...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 39 Seiten
Thomas Frietsch hat den Text Realisierung einer PHP-Anwendung mit der Template-Engine Smarty veröffentlicht
Thomas Frietsch hat einen neuen Text hochgeladen
Flash, PHP y MySQL, contenidos dinámicos. Edición 2006
Daniel de la Cruz Heras, Carlos Zumbado Rodríguez
Beginning PHP and MySQL E-Commerce: From Novice to Professional
Cristian Darie, Emilian Balanescu
Web Database Applications with PHP and MySQL
Building Effective Database-Dr...
Hugh E. Williams, David Lane
0 Kommentare