Vereinsinterne Kommunikationsplattform als

Werbung
Ausgewählte Kapitel der Informatik
„Vereinsinterne
Kommunikationsplattform
als Webanwendung“
eine Ausarbeitung von
Klaus Thieringer,
Matrikelnummer 163320
AK Informatik 1
Klaus Thieringer – 163320
1
Inhaltsverzeichnis
1Einführung......................................................................................................................................3
1.1Problemstellung......................................................................................................................3
1.2Definitionen.............................................................................................................................3
1.2.1Abgrenzung des Themas................................................................................................3
2Hintergrund....................................................................................................................................3
2.1Vereinsstruktur........................................................................................................................3
2.2aktuelle Situation....................................................................................................................4
2.3Möglichkeiten..........................................................................................................................5
2.4Ähnliche Anwendungen..........................................................................................................6
3Voraussetzungen............................................................................................................................7
3.1Technische Voraussetzungen.................................................................................................7
3.1.1Dienste............................................................................................................................7
3.1.2Software..........................................................................................................................8
3.2Logische Voraussetzungen.....................................................................................................9
3.2.1Programmiersprachen.....................................................................................................9
3.2.1.1HTML.....................................................................................................................10
3.2.1.1.1Codebeispiel einer HTML-Datei.....................................................................10
3.2.1.1.2Ergebnis des HTML-Dokuments.....................................................................11
3.2.1.2CSS.......................................................................................................................12
3.2.1.2.1Codebeispiel einer CSS-Datei........................................................................13
3.2.1.2.2Ergebnis des HTML-Dokuments mit CSS-Layout...........................................14
3.2.1.3php.........................................................................................................................14
3.2.1.4SQL.......................................................................................................................15
3.2.1.4.1Beispielabfragen in SQL.................................................................................15
3.2.1.5JavaScript..............................................................................................................16
4Umsetzung...................................................................................................................................16
4.1Datenbankschema................................................................................................................16
4.1.1intern_users..................................................................................................................17
4.1.2intern_event..................................................................................................................17
4.1.3intern_eventuser............................................................................................................18
4.1.4intern_eventart..............................................................................................................18
4.1.5intern_kommentar.........................................................................................................18
4.1.6intern_news...................................................................................................................18
4.1.7intern_register / intern_registeruser...............................................................................18
4.1.8intern_rechte / intern_rechteuser...................................................................................18
4.2Design..................................................................................................................................19
4.3Weboberfläche......................................................................................................................19
4.4Script-Funktionen..................................................................................................................19
4.4.1Module, Funktionen und Includes..................................................................................19
4.4.2Formulare, GET, POST.................................................................................................20
4.4.3if {} else {}......................................................................................................................20
4.4.4Datenbankzugriff...........................................................................................................20
5Zusammenfassung.......................................................................................................................21
5.1Statistische Zusammenfassung............................................................................................21
5.2Ausblick................................................................................................................................22
Abbildungsverzeichnis
Abbildung 1: Professioneller Web-Editor mit Syntax-Highlightingund FTP-Funktion.......................9
Abbildung 2: Browseransicht der erstellten Webseite.....................................................................12
Abbildung 3: Browseransicht mit aktivem Stylesheet......................................................................14
Abbildung 4: Logo der Programmiersprache php...........................................................................15
Abbildung 5: Logo der freien Datenbank MySQL...........................................................................15
Abbildung 6: Datenbankschema.....................................................................................................17
AK Informatik 1
Klaus Thieringer – 163320
2
1 Einführung
1.1 Problemstellung
Diese Ausarbeitung beschreibt die Einführung einer vereinsinternen Kommunikationsplattform als
Webanwendung. Dabei werden alle Bereiche von den Grundüberlegungen, zur Ideensammlung,
Programmierung und Einführung beschrieben. Dies umfasst sämtliche technische und logische
Vorraussetzungen die nötig sind.
1.2 Definitionen
Der Titel des Themas „vereinsinterne Kommunikationsplattform“ ist ein Kunstwort, welche die Ziele
des Systems, welches aus diesem Projekt hervorgeht, beschreiben soll. Die Ziele sind die
schnellere Kommunikation zwischen Vereinsmitgliedern sowie eine einfachere Termin- und
Aufgabenplanung für vereinsinterne Angelegenheiten.
1.2.1 Abgrenzung des Themas
Die Möglichkeiten die sich in einem System dieser Art realisieren lassen sind theoretisch
unbegrenzt und von den Fähigkeiten des Programmierers sowie den Ressourcen der Server und
Datenbanken abhängig.
Somit ist das primäre Ziel dieser Ausarbeitung, die grundsätzliche Funktionsweise aller
zusammenhängender Systeme zu beschreiben und eine erste Basis für das System zu erstellen.
Es ist nicht das Ziel am Ende dieser Ausarbeitung ein perfektes System fertiggestellt zu habe, da
dies den Rahmen der Lehrveranstaltung und den Aufwand dieser Ausarbeitung übersteigen
würde.
2 Hintergrund
In diesem Abschnitt werden alle Grundgedanken und Überlegungen beschrieben die zur
Umsetzung dieses Projektes geführt haben. Zunächst soll aber ein Einblick in die Vereinsstruktur
der Stadtkapelle Öhringen e.V. gegeben werden, damit Zusammenhänge später leichter erfasst
werden können.
2.1 Vereinsstruktur
Die Stadtkapelle Öhringen e.V. ist ein in Öhringen ansässiger, musiktreibender Verein. Neben der
Probenarbeit und öffentlichen Auftritten spielt die musikalische Ausbildung eine zentrale Rolle. So
werden bereits Kinder zur Musik hingeführt.
AK Informatik 1
Klaus Thieringer – 163320
3
Um die Altersstruktur und den musikalischen Fortschritt besser gliedern zu können, ist die
Stadtkapelle in vier Orchester unterteilt. Im Schülerorchester1 sammeln die Kinder und
Jugendlichen erste Erfahrungen im gemeinsamen Spielen. Nach einer gewissen Zeit dürfen sie
anschließend in der Vorjugendkapelle2 mitspielen. Die beiden größten Orchester bilden das
Jugendorchester3, in dem man bis zu einem Alter von 21 Jahren mitspielen darf, und die
Stadtkapelle4, in der man ab ca. 18 Jahren aktiv mitspielt. Neben den aktiven Mitgliedern gibt es
die fünfte Gruppe der passiven und fördernden Mitglieder. Für alle diese Gruppen und Orchester
gibt es verschiedene Termine, angefangen bei Proben, über Auftritte bis hin zu Ausflügen und
anderen Freizeitaktivitäten.
In jedem Orchester gibt es einen Notenwart, der für die Verteilung der Noten zuständig ist. Seine
Aufgaben sind es, neue Stücke zu kopieren und zu verteilen. Vermisst ein Mitglied ein bestimmtes
Stück, so kann er sich an den Notenwart wenden und dieses Stück bei ihm anfordern.
Ein Orchester besteht aus einer Vielzahl unterschiedlicher Instrumente. Gleichartige Instrumente
bilden eigene Gruppen, die so genannten Register. Stehen wichtige Auftritte an, so finden unter
Umständen gezielt Registerproben statt.
Die Stadtkapelle verfügt außerdem über ein Vereinsheim, das so genannte Probelokal5. Hier findet
die Ausbildung und ein Teil der Probenarbeit statt. Abends und am Wochenende steht das Prolo
für Freizeitaktivitäten bereit. Um das Gebäude sauber zu halten, putzen in regelmäßigen
Abständen Gruppen von Mitgliedern abwechselnd die Räume.
2.2 aktuelle Situation
Die Terminplanung der Stadtkapelle wird durch die Vorstandschaft abgewickelt. Jährlich wird ein
Terminplan in Papierform an die Mitglieder verteilt. Kurzfristige Termine werden in den Proben
bekannt gegeben. Die Zu- bzw. Absage zu Terminen sollte in den einzelnen Registern abgeklärt
und an den Dirigenten weitergeleitet werden. Die Absprache funktioniert hierbei allerdings häufig
nicht.
Weiter werden jährlich Putzpläne ausgeteilt. Jedoch war häufig nicht klar mit welchen Mitgliedern
man für das Putzen in einer Gruppe zuständig ist und die Termine wurden vergessen, sodass
diese Arbeit häufig vernachlässigt wurde oder andere Mitglieder eingesprungen sind.
Die Stadtkapelle Öhringen e.V. verfügt bereits heute über eine eigene Homepage die unter der
Domain http://www.stadtkapelle-oehringen.de zu erreichen ist. Die Seite wurde 2001 von mir
programmiert und seitdem nicht mehr häufig aktualisiert. Somit sind nicht nur die Inhalte, sondern
auch die verwendeten Techniken veraltet. Die Homepage beinhaltet aktuell auch einen Internen
1
2
3
4
5
Schülo
4-UK
Juka
Staka
Prolo
AK Informatik 1
Klaus Thieringer – 163320
4
Bereich der ein Forum sowie verschiedene Seiten mit Downloads beherbergt. Hier können unter
anderem Termin- und Putzpläne als PDF-Dokument heruntergeladen und Bilder von
Veranstaltungen angesehen werde.
Vor einiger Zeit kam somit die Überlegung die Homepage zu überarbeiten und modernisieren und
vor allem einen stark überarbeiteten Internen Bereich zu gestalten. Hier sollen alle Informationen
aktuell, übersichtlich und integriert abgerufen werden können. Aus diesen Überlegungen entstand
eine erste Idee der „vereinsinternen Kommunikationsplattform“ die seitdem noch um einige
Überlegungen erweitert wurde.
2.3 Möglichkeiten
Die Mitglieder der Stadtkapelle sollen sich zuerst für den neuen internen Bereich registrieren.
Dadurch wird unter anderem erreicht, dass aktuelle Kontaktinformationen vorliegen. In weiteren
Abfragen wählt man die Orchester in denen man aktiv ist und trägt sich in die Register ein. Diese
Angaben
sind die Voraussetzung um später automatisch die aktuellen, personenbezogenen
Informationen zu erhalten.
Die Mitglieder haben nun ihre Zugangsdaten mit denen sie sich am System anmelden können.
Folgende Funktionen sollen später über ein Menü zur Verfügung stehen:
●
Auf der „Startseite“ erscheinen alle aktuellen Informationen. Dies sind zunächst
Erinnerungen an Termine und Veranstaltungen, aktuelle News oder der nächste
Putztermin. An dieser Stelle erscheinen nur zeitnahe Informationen, die für die Orchester
und Register gelten in denen man selber aktiv tätig ist. In einer späteren Erweiterung sind
weitere Informationen denkbar, wie beispielsweise persönliche Nachrichten von anderen
Mitgliedern, neu hinzugefügte Fotoalben oder die aktuellsten Foreneinträge.
●
Im Bereich „meine Daten“ kann man die eigenen Benutzerinformationen ansehen, welche
auch anderen Benutzern zur Verfügung stehen. Über ein Untermenü können diese Daten
geändert und aktualisiert werden.
●
Der Bereich „Veranstaltungen“ listet alle anstehenden „Veranstaltungen“ nach Gruppe
sortiert auf. Es erscheinen die Veranstaltungen aller Gruppen, auch wenn der Benutzer
dafür nicht eingetragen ist. Zu den einzelnen Veranstaltungen kann man sich auf einer
gesonderten Seite alle Details anzeigen lassen. An dieser Stelle hat man die Möglichkeit
einen Kommentar abzugeben sowie sich zu einer Veranstaltung zurückzumelden bzw. eine
Absage zu erteilen. So lässt sich später vorab eine übersichtliche Teilnehmerliste anzeigen.
Verfügt der Benutzer über die entsprechenden Rechte kann er über einen Untermenüpunkt
auch neue Veranstaltungen eintragen.
●
Ebenso können im Bereich „News“ die Nachrichten aller Gruppen und Orchester
eingesehen werden. Wer über die vorausgesetzten Berechtigungen verfügt, kann über ein
AK Informatik 1
Klaus Thieringer – 163320
5
Untermenü eigenständig neue Nachrichten online stellen. Hier müssen die betroffenen
Gruppen ausgewählt werden. Auf Wunsch können die Nachrichten zusätzlich per Email an
die betroffenen Gruppen veröffentlicht werden, andernfalls sieht sie jeder Benutzer beim
nächsten Login auf seiner Startseite.
●
Weiterhin gibt es einen Info-Bereich in dem man Dokumente wie Inhaltsverzeichnisse,
Probepläne und Putzpläne herunterladen kann. Zusätzlich erscheint eine Seite mit
wichtigen Ansprechpartner innerhalb der Kapelle, die man durch einen einfachen Klick
automatisch per email kontaktieren kann. Eine email-Datenbank zeigt übersichtlich alle
email-Adressen der registrierten Mitglieder an. Verfügt man wiederum über die
entsprechenden Berechtigungen kann man an dieser Stelle direkt einen Newsletter
erstellen und an bestimmte Register oder Orchestergruppen versenden.
●
In einer Bildergalerie können die Benutzer sich Fotos von Veranstaltungen ansehen und
auch selbständig neue Alben anlegen und darin Ihre Fotos online stellen, um sie der
Allgemeinheit verfügbar zu machen.
●
Über ein weiteres Menü kann man online Noten bestellen. Der Notenwart des zuständigen
Orchesters bekommt eine Benachrichtigung per email bzw. beim nächsten Login.
Idealerweise kann man dem Notenwart an dieser Stelle relevante Archivinformationen wie
Archivnummer, Schrank, Fach, und ähnliches anzeigen, um ihm den Suchaufwand zu
erleichtern.
●
Das bislang bestehende Forum wird mit der Einführung des neuen Systems abgeschafft
und in einer späteren Ausbaustufe durch eine eigene Anwendung neu implementiert.
Es sind zahlreiche weitere Anwendungen denkbar die in späteren Ausbaustufen realisiert werden
können. Zunächst werden jedoch nur die wichtigsten Funktionen implementiert um die oben
angesprochenen Funktionen abbilden zu können.
2.4 Ähnliche Anwendungen
Im Internet findet man einige Anwendungen die der vereinsinternen Kommunikationsplattform sehr
ähnlich sind oder die als Teilkomponenten enthalten bzw. integriert sind. Eine relativ neuePlattform
in der ich zahlreiche Parallelen sehe ist beispielsweise das studiVZ6. Hier können sich Studenten
anmelden und auf ihrer Seite ihre Interessen aufzeigen. Man kann Freunde und Kommilitonen
suchen und zu seiner Freundesliste hinzufügen. In Gruppen kann man gemeinsame Interessen
teilen und in einer Bildergalerie persönliche Fotos online stellen.
Die Terminplanungsfunktion der Kommunikationsplattform kann mit einem einfachen GroupWare
System verglichen werden. Hier können mehrere Benutzer einen Kalender teilen, Termine
6 http://www.studivz.net
AK Informatik 1
Klaus Thieringer – 163320
6
verwalten und Aufgaben verteilen. Auch hierfür gibt es openSource Lösungen7 die in php
programmiert wurden und webbasiert laufen.
Für ein News-System gibt es zahlreiche kostenfreie Anbieter8, die einem ermöglichen Newsletter
zu erstellen und an eine Vielzahl von Benutzern in regelmäßigen oder unregelmäßigen Abständen
zu versenden. Hier können oftmals unterschiedliche Empfängergruppen angelegt werden. Die
Empfänger können online einen Newsletter abbonieren und diesen auch wieder kündigen. Ein
solches System ist auch mit dem News-System bzw. der Emaildatenbank der „vereinsinternen
Kommunikationsplattform“ nachgebildet.
Auch für Foren gibt es professionelle Lösungen die man kostenfrei aus dem Internet herunterladen
kann9. Ein ähnliches Forum wird auch später in vereinfachter Form in das System integriert.
In einer fortgeschrittenen Version, kann man das System mit einem einfachen CMS10 vergleichen.
Der Benutzer kann online und ohne Programmieraufwand neue Seiten erstellen ohne sich mit
komplexem Code und Serverstrukturen auseinander setzen zu müssen. Das System gliedert die
neuen Seiten dynamisch in die Webseite ein und passt, sofern dies erforderlich ist, die
Menüstruktur automatisch an. Welche Funktionen der Benutzer ausführen darf, ist durch eine
Rechtevergabe geregelt. Zusätzlich indiziert ein CMS die Seiten, um sie auffindbar zu machen.
3 Voraussetzungen
Um ein System in diesem Umfang zu realisieren gibt es einige Voraussetzungen, sowohl an den
Programmierer als auch an die technische Umgebung in der er sich befindet.
3.1 Technische Voraussetzungen
Die technischen Voraussetzungen beziehen sich vor allem auf die eingesetzte Hardware und
Software sowie verschiedene Online-Dienste.
3.1.1 Dienste
Da man üblicherweise über keine eigenen Server verfügt, muss man sich den Platz auf einem
Server einkaufen. Es gibt zahlreiche Anbieter die solche Dienste anbieten, die so genannten
Webhoster. Für einen monatlichen, bzw. jährlichen Betrag im Bereich von 20,- bis über 100,-€
bekommt man den nötigen Speicherplatz und weitere Dienste bereitgestellt. Um im Internet
erreichbar zu sein, braucht man zunächst eine Domain11. Diese wird einmalig registriert und den
den DNS-Servern bekannt gemacht, sodass bei Aufruf der URL ab sofort auf den Speicherplatz
7
8
9
10
11
z.B. phpGroupWare – http://phpgroupware.com
z.B. Newstroll – http://www.newstroll.de
phpBB – http://www.phpbb.com
Content Management System, z.B. Typo3, Plone, PostNukeCMS
auch URL genannt
AK Informatik 1
Klaus Thieringer – 163320
7
auf dem eigenen Server verwiesen wird. Hier liegen die benötigten HTML12-Dokumente die vom
Browser interpretiert und angezeigt werden.
Um ein System wie die vereinsinterne Kommunikationsplattform zu programmieren sind zwei
weitere Dienste nötig. Alle Daten des Systems, wie beispielsweise Benutzerdaten und
Veranstaltungsdaten
werden
in
einer
Datenbank
gespeichert.
Es
gibt
zahlreiche
Datenbanksysteme. Ein für Webanwendungen sehr verbreitetes Datenbanksystem ist jedoch
MySQL. Im Datenbanksystem wird eine Datenbank angelegt in der wiederum eine Vielzahl
verschiedener Tabellen mit den einzelnen Daten liegen.
Um auf diese Daten zugreifen und in einer Webseite anzeigen zu können ist ein dritter Dienst
nötig.
Auf
dem
Server
muss
eine
php-Installation
vorhanden
sein.
php13
ist
eine
Programmiersprache mit der man dynamische Webseiten erstellen kann. Neben den
Programmieranweisungen in php und den Quellcode der Webseite in HTML kann man hier
Datenbank-Abfragen in der Abfragesprache SQL14 programmieren.
3.1.2 Software
Um Webanwendungen zu programmieren ist theoretisch keine zusätzliche Software erforderlich.
Es wird lediglich ein Texteditor, unter Windows z.B. Editor, und ein FTP15-Programm benötigt. Das
FTP-Programm verschiebt die lokal gespeicherten HTML- und php-Dokumente auf den
Webserver, sodass sie öffentlich zugänglich sind. Unter Windows kann man mit dem Explorer
einfache FTP-Transfers erledigen.
Um effektiver arbeiten zu können gibt es jedoch Programme die beide Anwendungen verknüpfen
und weitere Arbeitshilfen beinhalten. So hilft ein Texteditor mit Syntax-Highlighting den Quellcode
übersichtlicher zu gestalten indem er unterschiedlich Befehle und Bereiche farblich markiert.
Dadurch wird die Gefahr von Fehlern im Code erheblich gesenkt. Durch einen integrierten FTPKlienten kann man online auf dem Server seine Dateien bearbeiten und braucht diese nicht erst
herunterladen, dann abändern und anschließend wieder hochladen.
12
13
14
15
HyperText Marup Language
„php: Hypertext Processor“ (rekursives Backronym)
Structured Query Language
File Transfer Protocol
AK Informatik 1
Klaus Thieringer – 163320
8
Abbildung 1: Professioneller Web-Editor mit Syntax-Highlighting und FTP-Funktion
3.2 Logische Voraussetzungen
Die logischen Voraussetzungen richten sich an den Programmierer und den Umgang mit dem
Quellcode und dem Datenbanksystem.
3.2.1 Programmiersprachen
Zur Realisierung einer derartigen Kommunikationsplattform sind mindestens vier Programmier-,
Skript- und Abfragesprachen nötig. Diese sind HTML, CSS16, php und SQL. Um einige weitere
Funktionen ausführen zu können ist die Kenntnis einer fünften Sprache von Vorteil: JavaScript.
16 Cascading Style Sheets
AK Informatik 1
Klaus Thieringer – 163320
9
3.2.1.1
HTML
HTML ist eine textbasierte Auszeichnungssprache zur Strukturierung von Inhalten wie Texten,
Bildern und Hyperlinks in Dokumenten. Die Sprache wurde 1989 eingeführt und bildet seitdem die
Grundlage von Webseiten im Internet. Mittlerweile liegt die Sprache in der Version 4.01 vor.
Anfangs wurde HTML zur kompletten Gestaltung einer Webseite verwendet. Neben den reinen
Inhalten wurden auch Designstrukturen wie Hintergrundfarben und -bilder, Textlayout und
-anordnung und der Einsatz von Farben definiert. Mittlerweile ist man davon abgekommen und hat
dafür eine gesonderte Sprache eingeführt, auf die später eingegangen wird.
Ein HTML Dokument hat stets eine festgelegte Struktur die aus drei Bereichen besteht:
●
Dokumenttypdeklaration
●
HTML-Kopf
●
HTML-Körper
Die Dokumenttypdeklaration befindet sich am Anfang jeder HTML-Datei und gibt an, um welche
Art von Dokument es sich handelt. Beispielsweise kann hier stehen, dass es sich um ein HTML
Dokument in der Version 4.01 und der Variante „strict“ handelt welches einen Westeuropäischen
Zeichensatz verwendet. Diese Angaben sind lediglich für den Browser interessant um die Inhalte
korrekt anzuzeigen. Der Benutzer bekommt diese Daten nicht zu Gesicht.
Im Kopfteil einer HTML-Datei stehen ebenfalls Informationen, welche dem Benutzer größtenteils
verborgen bleiben. Dies sind technische und dokumentarische Informationen die aussagen, wer
die Webseite erstellt hat, welche Inhalte darin zu finden sind, für wen diese Inhalte bestimmt sind
und ob weitere Dateien geladen werden müssen, um die Seite korrekt anzuzeigen. Auch der Titel
der Seite welcher in der Titelleiste des Browser angezeigt wird befindet sich im Kopfbereich.
Im dritten Abschnitt, dem Körper einer HTML-Datei, befinden sich nun die eigentlichen Inhalte die
vom Browser interpretiert und am Bildschirm angezeigt werden.
3.2.1.1.1
Codebeispiel einer HTML-Datei
Das folgende Beispiel zeigt eine einfache Webseite mit den wichtigsten Elementen:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<head>
<title>Lorem ipsum dolor</title>
</head>
<body>
<h1>Lorem ipsum dolor sit amet</h1>
<div align="center"><img src="lorem.png"></div>
<p>Consectetur <em>adipisicing</em> elit, sed do eiusmod <u>tempor
incididunt</u> ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in <a href="seite2.html">reprehenderit</a> in voluptate
AK Informatik 1
Klaus Thieringer – 163320
10
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.</p>
<ul>
<li>Lorem ipsum dolor</li>
<li>Rhoncus tempor placaret</li>
</ul>
</body>
</html>
Die Dokumenttypdeklaration wird im angegebenen Beispiel mit der DOCTYPE-Anweisung
eingeleitet. Hier wird HTML in der Version 4.01 und der Variante „Transitional“ verwendet. Die
Struktur dieses HTML-Dokuments ist von der W3C festgelegt und kann unter dem angegebenen
Link eingesehen werden.
Der Kopfbereich befindet sich zwischen den beiden Attributen <html> und </html>. Hier ist der Titel
der Seite (<title>) angegeben der in der Titelleiste des Browsers angezeigt wird.
Mit dem Befehl <body> wird der Hauptteil des Dokumentes eingeleitet. Oben steht eine Überschrift
ersten Grades (<h1> - headline #1). Es folgt ein Bild (<img> - image) dessen Quelldatei (src source) „lorem.png“ heißt. Das Bild wird zentriert ausgegeben (<div align“center“> - division). Im
Anschließenden Absatz (<p> - paragraph) erscheint nun eine Menge Text. Hier wird ein Wort
besonders hervorgehoben (<em> - emphatic), ein anderes wird unterstrichen (<u> - underline) und
ein drittes Wort ist mit einer weiterführenden Seite „seite2.html“ verlinkt (<a href=“seite2.html“ anchor>).
Im Anschluss an den Absatz folgt eine Liste in unnummerierter Form (<ul> - unordered list). Die
einzelnen Listenelemente stehen zwischen den <li>-Befehlen.
Als letzter Schritt müssen alle offenen Befehle mit schließenden Befehlen beendet werden. Nun
kann man die Datei unter einem Namen wie „seite1.html“ speichern.
3.2.1.1.2
Ergebnis des HTML-Dokuments
Öffnet man die eben erstellte Webseite in einem Browser, erhält man folgendes Ergebnis:
AK Informatik 1
Klaus Thieringer – 163320
11
Abbildung 2: Browseransicht der erstellten Webseite
3.2.1.2
CSS
Während es in den Anfängen des HTML üblich war, Textformatierungen wie Schriftgrößen oder
-farben direkt in den Quellcode einzubinden, ist man mittlerweile davon abgekommen. Stattdessen
setzt man so genannte Stylesheets ein. Diese legen ein einheitliches Layout für alle Seiten einer
Homepage fest. Stylesheets können in der gleichen HTML-Datei stehen oder in eine eigene Datei
ausgelagert werden.
Die Verwendung von CSS hat viele Vorteile. Man erreicht dadurch eine Trennung von Inhalt und
Layout. So brauchen Personen, die für den Inhalt einer Webseite zuständig sind, sich nicht mit
dem Layout beschäftigen. Sie schreiben lediglich den HTML-Code und definieren dabei welcher
Text in einem Absatz steht, was Überschriften sind und wo Bilder und Links gesetzt werden sollen.
Die Ausrichtung und Formatierung wird später durch das Stylesheet bestimmt.
AK Informatik 1
Klaus Thieringer – 163320
12
Der Webdesigner hingegen kann sich voll auf das Layout konzentrieren ohne dabei auf Inhalte zu
achten. Wird das Stylesheet verändert, so wirken sich die Änderungen global auf alle Seiten aus.
Es ist also nicht mehr erforderlich alle Seiten einzeln abzuändern.
3.2.1.2.1
Codebeispiel einer CSS-Datei
Setzen wir nun für das obige Beispiel ein Stylesheet ein, könnte dies so aussehen:
body
{
background: black;
color: gray;
font-family: verdana, sans-serif;
margin-left: 50px;
margin-right: 50px;}
h1
{
color: white;
font-size: x-large;
text-shadow: gray 8px 5px 3px;
text-decoration: underline;
padding-left: 30px;}
p
{
font-size: medium;
text-align: justify;}
ul
{
list-style-type: square;}
em
{
letter-spacing: 3px;}
a
{
color: white;
text-decoration: none;}
a:hover
{
text-decoration: underline overline;}
Für jedes HTML-Element (body, h1, p, ul, em, a) kann hier ein Abschnitt angelegt werden, der die
dafür zu verwendenden Eigenschaften beschreibt. Die angegebenen Eigenschaften sollten
größtenteils selbsterklärend sein und spätestens beim Betrachten der Ausgabe in der
nachfolgenden Abbildung klar werden.
Bei Links gibt es vier Unterscheidung von denen zwei im obigen Beispiel vorkommen. Wenn ein
Link im Text steht gelten für ihn die normalen Eigenschaften im Abschnitt a. Zeigt man mit der
Maus darauf gelten zusätzlich die Vorschriften des Bereiches a:hover. Weiter gibt es aktive Links
(a:active) auf die man soeben geklickt hat und bereits besuchte Links (a:visited) die ebenfalls
unterschieden werden können.
CSS ist ein sehr vielfältiges Instrument und es gibt zahlreiche weitere Möglichkeiten das Layout
des Dokumentes zu variieren. Wir speichern dieses Dokument unter dem Dateiname „layout.css“.
Dem HTML-Dokument geben wir dieses neue Stylesheet bekannt indem wir eine weitere Zeile in
den Code einfügen:
<link rel="stylesheet" type="text/css" href="layout.css">
AK Informatik 1
Klaus Thieringer – 163320
13
3.2.1.2.2
Ergebnis des HTML-Dokuments mit CSS-Layout
Wird die Seite erneut laden, werden die Vorgaben aus dem Stylesheet übernommen und man
erhält folgendes Ergebnis:
Abbildung 3: Browseransicht mit aktivem Stylesheet
3.2.1.3
php
php ist eine Skriptsprache die hauptsächlich zur Erstellung von dynamischen Webseiten oder
Webanwendungen verwendet wird. Die Syntax ist an C bzw. C++ angelehnt und zeichnet sich
durch
ihre
leichte
Erlernbarkeit
aus.
Ein
Hauptvorteil
von
php
ist
die
breite
Datenbankunterstützung.
Erst durch eine Skriptsprache wie php ist es möglich, Webseiten dynamisch zu gestalten und auf
Benutzeraktionen zu interagieren. Mit php können HTML-Ausgaben erzeugt werden. Außerdem
sind in php sämtliche Elemente enthalten die für eine höhere Programmiersprache auszeichnend
AK Informatik 1
Klaus Thieringer – 163320
14
sind. Für die Webentwicklung ist vorallem wichtig, dass php die Werte von Formularen auslesen
und anschließend in Datenbanken speichern kann.
Aufgrund der Vielfältigkeit von php werden an dieser Stelle keine Programmierbeispiele aufgezeigt.
Einige Anwendungsfälle die häufig verwendet werden, sind jedoch im Kapitel Umsetzung genannt.
Abbildung 4: Logo der Programmiersprache php
3.2.1.4
SQL
SQL ist eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen
Datenbanken. SQL ist standardisiert und kann von den meisten Datenbanksystemen interpretiert
werden. SQL hat eine relativ einfache Syntax und ist semantisch leicht verständlich.
Abbildung 5: Logo der freien Datenbank MySQL
3.2.1.4.1
Beispielabfragen in SQL
Nachfolgende Beispiele erläutern die Funktionsweise der wichtigsten Befehle der Abfragesprache
SQL.
SELECT
FROM
WHERE
*
benutzer
vorname LIKE 'klaus';
Diese SELECT-Abfrage erhält alle (*) Informationen der Benutzer in der Tabelle benutzer, deren
Vorname klaus enthält:
INSERT INTO student (id, name, matrikelnummer)
VALUES
(NULL, 'Bernd', '136629');
AK Informatik 1
Klaus Thieringer – 163320
15
Mit dem INSERT-Befehl wird ein neuer Datensatz in einer Tabelle angelegt. Hier wird der Tabelle
student ein neuer Datensatz mit dem Namen Bernd und der Matrikelnummer 136629 hinzugefügt.
Die ID wird nicht übergeben (NULL) weil sie vom Datenbanksystem fortlaufend vergeben wird.
UPDATE
SET
WHERE
student
passwort='hq54Tsk'
matrikelummer ='136629';
In der Tabelle student wird wird das Passwort des Benutzers mit der Matrikelnummer 136629 mit
Hilfe des UPDATE-Befehls geändert.
DELETE FROM benutzer
WHERE
letzter_login <= NOW(-365)
Hier werden mit dem DELETE-Befehl alle Benutzer aus der Tabelle gelöscht dessen letzter Login
länger als ein Jahr her ist.
3.2.1.5
JavaScript
Auf JavaScript soll an dieser Stelle nur kurz eingegangen werden. JavaScript ist eine vielfältige
Scriptsprache die in den HTML-Code eingebunden mir. Mit JavaScript kann man unter anderem
schnell auf Benutzerinteraktionen reagieren. So können beispielsweise Mausbewegungen und
Tastatureingaben abgefragt und entsprechendeAktionen unternommen werden.
Eine einfache Anwendung ist die Überprüfung einer Eingabe in einem Formular. Ist in einem
Formular kein Wert angegeben, dieser jedoch zwingend erforderlich, so erhält der Benutzer beim
klicken auf den „Senden“-Knopf sofort eine Fehlermeldung.
Im aktuellen Stand der vereinsinternen Kommunikationsplattform ist kaum JavaScript-Code
enthalten da dieser für die Grundfunktionen nicht benötigt wird. Später kann man in Betracht
ziehen, einige Komfortfunktionen mit Hilfe von JavaScript einzubauen.
4 Umsetzung
Die Umsetzung eines solchen Projekts verläuft Abschnittsweise. Die Grundlage und somit den
ersten Schritt bildet das Datenbankschema, welches im nachfolgenden Kapitel angesprochen wird.
Dieses wird durch weitere Ideen und Erkenntnisse kontinuierlich erweitert. Anschließend wird ein
grobes Gerüst der Seite erstellt, die Menüstruktur aufgebaut und verschiedene Layouts getestet.
Nachdem dieses Grundgerüst feststeht, kann mit der Programmierung der Funktionen begonnen
werden.
4.1 Datenbankschema
Die Datenbank ist der zentrale Bestandteil dieser Plattform. Hier werden alle benötigten
Informationen in Tabellen gespeichert. Um Informationen sinnvoll ablegen zu können, muss ein
Datenbankschema erstellt werden. Das Layout dieses Datenbankschemas bestimmt später primär
die Möglichkeiten Vorhaben abbilden zu können.
AK Informatik 1
Klaus Thieringer – 163320
16
Diese Ausarbeitung beschreibt nicht die Funktionsweise eines Datenbanksystems oder die Anlage
von neuen Tabellen im System. Es soll trotzdem kurz darauf hingewiesen werden, das zur
Administration der Datenbank verschiedene Tools zur Verfügung stehen. Eine sehr bekannte und
häufig von Webservern eingesetzte Weboberfläche ist MySQL-Admin17
Die nachfolgende Abbildung zeigt tabellarisch das Datenbankschema, welches für die
vereinsinterne Kommunikationsplattform erstellt wurde.
intern_rechte
rechte_id
rechte_bezeichnung
intern_register
register_id
register_name
register_sprecher
intern_rechteuser
rechteuser_rechteid
rechteuser_userid
intern_user
user_id
user_session
user_name
user_vorname
user_email
user_passwort
user_straße
user_hausnummer
user_plz
user_stadt
user_telefon
user_mobil
user_geburtstag
user_konto
user_blz
user_schuelo
user_4uk
user_juka
user_staka
user_passiv
intern_registeruser
registeruser_userid
registeruser_registerid
intern_news
news_id
news_userid
news_titel
news_beitrag
news_zeit
news_schuelo
news_4uk
news_juka
news_staka
news_passiv
intern_kommentar
kommentart_id
kommentar_eventid
kommentar_userid
kommentar_zeit
intern_eventuser
eventuser_eventid
eventuser_userid
eventuser_status
eventuser_datum
intern_eventart
eventart_id
eventart_bezeichnung
intern_putzgruppe
putzgruppe_id
putzgruppe_user
intern_event
event_id
event_userid
event_name
event_aufbauzeit
event_startzeit
event_endzeit
event_ort
event_eventartid
event_beschreibung
event_schuelo
event_4uk
event_juka
event_staka
event_passiv
intern_putzplan
putzplan_id
putzplan_putzgruppeid
putzplan_termin
putzplan_ort
Abbildung 6: Datenbankschema
4.1.1 intern_users
Die Tabelle intern_users ist die zentrale Tabelle dieser Plattform und beinhaltet alle
benutzerbezogenen Informationen. Die ID ist eine eineindeutige, fortlaufende Nummer, die vom
System automatisch vergeben wird. Dies gilt auch für die ID's aller weiteren Tabellen. Das Feld
Session wird bei jedem Login durch das php-Script ausgelesen und geändert. Anhand dieses
Feldes kann bestimmt werden, ob der Benutzer angemeldet ist. Die nachfolgenden Felder sind
selbsterklärend. Abschließend folgen fünf Felder user_schuelo, user_4uk, user_juka, user_staka
und user_passiv. Hierbei handelt es sich um Bool'sche Werte deren Ausprägungen wahr oder
falsch annehmen kann. Dadurch kann die Zuordnung der Benutzer zu einer der fünf Gruppen
realisiert werden.
4.1.2 intern_event
Die Daten zu Veranstaltungen werden in der Tabelle intern_event abgelegt. Neben dem Namen
und einer Beschreibung werden Aufbau-, Start- und Endzeit angegebenen. Die letzten fünf Felder
dienen wiederum der Gruppenzuordnung.
17 www.mysql-admin.org
AK Informatik 1
Klaus Thieringer – 163320
17
4.1.3 intern_eventuser
Die Tabelle intern_eventuser ist eine Verknüpfungstabelle die eine Zuordnung der Benutzer zu den
Veranstaltungen bietet. Im Feld eventuser_status wird der Rückmeldestatus des Benutzers
eingetragen. Sagt ein Benutzer zu einer Veranstaltung zu, so ist der wert wahr, sagt er jedoch ab,
so ist der Wert falsch. Erfolgt keine Rückmeldung seitens des Benutzers, so ist das Feld leer, es
enthält den Wert NULL.
4.1.4 intern_eventart
Diese Tabelle listet alle Arten auf, die eine Veranstaltung erhalten kann, zum Beispiel Auftritt,
Probe, Ausflug und andere. Über den Fremdschlüssel event_eventartid in der Tabelle
intern_events wird die Verbindung hergestellt. Alternativ hätte man den Wert in ein seperates Feld
der Tabelle intern_events schreiben können, jedoch ist man so variabler und spätere
Erweiterungen wie beispielsweise eine Suchfunktion lassen sich leichter umsetzen.
4.1.5 intern_kommentar
Die Benutzer können zu den Veranstaltungen Kommentare abgeben. Der eigentliche Kommentar
und weitere Informationen wie Verfassungszeit und die beiden Fremschlüssel kommentar_eventid
und kommentar_userid, welche besagen, welcher Benutzer zu welcher Veranstaltung den
Kommentar verfasst hat, werden dabei in der Tabelle intern_kommentar gespeichert.
4.1.6 intern_news
In der Tabelle intern_news stehen sämtliche Nachrichten und Neuigkeiten die auf der Startseite
angezeigt werden können. Neben dem Zeitpunkt und dem Benutzer der die Nachricht erstellt hat,
wird der Titel und der eigentliche Beitrag sowie die Gruppenzugehörigkeit gespeichert.
4.1.7 intern_register / intern_registeruser
Die Tabelle intern_register enthält alle Register und die UserID des Registersprechers. Über die
Verknüpfungstabelle intern_registeruser wird ausgesagt, in welchen Registern ein Benutzer spielt.
Dadurch sind Mehrfachzuordnungen möglich.
4.1.8 intern_rechte / intern_rechteuser
Über die beiden Tabellen intern_rechte und intern_rechteuser wird eine Rechtevergabe in die
Plattform integriert. Die Werte in der Tabelle intern_rechte sagen dabei aus, welche Rechte
möglich sind. Die zweite Tabelle intern_rechteuser ordnet diese Rechte den einzelnen Benutzern
zu.
AK Informatik 1
Klaus Thieringer – 163320
18
4.2 Design
Das Design der Seite ist momentan sehr einfach gehalten. Über CSS wurde ein Layout mit drei
Boxen erstellt. In der obersten Box ist kontinuierlich das Logo der Stadkapelle Öhringen e.V. sowie
ein Schriftzug zu sehen. Am linken Rand befindet sich das Menü. Der Inhalt nimmt daneben die
größte Fläche ein.
Farblich orientieren sich die Seiten am Logo der Stadtkapelle Öhringen e.V.. So ist im Hintergrund
ein Farbübergang von Gelb nach Weiß, der sich über alle drei Boxen hinwegsetzt. Überschriften,
Rahmen, Links und Aufzählungspunkte sind rot. Normaler Text ist dagegen schwarz.
4.3 Weboberfläche
Wie bereits erwähnt besteht die Seite aus drei Bereichen, die sich in Banner, Menü und Inhalt
aufteilen. Diese Bereiche befinden sich im gleichen Rahmen, es wird also ohne Frameset
gearbeitet. Um jedoch eine ähnliche Funktionalität und Komfort zu erreichen, und nicht für jede
Seite den Banner und das Menü neu programmieren bzw. in den Code einfügen zu müssen, wird
mittels php und dem Befehl include() die jeweilige Seite, abhängig vom gewünschten Bereich
nachgeladen.
Das Menü ist dynamisch und kann abhängig vom aktuellen Bereich entscheiden, welche
Menüpunkte angezeigt, und welche Untermenüs aufgeklappt werden sollen. Ist man nicht
eingeloggt, zeigt das Menü Funktionen um auf die Hauptseite der Stadtkapelle Öhringen zu
gelangen, sich einzuloggen, zu registrieren oder um ein neues Passwort zu erhalten, falls man
dieses vergessene hat. Ist man jedoch eingeloggt werden im Menü alle Funktionen aufgelistet für
die man das Recht hat. Neben der persönlichen Startseite hat man hier Zugriff auf alle
Veranstaltungen und Termine.
4.4 Script-Funktionen
Die in php geschriebenen Script-Funktionen durchziehen den kompletten Quelltext und erledigen
die unterschiedlichsten Aufgaben. Sie bilden neben HTML den Hauptteil des Codes. Im folgenden
werden einige Funktionen näher erläutert.
4.4.1 Module, Funktionen und Includes
Die komplette Webseite ist Modular aufgebaut und in Bereiche unterteilt. Auch das Seitenlayout ist
dreiteilig aufgebaut wie oben bereits erklärt wurde. Zudem gibt es Programmteile die in
unterschiedlichen Seiten gleich verwendet werden. Für solchen Code ist es sinnvoll eigene
Funktionen zu programmieren. Diese Funktionen werden dann in eigene Dateienausgelagert.
AK Informatik 1
Klaus Thieringer – 163320
19
Um nun alle Bereiche zusammenzuführen und global bekannt zu machen, verwendet man in php
Includes. Nun kann man mit einem Befehl den Text einer anderen Datei automatisch an eine
beliebige Stelle einfügen.
4.4.2 Formulare, GET, POST
In der vereinsinternen Kommunikationsplattform gibt es zahlreiche Stellen an denen der Benutzer
Eingaben vornehmen kann. Dies beginnt beim Registrieren, geht weiter bei der Anlage von
Veranstaltungen und News, bis hin zum Ändern von bestehenden Daten. Diese Formulare werden
mit HTML erstellt. Nach dem klicken auf den Senden-Knopf werden die Daten an eine weitere
Seite übermittelt. Dafür gibt es zwei Möglichkeiten: GET und POST. Mit Hilfe von GET werden die
Einträge an die Adresse der aufzurufenden Seite angehängt. Dies kann beispielsweise so
aussehen: index.php?bereich=events&eventid=5. Hier werden die beiden Parameter bereich und
eventid übertragen. Die zweite Methode POST sendet ebenfalls die gleichen Daten. Im
Unterschied zu GET sind diese jedoch nun nicht mehr sichtbar. Dies ist sinnvoll wenn Passwörter
übertragen werden sollen.
Um die Daten verarbeiten zu können bedarf es wiederum der Hilfe von php. Die übertragenen
Daten werden automatisch in den globalen Arrays $_GET bzw. $_POST gespeichert und sind
somit für das Script verfügbar.
4.4.3 if {} else {}
Entscheidungsfragen bilden einen wichtigen Teil des Codes. Oftmals muss anhand der gegebenen
Daten entschieden werden, was geschehen soll. Hierfür benötigt man if-Abfragen die Kausalitäten
überprüfen und entsprechende Anweisungen ausführen können.
So wird beispielweise überprüft, ob beim registrieren alle nötigen Daten angegeben wurden. Ist
dies nicht der Fall, wird eine Fehlermeldung ausgegeben, andernfalls wird der Benutzer in der
Datenbank registriert.
4.4.4 Datenbankzugriff
Die letzte wichtige Aufgabe von php die an dieser Stelle besprochen werden soll, ist der Zugriff auf
die MySQL-Datenbank. Die Entsprechenden Abfragen werden dabei in einer php-Variablen
gespeichert und anschließend mithilfe von php-Befehlen an das Datenbanksystem zur
Verarbeitung übergeben. Die Werte die das System zurückliefert werden wiederum in einer
Variablen gespeichert und können anschließend vom php-Code zeilenweise verarbeitet werden.
Auf diese Weise werden alle Datenbankzugriffe verarbeitet. Dies sind zum einen neue Einträge bei
Registrierungen und der Anlage von Terminen und News. Änderungen an Datensätzen müssen
durchgeführt werden, wenn ein Termin sich ändert oder der Benutzer seine Adresse oder sein
AK Informatik 1
Klaus Thieringer – 163320
20
Passwort ändern möchte. Zudem müssen Datensätze auch wieder gelöscht werden können wenn
sie falsch eingegeben wurden oder nicht mehr aktuell sind. Den größten Teil der Datenbankzugriffe
bilden jedoch die Abfragen, die Inhalte aus der Tabelle auslesen und auf der Webseite anzeigen.
Dies betrifft alle Seiten auf denen Termine, News, Benutzerdaten und weitere Informationen
eingesehen werden können.
5 Zusammenfassung
5.1 Statistische Zusammenfassung
Dieses Kapitel soll einen Überblick über die Dateien, den erstellten Code und den somit
verbundenen Aufwand eines solchen Projektes geben. Alle Werte sind Stichtagsbezogen
(26.11.2007) und beziehen sich lediglich auf selbstgeschriebene Code-Dateien. Die Werte werden
sich kontinuierlich vergrößern, da das Projekt nicht vollständig abgeschlossen ist und auch noch
kaum Inhalte vorhanden sind.
Ordner:
6
Dateien:
34
Zeilen:
2.412
Zeichen:
92.147
Verzeichnisstruktur:
Datei
Zeilen
Zeichen
banner.php
10
291
index.php
32
1198
inhalt.php
53
2845
layout.css
132
2004
menue.php
57
3745
includes/dbconfic.php
9
463
includes/functions.php
152
4926
includes/loginscript.php
15
436
includes/javascript.js
13
326
seiten/haftungsausschluss.html
2
40
seiten/impressum.html
2
31
seiten/login.php
23
935
seiten/passwort.php
9
347
seiten/registrieren_db.php
97
4783
seiten/registrieren.html
271
7636
seitenintern/ansprechpartner.php
15
1289
seitenintern/benutzer_db.php
87
2713
AK Informatik 1
Klaus Thieringer – 163320
21
seitenintern/benutzer.php
232
8953
seitenintern/downloads.php
13
377
seitenintern/emaildatenbank.php
18
825
seitenintern/eventeingabe_db.php
195
9356
seitenintern/eventeingabe.php
351
15133
seitenintern/events.php
260
10569
seitenintern/forum.php
7
188
seitenintern/galerie.php
3
86
seitenintern/infos.php
3
77
seitenintern/news.php
65
2146
seitenintern/newseingabe_db.php
86
3780
seitenintern/newseingabe.php
86
3780
seitenintern/probeplan.php
3
87
seitenintern/putzplan.php
3
73
seitenintern/register.php
11
589
seitenintern/start.php
54
2049
seitenintern/telefonliste.php
19
829
Gesamt:
1902
70498
5.2 Ausblick
Neben der weiteren Entwicklung der Plattform ist es künftig wichtig, die Benutzer an das System
heranzuführen und zu integrieren. Die Benutzer müssen wissen welche Möglichkeiten und
Chancen ihnen das System bietet, sodass dieses auch intensiv genutzt wird. Erst durch die
regelmäßige Benutzung können die vollen Möglichkeiten ausgeschöpft werden.
Auch künftig wird es neue Ideen geben, die in das System integriert werden können. Dies bietet
auch Anreiz für die Benutzer, öfters das System zu verwenden, um zu sehen was sich verändert
hat.
AK Informatik 1
Klaus Thieringer – 163320
22
Herunterladen