Visualisierung von Immatrikulationsdaten mit Hilfe von SVG, PHP

Werbung
Visualisierung von
Immatrikulationsdaten mit Hilfe von
SVG, PHP und MySQL
Bachelorarbeit
von
Mustapha Fyjri
Gutachter
Prof. Dr. Oliver Vornberger
Juniorprof. Dr. Sigrid Knust
Fachbereich Mathematik/Informatik
Universität Osnabrück
22.02.2006
1
Danksagung
An dieser Stelle möchte ich mich herzlich bei denjenigen bedanken, die mir
während der Vorbereitungsphase für die vorliegende Arbeit, aber vor allem auch
bei der Programmierung der Webanwendung, mit Rat und Tat zur Seite gestanden haben.
Zunächst danke ich Dipl.-Math. Patrick Fox und Dipl.-Kff. Heike Dalinghaus,
die sich mir gegenüber immer als sehr hilfsbereit erwiesen, mir vor allem bei
technischen Problemen zur Seite standen und sich immer ausreichend Zeit für
Besprechungen genommen haben.
Des Weiteren sei mein Dank an Annette und Dipl.-Kfm (FH) Alexander Steck
sowie Michail Klioutch gerichtet, die mir hilfreiche Anregungen gaben und die
Arbeit Korrektur gelesen haben. Nicht zu vergessen meine Frau Kathrin und
meine restliche Familie, sowohl in Deutschland als auch in Marokko, die mir in
schwierigen Phasen Mut zusprachen.
Nicht zuletzt ein großes Dankeschön an meinen Dozenten Prof. Dr. Vornberger vom Institut für Informatik an der Universität Osnabrück, der mich während
der Vorbereitungsphase hilfreich unterstützt und mir durch seine Ideen weitere
Denkanstöße für diese Arbeit gegeben hat.
Osnabrück, den 22 Februar 2006
Mustapha Fyjri
2
Inhaltsverzeichnis
1 Einleitung
5
1.1
Ziel der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.2
Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2 Grundlagen
2.1
7
SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.1.1
Syntax und Basiselemente . . . . . . . . . . . . . . . . . .
8
2.1.2
Animationen . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.1.3
Interaktivität . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.2
PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.3
ECMAScript
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.4
MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
3 Verfügbare Daten
15
3.1
Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.2
Datenmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.3
Ausgewählte Daten . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.3.1
Kategorie Studierende . . . . . . . . . . . . . . . . . . . .
19
3.3.2
Kategorie Absolventen . . . . . . . . . . . . . . . . . . . .
20
4 Erstellung der Anwendung
22
4.1
Webanwendungensschema . . . . . . . . . . . . . . . . . . . . . .
22
4.2
Ermittlung der Daten . . . . . . . . . . . . . . . . . . . . . . . . .
23
4.2.1
Auswahl der Daten . . . . . . . . . . . . . . . . . . . . . .
23
4.2.2
Erstellung der Datenbankabfragen . . . . . . . . . . . . . .
24
4.2.3
Datenbankabfragen zu PHP übergeben . . . . . . . . . . .
28
4.2.4
Ausführung der PHP-Dokumente . . . . . . . . . . . . . .
28
3
4.3
Erstellung von SVG-Dateien . . . . . . . . . . . . . . . . . . . . .
30
4.3.1
SVG durch PHP . . . . . . . . . . . . . . . . . . . . . . .
31
4.3.2
SVG durch ECMAScript . . . . . . . . . . . . . . . . . . .
32
4.4
Einbindung Externer SVG-Dateien . . . . . . . . . . . . . . . . .
33
4.5
Darstellung der Abfrageergebnisse . . . . . . . . . . . . . . . . . .
35
4.5.1
Kreisdiagramm . . . . . . . . . . . . . . . . . . . . . . . .
35
4.5.2
Säulendiagramm . . . . . . . . . . . . . . . . . . . . . . .
36
Präsentation der Benutzeroberfläche . . . . . . . . . . . . . . . . .
37
4.6.1
Startseite . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.6.2
Hauptseite . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.6
5 Schlussbetrachtungen
42
5.1
Flexibilität der Anwendung . . . . . . . . . . . . . . . . . . . . .
42
5.2
Visualisierung von SVG . . . . . . . . . . . . . . . . . . . . . . .
42
5.3
Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
A Inhalt der CD-Rom
44
B Literaturverzeichnis
45
Erklärung
4
Abbildungsverzeichnis
2.1
SVG Basiselemente . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.1
Datenmodell der Immatrikulationsdaten . . . . . . . . . . . . . .
17
3.2
Datenmodell der Abschlussprüfungsdaten . . . . . . . . . . . . . .
18
4.1
Anwendungschema . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.2
Datenauswahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.3
Ermittlung der Daten . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.4
Kreisdiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.5
Säulendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.6
Startseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.7
Auswahlkriterien . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.8
Hauptseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
5
Quellcodeverzeichnis
2.1
Struktur einer SVG-Datei . . . . . . . . . . . . . . . . . . . . . .
8
2.2
SVG Basiselemente . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.3
SVG Animationselemente . . . . . . . . . . . . . . . . . . . . . .
11
2.4
Event-Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
4.1
Methode zum Sammeln/Verschicken der Abfragen
. . . . . . . .
26
4.2
SQL-Anfragen-Methode . . . . . . . . . . . . . . . . . . . . . . .
27
4.3
Methode zur Datenermittlung . . . . . . . . . . . . . . . . . . . .
28
4.4
Kreisdiagramm.php . . . . . . . . . . . . . . . . . . . . . . . . . .
29
4.5
querymisdb-Methode . . . . . . . . . . . . . . . . . . . . . . . . .
30
4.6
Erzeugung von SVG durch PHP . . . . . . . . . . . . . . . . . . .
31
4.7
Erzeugung von SVG durch ECMAScript . . . . . . . . . . . . . .
33
4.8
Einbinden von externen SVG-Dateien . . . . . . . . . . . . . . . .
34
1 Einleitung
1
6
Einleitung
Im Sommersemester 2004 hat der Verfasser der vorliegenden Bachelorarbeit an
der Vorlesung Computergerafik“ unter der Leitung von Herrn Prof. Dr. Oliver
”
Vornberger am Institut für Informatik an der Universität Osnabrück teilgenommen. Daran schloss sich ein Computergrafikpraktikum an, das der Verfasser gemeinsam mit einem Komilitonen erfolgreich absolvierte. Die Aufgabe während
des Praktkums bestand darin, das Spiel Sokoban“ mithilfe von SVG zu pro”
grammieren. Die Arbeit an dem Programm und die damit zusammenhängende
Beschäftigung mit der Programmiersprache SVG weckte beim Autor dieser Arbeit das Interesse, sich im fortlaufenden Studium der Informatik mit der Programmiersprache SVG intensiver zu beschäftigen. Die Auswahl des Themas für
die vorliegende Arbeit wurde in enger Abstimmung mit Herrn Prof. Dr. Vornberger getroffen. Es war dem Verfasser wichtig, eine praxisnahe Arbeit zu erstellen,
in der er seine guten Kenntnisse in SVG und im Bereich von Datenbanken anwenden konnte.
Die Visualisierung der Immatrikulationsdaten durch diese Webanwendung ist sowohl für die Universität als auch für potentielle Studenten bzw. Absolventen von
Interesse. Man kann sich z.B. über die Verteilung der Studierenden bzw. Absolventen nach Fachbereichen, Studienabschlüssen oder die Anzahl ausländischer
Studierender bzw. Absolventen informieren.
Bisher gab es keine frei zugängliche Seite im Internet, auf der man sich über
Immatrikulationsdaten Osnabrücker Studenten informieren konnte. Sollte sich
diese Anwendung in der Praxis bewähren, wäre es wünschenswert, dieses Internetportal in die Homepage der Universität zu integrieren.
Diese Arbeit wurde mit Hilfe des Programms LaTeX erstellt. Programmbedingt
werden einige der vom Autor eingefügten grafischen Darstellungen nicht an ihrer ursprünglichen Stelle wiedergegeben. Der Autor verweist deshalb an manchen
Stellen explizit auf den Ort der Grafiken.
Sollte sich der Leser für das Ergebnis der vorliegenden Arbeit interessieren, so
1 Einleitung
7
besteht die Möglichkeit, durch folgenden Link
http://www-lehre.inf.uos.de/~mfyjri/Bachelorarbeit/
die entsprechende Webseite zu erreichen.
1.1
Ziel der Arbeit
Das Ziel der vorliegenden Bachelorarbeit bestand darin, ausgewählte Immatrikulationsdaten der Studenten an der Universität Osnabrück in einer Webanwendung
zu präsentieren. Diese Anwendung sollte eine allgemein verständliche Benutzeroberfläche haben, über die richtigen Daten verfügen und über eine überschaubare
Programmierlogik verfügen.
Die verwendeten Immatrikulationsdaten stammen von einer MySQL-Datenbank
des Rechenzentrums der Universität Osnabrück. Zur Visualisierung der ausgewählten Daten hat sich der Verfasser der Programmiersprache SVG bedient, da sich ihre Eigenschaften nicht nur gut zur Visualisierung von Geo-Informationssystemen
(GIS) eignen, sondern auch zur Visualisierung von Statistiken.
1.2
Aufbau der Arbeit
Die vorliegende Bachelorarbeit ist in fünf Kapitel gegliedert. Nach der Einleitung
erfolgt in den ersten beiden Kapiteln die theoretische Fundierung des Themas.
Der Verfasser beschäftigt sich dort mit den theoretischen Grundlagen der Programmiersprachen SVG, PHP, ECMAScript und MySQL, die für den praktischen
Teil und somit dem Hauptbestandteil seiner Bachelorarbeit, von Bedeutung sind.
Daran anschließend stellt der Autor die Datenbank des Rechenzentrums der Universität Osnabrück vor, weil sie die Quelle seiner Daten ist. Daran anschliessend
nähert er sich dann dem Hauptteil seiner Arbeit, der Webanwendung. In Kapitel
vier stellt er die Hauptanwendung mit ihren Elementen vor und beschreibt, wie
er bei der Erstellung vorgegangen ist. Kapitel fünf schließlich besteht aus der
Schlussbetrachtung und einem Ausblick in die Zukunft seiner Anwendung.
2 Grundlagen
2
8
Grundlagen
In diesem Kapitel werden die verwendeten Programmiersprachen SVG, PHP, ECMAScript und MySQL vorgestellt.
2.1
SVG
SVG steht für Scalable Vector Graphics und bedeutet skalierbare Vektorgrafi”
ken“. Sie entstand seit August 1998, seitdem arbeitet das Web Consortium (W3C)
an seiner Spezifikation. Im September 2001 wurde die erste SVG-Empfehlung unter dem Namen Scalable Vector Graphics (SVG) 1.0 Specification veröffentlicht.
Zur Zeit wird an der Version SVG 1.2 gearbeitet und steht aktuell als Entwurf
zur Verfügung. Parallel werden auch SVG-Versionen für mobile Geräte wie Mobiltelefone und PDA’s weiter entwickelt. Die Entwickler berücksichtigen dabei,
dass diese Geräte wenig Ressourcen zur Verfügung haben.
SVG ist eine Sprache zur Beschreibung von zweidimensionalen Grafiken, basierend auf XML (Extensible Markup Language). SVG unterstüzt drei Typen von
grafischen Objekten: Vektorgrafikelemente (z.B. Geraden und Kreise), Bilder und
Text. Die grafischen Objekte können gruppiert, transformiert und/oder wieder
benutzt werden. Dies ist ein grosser Vorteil gegenüber den Rastergrafiken, die eine Punktmatrix beschreiben und wo jedes Pixel einzeln durch seine Koordinaten
und seinen RGB-Wert definiert ist.
Die SVG-Grafiken lassen sich stufenlos vergrössern und verkleinern und können
mit Hilfe von Texteditoren editiert werden. Im Gegensatz zu Macromedia Flash
ist SVG eine Open-Source-Software und Web-Standard geworden. Außerdem bieten die SVG-Dateien Flexibilität und Einfachheit durch ihre Strukturierung und
ihren Textformat. Ein grosser Nachteil von SVG besteht darin, dass jeder Nutzer
schnell auf die Quelldaten zugreifen kann. Das ist in der Grafikdomain natürlich
nicht wünschenswert. Deshalb gibt es bereits die Vorgabe für zukünftige SVGVersionen, dass Verschlüsselungsmechanismen integriert werden sollen.[Fib2002]
2 Grundlagen
9
Im Folgenden werden nur die Eigenschaften von SVG erläutert, die für diese
Arbeit von Wichtigkeit sind. Außerdem bietet die Seite von Dr. T. Meinike dem
Leser eine Ausführliche und sehr nützliche Sammlung von SVG-Dateien.[Mei2006]
2.1.1
Syntax und Basiselemente
Der Kopf eines SVG-Dokumentes sollte immer die Sprache des Dokumentes (XML,
Version 1.0) und der DTD (SVG Version) beinhalten. Die Namensraum-Deklarationen
können vorgenommen werden, ist aber nicht unbedingt erforderlich. Dies wird am
folgenden Quellcode 2.1 dargestellt:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="150" height="100" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Hier kommen die Grafikobjekte -->
</svg>
Quellcode 2.1: Struktur einer SVG-Datei
Nach dem Definieren der Deklarationen werden zwischen die <svg>-Tags die
Grafikelemente hinzugefügt. Es gibt die vier folgenden Typen von SVG-Tags:
• Grafikelemente wie <line>, <rect>, <text> und <image>
• Containerelemente wie <svg>, <g>, <defs>, <symbol> und <a>
• Referezelemente für Grafiken sind <use> und<image>
• Elemente für die Textauszeichnung wie <text>, <tspan>, <tref> und <textPath>
Im Folgenden wird am Quellcode 2.2 dargestellt, wie einige der oben gennanten
Elemente in ein SVG-Dokument eingefügt werden können.
2 Grundlagen
10
<line x1="0" y1="210" x2="130" y2="220" stroke="red"
stroke-width="4"/>
<rect x="40" y="30" width="220" height="140" fill="lightgreen"
stroke-width="12"/>
<circle cx="60" cy="100" r="40" fill="lightcoral" stroke="blue"
stroke-width="4px"/>
<ellipse cx="160" cy="100" rx="40" ry="20" fill="orange"
stroke="red"/>
<polygon points="220,100 240,110 300,210 170,250 140,220 210,190"
fill="#abcdef" stroke="#000000" stroke-width="1"/>
<text x="8" y="190" style="font-family:verdana; font-size:20px;
font-weight:bold"> SVG: ist super ! </text>
Quellcode 2.2: SVG Basiselemente
Die Abbildung 2.1 auf der nächsten Seite zeigt, welche Grafik aus dem vorherigen
Quellcode entstanden ist. Dies ist ein Beispiel aus der Computergrafikvorlesung
im Sommersemester 2004 bei Herrn Prof. Dr. Vornberger.[CG2004]
2.1.2
Animationen
Die Animationen sind ein wichtiger Bestandteil der Programmiersprache SVG.
Sie unterstüzt die Fähigkeit, die Vektorgrafiken in zeitlicher Abhängigkeit zu modifizieren. Die Animationen in SVG basieren auf dem XML-Multimediastandard
Synchronized Multimedia Integration Language (SMIL) und können in Bewegungsund Farb- bzw. Attributanimationen unterteilt werden.
Es gibt fünf verschiedene Animationsarten:
• Bewegung entlang eines Pfades: <animateMotion>
• Zeitliche Veränderung der Farbeigenschaften: <animateColor>
• Zeitliche Modifizierung der Transformationseigenschaften: <animateTransform>
• Zeitliche Veränderung für fast jedes Attribut: <animate>
• Kürzere Version von <animate>: <set>
2 Grundlagen
11
Abbildung 2.1: SVG Basiselemente
Der folgende Quellcode 2.3 auf der folgenden Seite zeigt eine Farbänderung mit
Hilfe von <set>-Tag.
2.1.3
Interaktivität
Wie alle XML-Dokumente verfügen SVG-Dateien über ein DOM (Document Object Model ), welches dem W3C-DOM sehr ähnlich ist. Durch das DOM ist es
möglich, auf alle Elemente und Attribute eines Dokumentes zuzugreifen und diese zu ändern. Diese Interaktivität wird von einer Skriptsprache, wie beispielsweise
Javascript, übernommen. Die Interaktion beginnt beim Auslösen eines Ereignises
und wenn darauf reagiert wird, kann die Reaktion eine Animation, aber auch der
Start eines Skriptes sein.
Skripte können in SVG-Dokumente entweder direkt eingebettet oder als externe
Skripte eingebunden werden. SVG bietet eine Vielzahl von Event-Attributen für
die Elemente z.B. onload, onmouseover oder onclick. Diese Attribute lösen dann
Ereignisse aus.[W3C2006]
2 Grundlagen
12
<g onclick="reset();">
<rect x="587" y="580" width="80" height="22" stroke="navy"
rx="3" style="fill: #FFBB00; filter:url(#filter1)"/>
<text x="600" y="595" style="font: 10pt Arial">Weiter</text>
<set attributeName="fill" attributeType="CSS" to="#00F"
begin="mouseover"/>
<set attributeName="fill" attributeType="CSS" to="#000"
begin="mouseout"/>
</g>
Quellcode 2.3: SVG Animationselemente
Im folgenden Quellcode 2.4 wird eine Möglichkeit der Interaktion vorgestellt.
Zunächst wird in einer SVG-Grafik ein Rechteck angelegt. Dieses Rechteck verfügt
über den Event-Handler onclick als Attribut und soll auf das Klicken reagieren.
Dann ändert es seine Farbe mit Hilfe einer ECMAScriptmethode, die im Skriptbereich definiert ist.
.....
<script type="text/ecmascript"><![CDATA[
.....
function aendereFarbe(evt){
var svgdoc=evt.getTarget().getOwnerDocument;
var rechteck = svgdoc.getElementById("rechteck");
rechteck.setAttribute("fill", "red");
}
......
]]>
</script>
......
<rect id="rechteck" x="10" y="10" width="220" height="140"
fill="lime" onclick="aendereFarbe(evt);"/>
......
Quellcode 2.4: Event-Handling
2 Grundlagen
2.2
13
PHP
PHP steht für Hypertext Preprocessor und ist eine serverseitige Skriptsprache, die
von Rasmus Lerdorf 1995 entwickelt wurde. Die aktuellen Versionen sind 5.1.2
(12. Januar 2006) und die verbesserte 4-Version vom 13. Januar 2006 lautet 4.4.2.
PHP wurde für die dynamische Generierung von Webseiten entwickelt und erlaubt Datenbank- und Dateizugriffe. Mittlerweile läuft PHP auf sehr vielen Servern der Welt und wird wegen seiner Einfachheit und leichten Erlernbarkeit
geschätzt. Außerdem ist PHP eine Open-Source-Software (lizenzfrei), die die freie
Verwendung und Veränderung der Quelltexte erlaubt. Sie existiert für viele Betriebsysteme und wird um viele Funktionen zur objektorientierten Programmiersprache erweitert.[PHP2005]
Damit PHP-basierte Anwendungen funktionieren, muss zuerst PHP auf dem Server installiert sein. PHP-Dateien können zwar mit einem normalen Texteditor
geschrieben werden, jedoch nicht ausgeführt werden. Die PHP-Dateien müssen
auf dem Server liegen, und wenn ein Client über seinem Browser diese Dateien
aufruft, werden sie im PHP-Interpreter ausgeführt. Die Ausgabe wird erzeugt
und zum Clientbrowser zurückgegeschickt . Als Ausgabe können PDF-Dateien,
Bilder oder Flash-Animationen u.a. neben HTML-Dateien erzeugt werden.
Die serverseitige Ausführung hat viele Vorteile, beispielsweise sind beim Clientbrowser keine speziellen Fähigkeiten erforderlich und es können keine Probleme
auftreten, wie es beispielsweise bei JavaScript und den verschiedenen Browsern
der Fall ist. Außerdem bleibt der PHP-Quelltext der Seite auf dem Server und
der Besucher dieser Seite kann nur die generierten Daten einsehen. Gleiches gilt
für andere Ressourcen wie z. B. Datenbanken, die daher auch keine direkte Verbindung zum Client benötigen. Damit erhöht sich z.B. die Sicherheit im Internet.
Nachteilig ist, dass jede Abfrage des Clients erst bei einem erneuten Aufruf der
Seite erfasst werden kann. Da PHP normalerweise in einer Webserverumgebung
läuft, unterliegt es auch dem zustandslosen HTTP. Allerdings wirkt PHP mit
seinem Sessionmechanismus dagegen an. Dazu wird auch jede PHP-Seite vom
Server interpretiert. Dies kann zu einer Serverbelastung führen.
2 Grundlagen
14
Diese Vor- und Nachteile sind nicht PHP-spezifisch, sondern treten bei grundsätzlich jeder Webanwendung auf. Zusätzlich liest, prüft und übersetzt der Interpreter
den Quelltext bei jedem Aufruf erneut. Dies mindert die Reaktionsgeschwindigkeit des Servers und erhöht nochmals die Auslastung. Um dem entgegen zu wirken, wurde eine Erweiterung namens MMCache entwickelt. Diese speichert eine
zur Ausführung vorbereitete Version des Programms zwischen und beschleunigt
somit den Zugriff auf diese Datei beim nächsten Aufruf. Der MMCache wird
inzwischen nicht mehr weiterentwickelt, seine Stelle nimmt der Nachfolger eAccelerator ein.[MMC2003]
2.3
ECMAScript
ECMA steht für European Computer Manufacturers Association. Sie ist eine private Normungsorganisation zur Standardisierung von Computersystemen in Europa. ECMA hat mit der Standardisierung von Javascript 1997 den Streit zwischen den Firmen Microsoft und Netscape um Weiterentwicklung der Skriptsprache Javascript ausgelöst und einen neuen Standard namens ECMAScript erstellt.
Dieser Standard gruppiert Javascript und Jscript (eine Javascript ähnliche Variante von Microsoft) unter dem selben Dach.[ECMA2004]
Javascript ist von Netscape 1995 als clientseitige Skriptsprache zum Optimieren
der Internetseiten veröffentlicht worden. Als Stammname hieß die Sprache LiveScript. Die Sprachsyntax von LiveScript ähnelt der von Java und der Name
der Sprache wird wegen des Java-Booms aufgrund von Marketing-Aspekten in
Javascript umgewandelt.[Koch2003]
2.4
MySQL
MySQL ist ein Datenbankverwaltungssystem und eine Schutzmarke der schwedischen Firma MySQL AB.
MySQL ist ein sehr schneller und robuster Multi-Thread und Multi-User SQLDatenbank-Server. SQL steht für Structured Query Language, strukturierte Abfrage-
2 Grundlagen
15
Sprache für den Zugriff und die Manipulation von Datenbanksystemen. Des weiteren ist MySQL sehr beliebt bei den Datenbankprogrammierern und existiert
für viele Betriebssysteme. MySQL läßt sich gut mit Apache-Servern und PHP
kombinieren, man spricht von LAMP bzw. WAMP ( Linux-/Windows- ApacheMySQL-PHP). Die MySQL Software steht unter einer Doppellizenz. Man kann
die Software entweder kostenlos verwenden (GNU GENERAL PUBLIC LICENSE, http://www.gnu.org/licenses/) oder man kauft eine kommerzielle Lizenz, um
dann nicht durch die Bestimmungen der GPL gebunden zu sein.
Die MySQL-Datenbanken können durch viele Programmiersprachen erreicht und
abgefragt werden. Beispielsweise die Programmiersprachen C, C++, Eiffel, Java, Perl, PHP, Python und Tcl. Für jede dieser Sprachen steht eine spezifische
Schnittstelle bereit.
Ein grosser Nachteil von MySQL besteht in der unvollständigen Implementierung des SQL-Standards vom ANSI (American National Standards Institute).
[MySQL2006]
3 Verfügbare Daten
3
16
Verfügbare Daten
In diesem Kapitel werden die verfügbaren Daten vorgestellt, die sich in der
MySQL-Datenbank misdb des Rechenzentrums der Universität befinden. Vorab
wurde von Herrn Prof. Dr. Vornberger die Adresse der Datenbank sowie die Zugangsdaten (Login und Passwort) mitgeteilt und ein Datenmodell in Form eines
Computerausdrucks ausgehändigt, welches die Struktur der Daten wiederspiegelt.
3.1
Datenbank
Wie bereits zu Beginn des Kapitels erwähnt, heisst die Datenbank misdb und
stammt aus dem MIS-Projekt (Management Information System) der Universität Osnabrück.
Das MIS-Projekt ( Entwicklung eines Management-Information-Systems zur Ver”
besserung der Leitungsstrukturen“) wurde von 1998 bis 2000 vom Stifterverband
für die Deutsche Wissenschaft finanziell unterstützt. Die Universität Osnabrück
hat dieses Projekt in sachlicher und personeller Hinsicht vielfach unterstützt.
Hier sind vor allem die Fachgebiete BWL und Wirtschaftsinformatik des Fachbereichs Wirtschaftswissenschaften zu nennen. Die ersten Ergebnisse des MISProjektes waren derart erfolgreich, dass die Universitätsleitung eigene Mittel zur
Verfügung gestellt hat, um das Projekt weiterzuentwickeln. In dem MIS-Projekt
wurde ein umfassendes, technisch-organisatorisches Basiskonzept mit Referenz”
charakter zur Integration und Distribution quantitativer und qualitativer Informationen entwickelt und auf allen Entscheidungsebenen der Universität Osnabrück (Hochschulleitung, Dekanate, Fachgebiete) implementiert.“
Das MIS-Projekt enthält viele Daten zu verschiedenen Bereichen und Aktivitäten
der Universität (z.B. Haushalt der Universität, Personalwesen,...), die an dieser
Stelle nicht alle genannt werden können.[MIS2001]
Für die vorliegende Bachelorarbeit wurde eine neue Datenbank namens misdb erstellt und in einer MySQL-Datenbank des Rechenzentrums umgesetzt. Die misdb
enthält nur Informationen über Studierende und Absolventen. Zu diesen Informationen gehören beispielsweise Semester, Studiengang, Prüfungsfächer, Regel-
3 Verfügbare Daten
17
studienzeitüberschreitungen, Prüfungsergebnisse, Herkunft der Studierenden, Geburtsort, Hochschulzugangsberechtigung und Hörerstatus.
Nach Erhalt der Zugangsdaten und der Adresse der Datenbank, wurde vom Verfasser ein Datenbanktest durchgeführt. Dafür wurde eine Anwendung erstellt,
die eine Verbindung zur Datenbank herstellte und eine Abfrage der Datenbank
durchführte. Dieser Datenbanktest erwies sich als erfolgreich und bewies, dass die
misdb-Datenbank existiert und auf die Abfragen reagieren würde.
3.2
Datenmodell
Die Abbildungen 3.1 und 3.2 auf der folgenden Seite stellen dar, wie die Daten
in misdb strukturiert sind. Außerdem erläuteren sie auch alle Relationen (Tabellen) mit ihren Attributen und Verweisen. Die linke Abbildung zeigt das Datenmodell der Abschlussprüfungsdaten, die rechte Abbildung zeigt das Datenmodell
der Immatrikulationsdaten. Die Kommentierung der verwendeten Bezeichnungen
befindet sich im Anhang dieser Arbeit.
3 Verfügbare Daten
Abbildung 3.1: Datenmodell der Immatrikulationsdaten
18
3 Verfügbare Daten
Abbildung 3.2: Datenmodell der Abschlussprüfungsdaten
19
3 Verfügbare Daten
3.3
20
Ausgewählte Daten
Die Datenbank misdb enthält eine Vielzahl von Informationen. In Absprache mit
Frau H. Dalinghaus, der zuständigen Administratorin der Datenbank und Herrn
Prof. Dr. Vornberger hat der Verfasser sich dazu entschieden, folgende Immatrikulationsdaten für die Webanwendung zu verwenden. Dabei muss zwischen den
Kategorien Studierende und Absolventen unterschieden werden. Zunächst beginnt
der Autor mit der Erklärung der Attribute in der Kategorie Studierende, daran
anschliessend definiert er die verwendeten Begriffe in der Kategorie Absolventen.
Bei der Beschreibung der Attribute hat sich der Verfasser an der MIS-ProjektDokumentation orientiert.
3.3.1
Kategorie Studierende
Erfassungssemester: Auswahlmöglichkeit, für welches Semester Daten angezeigt werden sollen.
Abschlussart: Akademischer Grad, der am Ende des Studiums verliehen wird.
Studienfach: Bezeichnet das Studienfach, für das ein Studierender eingeschrieben ist. Zu beachten ist, dass Studienfach“ nicht gleich Studiengang“ ist,
”
”
da Studierende bspw. beim Abschluss Magister oder Lehramt i.d.R. mit
allen Teilfächern erfasst werden.
Studiengangzahl: Bezeichnet die Anzahl der Studiengänge, für die ein Studierender einen Abschluss anstrebt.
Fachsemester: Bezeichnet das Semester, in dem ein Studierender eingeschrieben ist.
Alter: Gibt das Alter der Studierenden in Jahren an. Bei Studierenden wird
die Differenz der Studienjahre gebildet, denen das aktuelle Semester bzw.
das Geburtsdatum zuzuordnen ist.
Staatsangehörigkeit: Bezeichnet die Staatsangehörigkeit der Studierenden.
Fachzahl: Bezeichnet die Anzahl der Studienfächer in einem Studiengang, für
die ein Studierender einen Abschluss anstrebt.
3 Verfügbare Daten
21
Zulassungsart: Klassifizierung der Hochschulzugangsberechtigung.
Zulassungsort: Bezeichnet den Ort, in dem der Studierende seine Hochschulzugangsberechtigung erworben hat.
Geschlecht: Bezeichnet das Geschlecht des Studierenden.
Beurlaubungsgrund: Gruppierung nach Gründen für die Beurlaubung eines
Studierenden.
Exmatrikulationsgrund: Gruppierung nach Gründen für die Exmatrikulation eines Studierenden.
Hörerstatus: Gruppierung der Studierenden ensprechend ihrer semesterweisen
Qualifizierung (z.B. Haupt- und Nebenhörer).
Meldestatus: Bezeichnet die Art des Immatrikulationsvorgangs“, z.B. Erst-,
”
Neueinschreibung, Rückmeldung.
Regelzeitüberschreitung: Gibt je Studierendem die Anzahl der Semester an,
um die die zugehörige Regelstudienzeit im aktuellen Semester überschritten
ist.
3.3.2
Kategorie Absolventen
Prüfungssemester: Auswahlmöglichkeit, für welches Semester Daten angezeigt werden sollen.
Abschlussart: Akademischer Grad, der am Ende des Studiums verliehen worden ist.
Prüfungsfach: Bezeichnet das Studienfach, für das ein Absolvent eine Prüfung
abgelegt hat.
Studiengangzahl: Bezeichnet die Anzahl der Studiengänge, für die ein Absolvent einen Abschluss erreicht hat.
Prüfungsalter: Gibt das Alter der Absolventen in Jahren an. Bei Prüfungen
wird die Differenz zwischen Prüfungs- und Geburtsjahren gebildet.
3 Verfügbare Daten
22
Staatsangehörigkeit: Bezeichnet die Staatsangehörigkeit der Absolventen.
Fachzahl: Bezeichnet die Anzahl der Studienfächer in einem Studiengang, für
die ein Absolvent einen Abschluss erreicht hat.
Zulassungsart: Klassifizierung der Hochschulzugangsberechtigung.
Zulassungsort: Bezeichnet den Ort, in dem ein Absolvent seine Hochschulzugangsberechtigung erworben hat.
Geschlecht: Bezeichnet das Geschlecht des Absolventen.
Fachkombination: Abfolge der Prüfungsfächer (Teilstudiengänge), z.B. die zwei/drei
Fächer beim Magister-Abschluss oder die Fächer beim Lehramts-Abschluss.
Prüfungsergebnis: Ergebnis, mit dem ein Absolvent sein Studium abgeschlossen hat.
Regelzeitüberschreitung: Gibt je Absolventen die Anzahl der Semester an,
um die die zugehörige Regelstudienzeit im Prüfungssemester überschritten
war.
4 Erstellung der Anwendung
4
23
Erstellung der Anwendung
In diesem Kapitel beschreibt der Verfasser, wie er bei der Erstellung der Anwendung vorgegangen ist. Zur Veranschaulichung des Ablaufs einer Webanwendung,
zeigt er zuerst das Webanwendungsschema, daran anschliessend beschäftigt er
sich mit der Ermittlung zu verwendender Daten. Im Folgenden wird die Erstellung und Einbindung von SVG-Dateien in die Anwendung erklärt. Abschliessend
beschäftigt er sich mit der Darstellung der Abfrageergebnisse und der Vorstellung
der Benutzeroberfläche.
4.1
Webanwendungensschema
Der Ablauf des Aufrufs einer PHP-Anwendung wird in Abbildung 4.1 gezeigt.
Vorausgesetzt wird eine Netzwerk- oder Internetinstallation und ein lauffähiger
Browser, der auch SVG visualisieren kann.
Webserver
(Apache, etc)
Client
Browser
Internet
PHP
(Modul/Interpreter)
Server
Anwendung
Datenbank
Abbildung 4.1: Anwendungschema
4 Erstellung der Anwendung
24
Die Anwendung und die Datenbank müssen auf dem Server vorhanden sein und
PHP muss ebenfalls installiert sein. Nur so können die PHP-Skripte ausgeführt
werden.
Der Benutzer startet diese Webanwendung, indem er in seinem Browser die Adresse des Webservers eingibt. Damit sendet er die erste Anfrage. Der Webserver
nimmt diese Anfrage entgegen und übergibt sie an die Webanwendung. Der PHPInterpreter auf dem Webserver verarbeitet den Anwendungs-Code und erzeugt
daraus im Browser den SVG-Quellcode einer Webseite. Falls eine Datenbankabfrage erforderlich ist, übernimmt der PHP-Interpreter diese Aufgabe und übergibt
die vom Datenbank-Server gelieferten Daten an den Webserver. Die generierte
Webseite ist die grafische Benutzeroberfläche der Webanwendung.
4.2
Ermittlung der Daten
Die Programmiersprache PHP übernimmt die Ermittlung der Daten. Wie bereits im Kapitel Grundlagen“ erwähnt wurde, verfügt PHP über eine Vielzahl
”
von Methoden zum Abfragen der Datenbanken und Rückübermittlung der Antworten. ECMAScript übernimmt die Aufgabe der Erstellung der Abfragen nach
Wunsch des Anwenders.
Die Datenermittlung läuft in zwei Phasen, zuerst auf dem Browser des Clienten
und danach auf dem Server. Dies wird in den nächsten Unterabschnitten beschrieben. Alle Operationen laufen im Hintergrund, bei erfolgreicher Datenermittlung
erscheint das Resultat auf der Anzeigefläche der Anwendung.
4.2.1
Auswahl der Daten
Beim Starten der Anwendung und nach der Auswahl der Statistiken auf der
Navigationsleiste hat man die Wahl zwischen den Kategorien Studierende“ und
”
Absolventen“. Nach entsprechender Auswahl sollen anschliessend Attribute aus”
gewählt werden, beispielsweise Erfassungssemester“ oder Studienfach“. Die An”
”
zahl der Attribute ist frei wählbar.
4 Erstellung der Anwendung
25
Die folgende Abbildung 4.2 zeigt, wie der Benutzer seine gewünschten Daten
auswählen kann.
Abbildung 4.2: Datenauswahl
Die Kategorien können über Anklicken der Karteien augewählt werden. Die Attribute werden durch anklicken auf die Radiobuttons aktiviert. Hat der Benutzer
seine Entscheidung getroffen, dann klickt man auf den Button Weiter“ und ge”
langt automatisch auf die Hauptseite.
4.2.2
Erstellung der Datenbankabfragen
Auf der Hauptseite werden dem Benutzer seine ausgewählten Attribute im From
von Comboboxen dargestellt. Jede Combobox enthält alle möglichen Werte, die
aus der misdb-Datenbank ermittellt werden. Nach der Auswahl der gewünschten
Werte in den Comboboxen muss der Anwender sich noch dafür entscheiden, wie
die Ausgabedaten gruppiert sein sollen. Ausserdem sollte man auch einen Diagrammtyp aussuchen, als Standard steht das Säulendiagramm zur Verfügung.
Abbildung 4.3 zeigt die Comboboxen, in denen der Anwender auswählen kann.
4 Erstellung der Anwendung
26
Abbildung 4.3: Ermittlung der Daten
Die SQL-Abfragen werden aufgebaut mit Hilfe von mehreren Methoden. Beim
Klicken auf den Button Anzeigen“ wird eine ECMAScriptmethode gestartet.
”
Diese soll die ausgewählten Informationen zum Aufbauen der SQL-Abfragen
sammeln. Zum Anzeigen des oben gennanten Ablaufs wird ein Beispielcode 4.1
präsentiert. Die ECMAScript-Variable stud absol“ steht für die ausgewählte Ka”
tegorie ( Studierende“ oder Absolventen“), dazu füllen die drei Variablen sql1“,
”
”
”
sql2“ und sql3“ die SQL-Klausel SELECT sql1 FROM sql2 WHERE sql3“ aus.
”
”
”
Wenn der Anwender die Kategorie Studierende (stud absol=1 ) ausgewählt hat,
dann wird der Name der Studierendentabelle “FKT STUDIENGAENGE“ zu sql2
4 Erstellung der Anwendung
27
hinzugefügt. Je nachdem, was der Benutzer in den Comboboxen selektiert hat,
wird eine Schleife zum Übermitteln der Wahl gestartet und eine andere Methode
aufgerufen (siehe unten).
function anfrage_schicken(){
.......
if(stud_absol == 1){
sql2 +="FKT_STUDIENGAENGE";
sql3 +="1=1";
for(var i=1 ; i<eig_zahl+1 ; i++){
kombo_objekt=document.getElementById("box"+(i).toString());
titel=kombo_objekt.getFirstChild().getData();
if(titel != titels[i][0])
sql3 += sql23_ermittStud(titels[i][0],titel);
}
objekt=document.getElementById("box"+(eig_zahl+1).toString());
titel = objekt.getFirstChild().getData() ;
sql1 = sql1_ermittStud(titel);
}
.......
}
Quellcode 4.1: Methode zum Sammeln/Verschicken der Abfragen
Die oben eingebettete Methode sql1 ermittStud(string) bekommt einen Parameter als Zeichenkette und versucht anhand einer Switch-Schleife die passende
Ergänzung zur SELECT“-Klausel. Das wird im Quellcode 4.2 dargestellt. Sollte
”
z.B. die Gruppierung der Ausgabeergebnisse nach Erfassungssemester gewünscht
sein, wird sql1 in “ distinct SEM BEZEICHNUNG, count(STG MATRIKELNR)
“ umgewandelt. Das bedeutet, dass die zurückgegebenen Ergebnisse die Zahlen
der immatrikulierten Studierende nach Semesterbezeichnung (Verteilung der Studierende nach Semester) liefern.
Die zweite Methode sql23 ermittStud(string1, string2) bekommt dagegen zwei
Parameter als Zeichenketten. Die Aufgaben dieser Methode besteht darin, den
Unterschied zwischen den selektierten Attributen und ihren neuen Werten zu
erkennen und anschliessend daraus eine Zeichenkette zu erstellen. Diese Zeichenkette wird in der Datenbankabfrage in die WHERE“-Klausel angehängt.
”
4 Erstellung der Anwendung
function sql1_ermittStud(string){
var sqlstr="";
switch(string){
case "Erfassungssemester" :
sqlstr = "distinct SEM_BEZEICHNUNG,count(STG_MATRIKELNR)";
sql2+= ",DIM_SEMESTER" ;
sql3+= ",SEM_SEMESTER=STG_SEMESTER, group by SEM_SEMESTER";
ueberschrift ="Studierende nach Erfassungssemester";
break;
case "Abschlussart" :
sqlstr = " distinct ABINT_DTXT,count(STG_MATRIKELNR)";
sql2+=",DIM_ABSCHLUESSE" ;
sql3+=",ABINT_ID=STG_ABSCHLUSS, group by ABINT_DTXT";
ueberschrift ="Studierende nach Abschlussart ";
break;
........
default : break;
}
return sqlstr;
}
function sql23_ermittStud(string1, string2){
var sqlstr="";
switch(string1){
case "Erfassungssemester" :
sqlstr+=",SEM_SEMESTER=STG_SEMESTER,"
+"SEM_BEZEICHNUNG=’"+string2+"’";
sql2+= ",DIM_SEMESTER";
break;
case "Abschlussart" :
sqlstr+=",ABINT_ID=STG_ABSCHLUSS,ABINT_DTXT=’"+string2+"’";
sql2+=",DIM_ABSCHLUESSE";
break;
.........
default : break;
}
return sqlstr;
}
Quellcode 4.2: SQL-Anfragen-Methode
28
4 Erstellung der Anwendung
4.2.3
29
Datenbankabfragen zu PHP übergeben
Im vorherigen Abschnitt wurde erklärt, wie die SQL-Abfragen zusammengesetzt
sind. Im nächsten Javascript-Beispielcode 4.3 wird nun die Übergabe von Abfragen zu PHP-Dateien dargestellt. Die PHP-Dateien werden aufgerufen mit
Parametern hinter dem Fragezeichen. Mit Hilfe von Superglobalen Arrays z.B.
$ POST“ und $ GET“, die seit PHP 4.1.0 zur Verfügung stehen, kann man
”
”
auf die angehängten Informationen zugreifen. Beispielsweise ist $ GET“ ein as”
soziatives Array mit Variablen, das an das aktuelle Skript mit der GET-Methode
übergeben wurde. Das Array ist automatisch global in allen Gültigkeitsbereichen
und ist in allen Sichtbarkeitsbereichen eines Skripts verfügbar.[PHP2005]
function anfrage_schicken(){
......
objekt=document.getElementById("box"+(eig_zahl+2).toString());
if(objekt.getFirstChild().getData() == "Balkendiagramm")
loadFile("balken_Diag.php?var1="+sql1+"&var2="+sql2+
"&var3="+sql3+"&var4="+ueberschrift);
else if(objekt.getFirstChild().getData() == "Kreisdiagramm")
loadFile("kreis_Diag.php?var1="+sql1+"&var2="+sql2+
"&var3="+sql3+"&var4="+ueberschrift);
......
}
Quellcode 4.3: Methode zur Datenermittlung
4.2.4
Ausführung der PHP-Dokumente
PHP verfügt über standardisierte Methoden zum Abfragen vieler Arten von Datenbanken. In unserem Fall ist misdb eine MySQL-Datenbank. Der Beispielcode
aus dem PHP-Skript dieser Anwendung stellt die Methode querymisdb() vor,
welche genau drei Parameter als Zeichenkette bekommt. Ausserdem enthält diese
Methode auch andere Informationen wie Datenbankadresse (URL), Benutzername und Passwort.
Vor der Beschäftigung mit den Datenbankoperationen wird der Mechanismus von
$ GET -Array in PHP duch ein Beispiel 4.4 aus dem Quellcode vorgestellt.
4 Erstellung der Anwendung
30
Ein Aufruf kann folgendermassen aussehen:
("kreis_Diag.php?var1="+sql1+"&var2="+sql2+"&var3="+sql3+
"&var4="+ueberschrift")
<?php
$sql1 = $_GET["var1"];
$sql2 = $_GET["var2"];
$sql3 = $_GET["var3"];
$titel = $_GET["var4"];
.......
$parameter = querymisdb($sql1,$sql_2,$sql_3);
.......
$daten = $parameter[1];
$namen = $parameter[0];
......
?>
Quellcode 4.4: Kreisdiagramm.php
Wie querymisdb() hier zeigen wird, werden die Methoden mysql pconnect($host,
$benutzer, $pwort), mysql select db($datenbank), mysql query() und mysql result()
benutzt. Die erste Methode dient zum Aufbau einer permanenten Verbindung
zum MySQL Server. Die zweite Methode bekommt als Parameter einen Datenbanknamen, und versucht auf der gegebenen Datenbankadresse diese Datenbank
zu wählen. Die dritte Methode schickt die Anfrage, die sie als Zeichenkette erhält
an die Datenbank. Falls eine Antwort generiert wird, wird sie durch die vierte
Methode zurückgeliefert. Die for -Schleife im Programm versucht, aus dem Resultat ein Array zu liefern. So wird es einfacher, auf die Daten zuzugreifen und
sie zu verarbeiten.
Die Variablen in PHP werden durch das $-Zeichen eingeführt.
4 Erstellung der Anwendung
31
function querymisdb($selcols,$table,$equa) {
$host = "********";
$benutzer = "********";
$pwort = "*******";
$datenbank ="misdb";
@mysql_pconnect($host, $benutzer, $pwort)
or die ("Verbindung ist fehlgeschlagen !");
@mysql_select_db($datenbank)
or die ("Auswahl der Datenbank fehlgeschlagen!");
$result=mysql_query("select $selcols from $table where $equa");
if (!$result) {
die(’Ungltige Abfrage: ’ . mysql_error());
}
else{
$zeilenzahl=mysql_numrows($result);
$spaltenzahl=mysql_numfields($result);
for ($j=0; $j < $spaltenzahl; $j++) {
for ($i = 0; $i < $zeilenzahl; $i++ ) {
$parameter[$j][$i]=mysql_result($result,$i,$j);
}
}
return $parameter;
}
}
Quellcode 4.5: querymisdb-Methode
4.3
Erstellung von SVG-Dateien
Man hat verschiedene Möglichkeiten, SVG-Dateien zu erstellen. Entweder direkt
mit einem Texteditor zu schreiben oder Dateien dynamisch durch unterschiedliche Programmiersprachen zu erzeugen. Dies kann serverseitig z.B. mit Hilfe von
PHP, JSP oder ASP, aber auch clientseitig beispielsweise mit Hilfe von Javascript
erfolgen. Im Folgenden werden einige Möglichkeiten vorgestellt.
4 Erstellung der Anwendung
4.3.1
32
SVG durch PHP
Die Start- und Hauptseite sind im grössten Teil durch PHP erzeugt. PHP Skripte werden auf dem Webserver beim Aufruf der Anwendung über einen Link ausgeführt. Dieser Aufruf erzeugt daraufhin eine SVG-Datei. Hier wird vorausgesetzt,
dass PHP auf dem Webserver installiert und funktionsfähig ist. PHP erlaubt das
Einbetten von PHP-Codes in SVG-Dateien, die auf diese Weise dynamische Inhalte bekommen. Die Datenquelle kann auch aus anderen Dateien, Datenbanken
oder anderen Anwendungen bestehen. SVG und PHP können ineinander eingebettet sein.
Beispiel:
<?php
header("Content-Type: image/svg+xml");
print(’<?xml version="1.0" encoding="iso-8859-1"?>’);
$svgwidth=400;
$svgheight=300;
?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/SVG/DTD/svg10.dtd">
<svg width="<?=$svgwidth;?>px" height="<?=$svgheight;?>px"
xmlns="http://www.w3.org/2000/svg">
<rect x="20" y="20" width="100" height="25" fill="green" />
<?php
$myheight=100;
$mywidth= 150;
echo "<rect x=\"60\" y=\"40\" width=\"$mywidth\"
height=\"$myheight\" fill=\"black\" />";
?>
</svg>
Quellcode 4.6: Erzeugung von SVG durch PHP
Wie an diesem Beispiel verdeutlich wird, sind die SVG- und PHP-Codes zwar
ineinander eingebettet, aber voneinander getrennt. PHP-Code ist zwischen den
Klammern <?php und ? > eingeschlossen. Falls dieser Quellcode ausgeführt wird,
4 Erstellung der Anwendung
33
wird es in Laufzeit auf dem Server ersetzt. Beim Clienten kommt ein reiner SVGCode an, der im SVG-fähigen Browser angezeigt werden kann.
Durch den Befehl header(“Content-Type: image/svg+xml“); erfolgt zu Beginn des
PHP-Abschnittes eine Festlegung des Inhaltstyp des zu lieferenden Dokumentes.
So erwartet der Browser, dass das folgende XML-Dokument eine SVG-Grafik
ist. Danach wird anhand der Zeile print(‘<?xml version=“ 1.0“ encoding=“iso8859-1“ ? > ‘); der XML-Header gesendet, der im Kopf jeder SVG-Datei stehen
muss. Man kann hier entweder den print- oder echo-Befehl benutzen, und auch die
oben gennante XML-Deklaration ausserhalb des PHP-Codes einsetzen. An dieser
Stelle sollte man vorsichtig sein, weil PHP die XML-Deklaration einschliessenden Klammern zu interpretieren versucht. Nach diesen Deklarationen werden die
PHP-Variablen initialisiert. Dann folgt die Doctype-Definition. Im Anschluss daran erfolgt die Deklaration des SVG-Wurzelelementes und seiner Attribute (Höhe
und Breite). Diese Attribute bekommen ihre Werte aus dem PHP-Code nach der
Interpretation.
Folglich wird ein Rechteck mit normalem SVG-Syntax erzeugt. Im Anschluss daran wird ein zweites Rechteck mit einer Parameterübergabe innerhalb des PHPCodes erzeugt.
Als Resultat der Ausführung dieses PHP-Skriptes auf dem Webserver erhält
der Benutzer eine SVG-Grafik auf dem Bildschirm mit zwei verschiedenfarbigen
Rechtecken (grün und schwarz). [Carto2006]
4.3.2
SVG durch ECMAScript
Im Gegensatz zu PHP wird ECMAScript serverseitig ausgeführt und dient zur
Interaktivität zwischen dem Benutzer und der Anwendung. Es ist häufig sinnvoll, die SVG-Elemente dynamisch zu erzeugen. Dadurch können sie duch einen
Methodenaufruf angezeigt oder gelöscht werden. Zugleich werden diese Komponenten an einer anderen Stelle der Anwendung wieder benutzt.
Der Quellcode 4.7 wird zeigen, dass ECMAScript nicht nur für die Interaktivität
eines SVG-Dokumentes zuständig ist, sondern auch für die Erzeugung und/oder
Nachrüstung von SVG-Elementen. Diese Elemente können sowohl einfache Gra-
4 Erstellung der Anwendung
34
fiken als auch komplexe Strukturen sein.
function baue_Kreis(parent,id,x_mitte,y_mitte,radius,farbe){
var kreis = document.createElement( ’circle’);
kreis.setAttribute(’id’,id.toString());
kreis.setAttribute(’cx’,x_mitte);
kreis.setAttribute(’cy’,y_mitte);
kreis.setAttribute(’r’,radius);
kreis.setAttribute(’stroke’,’black’);
kreis.setAttribute(’fill-opacity’,’1’);
kreis.setAttribute(’fill’,’farbe’);
document.getElementById(parent).appendChild(kreis);
}
Quellcode 4.7: Erzeugung von SVG durch ECMAScript
Ein Aufruf dieser Methode kann wie folgt aussehen:
baue Kreis(parent id,‘kreis1‘,100,100,50,‘yellow‘);
Aus diesem Aufruf wird ein gelber Kreis mit einer Identität ‘circle ‘, Mittelpunktkoordinaten (100;100), Radius (50) und einem schwarzen Rand erzeugt.
4.4
Einbindung Externer SVG-Dateien
Zum Nachladen und Einbinden externer SVG-Dateien werden mittels ECMAScript zwei Methoden benutzt, getURL() und parseXML(). Sie stammen von der
Adobe Spezifikation und sind aktuell in fast allen Viewern implementiert. Allgemein dienen sie zum Einbinden von XML-Dateien.
Diese Methoden sind noch nicht standardisiert, aber eine Unterstützung ist in
der SVG Version 1.2 geplant:[Mei2004]
• Die bisherigen ASV-Methoden getURL() und postURL() lassen sich durch
die neuen URLRequest-Methoden nachbilden
4 Erstellung der Anwendung
35
• während parseXML() und printNode() dem Interface Global zugeordnet
wurden
getURL() bzw. parseXML() ermöglichen das Nachladen von weiteren Daten in
SVG Dateien. Teile von Dateien werden als so genannte XML-Fragmente direkt aufgerufen und eingefügt. Dabei spielt es keine Rolle, ob das nachzuladende
Fragment in einer Datei vorliegt oder durch ein serverseitiges Skript erzeugt wird.
In dieser Arbeit wird man auf zwei Arten von externen SVG-Dateien treffen. Zum
einen handelt es sich dabei um vorgefertigte SVG-Grafiken z.B. die Meldungen
(wie die Wartemeldung).
Zum anderen handelt es sich um SVG-Dateien, die erst nach einer Ausführung
eines PHP-Skriptes geliefert werden. Das PHP-Skript holt Informationen aus der
Datenbank ab und verarbeitet diese weiter.
function loadFile (dateiName) {
getURL(dateiName, fileLoaded);
}
function fileLoaded (data) {
if(data.success){
var node=parseXML(data.content,document);
document.getElementById("view_Box").appendChild(node);
}
else{
alert(’schwerer Ladefehler’);
}
}
Quellcode 4.8: Einbinden von externen SVG-Dateien
Die Funktionsweise dieser Methoden wird als nächstes vorgestellt. Der Aufruf
der loadFile()-Methode mit einem übergebenen Dateinamen als Parameter wird
von einem Aufruf von getURL() gefolgt. Die Methode getURL() bekommt dann
diesen Dateiname und dazu auch eine Callback -Funktion (hier fileLoaded()) als
4 Erstellung der Anwendung
36
Parameter übergeben. Die Callback -Methode bekommt den Dateinamen und wird
diese Datei auswerten.
Die Auswertung findet erst statt, wenn das Feld Dateiname.success des zurückgegebene Objekt true liefert, das heisst die Datei existiert und eingebunden werden. Danach wird der Inhalt dieser Datei mit Hilfe von Dateiname.content in
einer Zeichenkette gespeichert. Dieser Inhalt wird mit Hilfe von der Methode
parseXML() im Dokumentkontext als XML-Knoten zurückgeliefert und wird mit
appendChild() an das SVG-Element ( view Box“) angehängt. Andersfall wird ei”
ne Fehlermeldung ausgegeben.
4.5
Darstellung der Abfrageergebnisse
Mithilfe von Diagrammen lassen sich Daten oder Informationen grafisch darstellen. Der Begriff Diagrammm“ stammt aus dem Griechischen und bedeutet
”
geometrische Figur“.
”
Bei der Visualisierung der Immatrikulationsdaten hat sich der Verfasser für Säulendiagramnme und Kreisdiagramme entschieden, weil diese ihm für seine Arbeit
am geeignetsten erschienen. Im Folgenden werden einige Vorzüge dieser beiden
Diagrammtypen verdeutlicht und anhand von konkreten Beispielen aus der Applikation kurz vorgestellt.
4.5.1
Kreisdiagramm
Anhand eines Kreisdiagramms, kann man die prozentuale Verteilung graphisch
darstellen. Ein Kreisdiagramm ist zweidimensional, kreisförmig und teilt sich in
mehrere Segmente auf. Jedes einzelne Segement stellt einen Teilwert dar und der
gesamte Kreis schließlich präsentiert die Summe der Teilwerte. Wichtig für die
Lesbarkeit des Diagramms ist, dass alle Teilsegmente beschriftet sind. Kreisdiagramme eignen sich ideal für die Darstellung von Teilen einer Gesamtheit.
Der grösste Nachteil besteht darin, dass je mehr Segmente es gibt und je grösser
4 Erstellung der Anwendung
37
die Unterschiede der prozentualen Anteile sind, desto unübersichtlicher wird es.
[Wiki2006]
Abbildung 4.4: Kreisdiagramm
4.5.2
Säulendiagramm
Das Säulendiagramm ist der am häufigsten verwendete Diagrammtyp. Es veranschaulicht die Kombination zweier Variablen. Generell eignen sich Säulendiagramme gut, um absolute Verhältnisse zu visualisieren. Bei einem Säulendiagramm
sind die Säulen senkrecht angeordnet.
Die Nachteile sind im Wesentlichen die gleichen wie beim Kreisdiagramm.
4 Erstellung der Anwendung
38
Abbildung 4.5: Säulendiagramm
4.6
Präsentation der Benutzeroberfläche
Der Verfasser hat sich bei der grafischen Gestaltung seiner Webanwendung an
dem Internetauftritt der Universität Osnabrück orientiert, damit der Anwender
erkennt, dass ein unmittelbarer Zusammenhang besteht. Sämtliche verwendete
und abrufbare Daten haben schliesslich ihren Ursprung in einer Datenbank der
Universität Osnabrück.
Durch den in das Unilogo eingebauten Link auf der Start- und Hauptseite besteht
die Möglichkeit, schnell auf die Uni-Seiten zu wechseln. Die Startseite beinhaltet
eher beschreibende Elemente und die Auswahlmöglichkeit, die Hauptseite beinhaltet die Ausgabe der Ergebnisse. Auf beiden Seiten befindet sich die Titelzeile
Studentische Immatrikulationsdaten der Universität Osnabrück“. Um eine ein”
heitliches Erscheinungsbild zu erreichen, sind sämtliche Buttons gelb/orange unterlegt, der Hintergrund der Anzeigeflächen ist hellgelb gestaltet und die Steuerungsund Navigationskasten sind hellgrau unterlegt.
4 Erstellung der Anwendung
4.6.1
39
Startseite
Der Benutzer gelangt beim Aufruf der Webanwendung auf die Startseite. Dort
wird er durch die Titelzeile mit dem Thema “Studentische Immatrikulationsdaten der Universität Osnabrück“ vertraut gemacht. Ausserdem wird er freundlich
begrüsst und eine Grafik verdeutlicht, dass diese Anwendung einen statistischen
Hintergrung hat.
Weiterhin befindet sich auf der Startseite (Abbildung 4.6) eine Navigationsleiste zur Auswahl mehrerer Optionen. Hier hat der Anwender die Wahl zwischen
folgenden Schaltflächen, die durch einfaches Anklicken aktiviert werden:
• Startseite : Dient zur Rückkehr zur Startseite
• Statistiken : Auswahl der gewünschten Parameter
• Hilfe : Unterstützung zur Navigation
• Beschreibung : Erklärung zu den Parametern
• Autor : Informationen zur Bachelorarbeit
Um zur Hauptseite gelangen zu können, ist es unbedingt erforderlich, die gewünschten Parameter auszuwählen. Durch einfaches Klicken auf den Button Statisti”
ken“ gelangt man zu den Auswahlkriterien (siehe Abbildung 4.2 im Kapitel 4).
Wie im Kapitel 4 bereits kurz beschrieben, muss sich der Anwender zwischen
Studierende“ und “Absolventen“ entscheiden. Dies geschieht durch einfaches
”
Klicken auf die entsprechende Schaltfläche. Hat sich der Anwender entschieden,
stehen ihm zur weiteren Auswahl verschiedene Radiobuttons zur Verfügung.
Wie die Abbildung 4.7 zeigt, sind diese mit Attibuten belegt.
Hat der Benutzer seine Auswahl getroffen, gelangt er durch einfaches Klicken auf
den Button Weiter“ zur Hauptseite.
”
4 Erstellung der Anwendung
Abbildung 4.6: Startseite
Abbildung 4.7: Auswahlkriterien
40
4 Erstellung der Anwendung
4.6.2
41
Hauptseite
Die Hauptseite ist in zwei Bereiche unterteilt. Die rechte Seite ist eine Steuerungsbox, die linke Seite beinhaltet die grafische Darstellung der Abfrageergebnisse.
Um eine grafische Darstellung der Abfrageergebnisse zu erreichen sind zunächst
in der Steuerungsbox vom Anwender verschiedene Aufgaben zu erledigen. Im
folgenden stellt der Verfasser anhand von gebildeten Aufgabenbereichen die Reihenfolge dieser Aufgaben vor.
Aufgabenbereich 1 : Im oberen Bereich werden die auf der Startseite ausgewählten Attribute durch Comboboxen und zwei Buttons Zurücksetzen“
”
und Attribute neu wählen“ angezeigt. Durch Anklicken der jeweiligen
”
Combobox eröffnet sich dem Anwender die Möglichkeit, seine Auswahl weiter zu spezifizieren und sich zum Beispiel die genaue Abschlussart oder
Alter der Studierenden anzeigen zu lassen (siehe Abschnitt Datenmodell
3.2).
Aufgabenbereich 2 : Nach der im Aufgabenbereich 1 getroffenen Auswahl hat
der Anwender nun die Möglichkeit, in diesem Bereich ein Gruppierungskriterium und einen Diagrammtyp für die grafische Darstellung der Abfrageergebnisse auszuwählen. Dies geschieht durch einfaches Klicken auf die
entsprechende Combobox.
Aufgabenbereich 3 : Abschliessend klickt der Anwender im unteren Bereich
entweder auf den Button Anzeigen“, um sich die von ihm ausgewählten
”
Informationen anzeigen zu lassen oder er wechselt durch einfaches Klicken
auf den Button Startseite“ zurück zur Startseite.
”
Nachdem die oben genannten Aufgaben erledigt sind und die Datenbankabfrage
erfolgreich war, ist die Anwendung in der Lage, die Ergebnisse grafisch darzustellen. Dies geschieht im linken Teil der Applikation.
4 Erstellung der Anwendung
Abbildung 4.8: Hauptseite
42
5 Schlussbetrachtungen
5
5.1
43
Schlussbetrachtungen
Flexibilität der Anwendung
Die Anwendung erlaubt das nachträgliche Hinzufügen von anderen bzw. sämtlichen der in der Datenbank misdb vorhandenen Attribute. Sie läuft unabhängig
von der Datenbank. Die Aktualisierung der Daten erfolgt in jedem Semester und
hat keinen Einfluss auf die Funktionalität der Anwendung. Dies wird dadurch
erreicht, dass die Anwendung den Code durch dynamische Art erzeugt. Dy”
namische Art“ bedeutet z.B., dass die Datenbankabfrage unabhängig von dem
Inhalt der Daten erfolgt.
5.2
Visualisierung von SVG
Zum Zeitpunkt dieser Arbeit besteht die beste Möglichkeit zur Visualisierung von
SVG durch die Kombination Microsoft Internet Explorer (Version 6.0) und Adobe
SVG Plugin 3.03. Dieses Plugin ist zu bekommen unter [ASV3.03]. Im Vergleich
zu anderen SVG-Viewern unterstützt dieses Plugin die meisten Eigenschaften
von SVG. Soll die Visualisierung durch einen anderen Browser, z.B. Mozilla, Firefox oder Opera erfolgen, ist damit zu rechnen, dass die Visualisierung Probleme
bereitet. Weitere Informationen können auf der Seite [SVGWiki2006] angesehen
werden.
5.3
Ausblick
Diese Webanwendung bietet Spielraum für das Einbauen weiterer Funktionen.
So könnte z.B. das Ausdrucken der Ergebnisse wünschenswert sein. Sollte der
Anwender seine Abfrageergebnisse archivieren wollen, wäre es von Vorteil, wenn
die Ergebnisse als Dateien exportiert werden könnten.
Um erkennen zu können, wie stark frequentiert die Seite ist, könnte ein Besucherzähler integriert werden. Hieraus könnte man Rückschlüsse auf die Erreichbarkeit der Anwendung und das Interesse der potentiellen Nutzer ziehen.
Um Verbesserungsvorschläge oder Kritik erhalten zu können, wäre es gut, durch
5 Schlussbetrachtungen
44
einen entsprechenden Link den für die Anwendung Verantwortlichen erreichen zu
können.
Sollte diese Anwendung bei den potentiellen Nutzern auf Interesse stossen, wäre
es wünschenswert, diese Seiten in die Webpräsenz der Universität Osnabrück zu
integrieren.
A Inhalt der CD-Rom
A
45
Inhalt der CD-Rom
arbeit
arbeit/latex
arbeit/pdf
schriftliche Ausarbeitung der Bachelorarbeit
Latex-Quellen und Grafiken
PDF-Version
applikation
applikation/
Anwendungsdaten der Applikation
Quellcode der Anwendung
software
software/
benötigte Software
Adobe SVG Viewer 3.03
B Literaturverzeichnis
B
46
Literaturverzeichnis
Die Literaturangaben im Literaturverzeichnis beziehen sich auf gedruckte Bücher
und auf Internetseiten. Es dürfte allgemein bekannt sein, dass Webseiten einer
schnellen Veränderung unterliegen und somit die Inhalte und Internetadressen
sich ändern können. Ebenfalls ist SVG als Programmiersprache relativ neu, so
dass noch nicht viele Bücher in gedruckter Form darüber vorliegen. Daher beziehe
ich mich in meinen theoretischen Ausführungen häufig auf gängige Webseiten zu
diesem Thema. Zum Zeitpunkt der Abgabe dieser Arbeit, im Februar 2006, waren
alle angegebenen Internetadressen noch funktionsfähig.
Literatur
[Fib2002] Fibinger, Iris
SVG-Scalable Vector Graphics, Praxiswegweiser und Referenz für den neuen Vektorgrafikstandard
Markt+Technik Verlag, München 2002
[ECMA2004] ECMA International
Standard ECMA-262: ECMAScript Language Specification
http://www.ecma-international.org/publications/standards/
Ecma-262.htm
[CG2004] Vornberger, Oliver
Vorlesung Computergrafik (SS 2004)
http://www-lehre.inf.uos.de/~cg/2004/
[Mei2006] Meinike, Thomas
SVG - Learning By Coding
http://svglbc.datenverdrahten.de/
[Koch2003] Koch, Daniel
Javascript lernen: Anfangen, anwenden, verstehen
ADDISON-WESLEY Verlag, München 2003
B Literaturverzeichnis
47
[KannEns2004] Kannengiesser, Matthias; Enseleit, Damir
PHP 5, Praxisbuch und Referenz. Studienausgabe
Franzis-Verlag, Poing 2004
[W3C2006] W3C Recommendation
Scalable Vector Graphics (SVG) 1.1 Specification
http://www.w3.org/TR/SVG11/
[MySQL2006] MySQL Documentation
MySQL Reference Manual
http://dev.mysql.com/doc/
[MIS2001] MIS-Projekt
Entwicklung und Einführung eines Management-Informations-Systems
(MIS) zur Verbesserung der Leitungs- und Entscheidungsgrundlagen
http://sansibar.oec.uni-osnabrueck.de/pls/mss/fuwd?SelDB=
UWDSTIFT
[Carto2006] Kartographen im Netz
SVG tutorial, example and demonstration site
http://www.carto.net/papers/svg/samples/
[PHP2005] Achour, M.; Betz, F.; Doval, A.; Lopes, N. et al.
PHP Handbuch
http://www.php.net/manual/de/ Stand 21 Dez. 2005
[MMC2003] Turck Software St. Petersburg
Turck MMCache for PHP
http://turck-mmcache.sourceforge.net/index_old.html
[Wiki2006] Wikipedia, die freie Enzyklopädie
Diagramm
http://de.wikipedia.org/wiki/Diagramm Stand 17 Jan. 2006
[Mei2004] Meinike, Thomas
SVG auf dem Weg zum reichhaltigen Medienformat, Neuerungen in
Version 1.2
http://www.et.fh-merseburg.de/person/meinike/PDF/tekom2004_
Wiesbaden_Meinike.pdf
B Literaturverzeichnis
48
[SVGWiki2006] Wikipedia, die freie Enzyklopädie
Scalable Vector Graphics
http://de.wikipedia.org/wiki/SVG Stand Februar 2006
[ASV3.03] Adobe Systems
Adobe SVG Viewer download area
http://www.adobe.com/svg/viewer/install/main.html Stand Februar
2006
Erklärung
Ich versichere, dass ich die Arbeit ohne fremde Hilfe angefertigt habe und dass
wörtlich oder indirekt übernommenes Gedankengut nach bestem Gewissen als
solches kenntlich gemacht und keine anderen als die angegebenen Hilfsmittel und
Quellen verwendet habe.
Osnabrück, den 22 Februar 2006
...........................
Mustapha Fyjri
Herunterladen