Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨...

103
Fachhochschule M¨ unster Fachbereich Elektrotechnik und Informatik Diplomarbeit Erstellung eines Web-basierten Konfigurators f¨ ur Renn- und Triathlonr¨ ader mittels PHP und MySQL von Marco Ressler Betreuer/Pr¨ ufer: Prof. Dr. rer. nat. Nikolaus Wulff Dipl.-Kfm. Christian Pyrrek

Transcript of Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨...

Page 1: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Fachhochschule MunsterFachbereich Elektrotechnik und Informatik

Diplomarbeit

Erstellung eines Web-basierten Konfigurators fur

Renn- und Triathlonrader mittels PHP und MySQL

von

Marco Ressler

Betreuer/Prufer:

Prof. Dr. rer. nat. Nikolaus Wulff

Dipl.-Kfm. Christian Pyrrek

Page 2: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Eidesstattliche Erklarung

Ich versichere hiermit, dass ich diese Diplomarbeit ohne fremde Hilfe selbststandig

verfasst und nur die angegebenen Quellen und Hilfsmittel benutzt habe. Wortlich

oder dem Sinn nach aus anderen Werken entnommene Stellen sind unter Angabe

der Quelle kenntlich gemacht.

Die Arbeit wurde bisher in gleicher oder ahnlicher Form keiner anderen Prufungs-

behorde vorgelegt und auch nicht veroffentlicht.

Munster, den 22.Juli 2006

Page 3: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Inhaltsverzeichnis

Einfuhrung V

1 PHP vs. Java 1

1.1 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 Die Vor- und Nachteile bei Java und JSP . . . . . . . . . . . 3

1.1.2 Anwendungsbereiche von Java . . . . . . . . . . . . . . . . . 4

1.2 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2.1 Die Vor- und Nachteile bei PHP . . . . . . . . . . . . . . . . 6

1.2.2 Typische Anwendungen bei PHP . . . . . . . . . . . . . . . 7

1.3 PHP vs. Java - uberhaupt vergleichbar? . . . . . . . . . . . . . . . 7

2 Das Renn-/Triathlonrad 10

2.1 Aufbau und Komponenten . . . . . . . . . . . . . . . . . . . . . . . 11

2.2 Abhangigkeiten der Komponenten . . . . . . . . . . . . . . . . . . . 14

3 Das Programm aus Sicht des Nutzers 19

3.1 Programmablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2 Bildschirmausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2.1 Navigationsleiste . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2.2 Komponententabelle . . . . . . . . . . . . . . . . . . . . . . 22

3.2.3 Ubersichtstabelle . . . . . . . . . . . . . . . . . . . . . . . . 24

3.2.4 Sonstige Anzeigen . . . . . . . . . . . . . . . . . . . . . . . . 24

3.2.5 Showroom . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Diplomarbeit I

Page 4: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

INHALTSVERZEICHNIS

4 MySQL Datenbank 27

4.1 Aufbau der Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.1.1 Gemeinsame Eigenschaften . . . . . . . . . . . . . . . . . . . 28

4.1.2 Einzelne Tabellen . . . . . . . . . . . . . . . . . . . . . . . . 29

5 Die Progamm-Dateien 35

5.1 Programmablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.2 Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5.2.1 index.php . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5.2.2 Main.php . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

5.2.3 Showroom.php . . . . . . . . . . . . . . . . . . . . . . . . . 42

5.3 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5.3.1 XML-Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5.3.2 XML-Handler Klasse . . . . . . . . . . . . . . . . . . . . . . 46

5.4 Event-Handler Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . 48

5.4.1 Die Ereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.4.2 Weitere Funktionen . . . . . . . . . . . . . . . . . . . . . . . 50

6 Das Programm aus Sicht des Entwicklers 53

6.1 Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

6.1.1 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

6.1.2 Entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

6.1.3 Auswahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

6.1.4 Zusatzliche Auswahl . . . . . . . . . . . . . . . . . . . . . . 56

6.1.5 Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

6.2 Komponentenklassen . . . . . . . . . . . . . . . . . . . . . . . . . . 58

6.2.1 Funktion set session . . . . . . . . . . . . . . . . . . . . . . 59

6.2.2 Funktion display . . . . . . . . . . . . . . . . . . . . . . . . 61

6.2.3 Weitere Funktionen . . . . . . . . . . . . . . . . . . . . . . . 63

6.3 Elternklasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

6.3.1 Komponentendarstellung . . . . . . . . . . . . . . . . . . . . 65

6.3.2 Komponenten entfernen . . . . . . . . . . . . . . . . . . . . 68

6.3.3 Preis- und Gewichtsaktualisierung . . . . . . . . . . . . . . . 69

Diplomarbeit II

Page 5: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

INHALTSVERZEICHNIS

6.4 Weitere Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

6.4.1 XML Handler Klasse . . . . . . . . . . . . . . . . . . . . . . 70

6.4.2 Session Handler Klasse . . . . . . . . . . . . . . . . . . . . . 72

6.4.3 Datenbank Handler Klasse . . . . . . . . . . . . . . . . . . . 72

6.5 Interaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

6.5.1 Event: Navigation . . . . . . . . . . . . . . . . . . . . . . . . 73

6.5.2 Event: Auswahl . . . . . . . . . . . . . . . . . . . . . . . . . 74

6.5.3 Event: Auswahl mit Zusatz . . . . . . . . . . . . . . . . . . 77

7 Zusammenfassung und Ausblick 79

7.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

7.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

7.3 Schlusswort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

A Tables der Datenbank 83

B Screenshots 91

Quellenverzeichnis 94

Diplomarbeit III

Page 6: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Abbildungsverzeichnis

2.1 Ubersicht Fahrrad-Komponenten . . . . . . . . . . . . . . . . . . . 11

3.1 Pfade im Programmablauf . . . . . . . . . . . . . . . . . . . . . . . 20

3.2 Navigatonsleiste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.3 Komponententabelle . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.4 Ubersichtstabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.1 Aufbau der Artikelnummer . . . . . . . . . . . . . . . . . . . . . . . 29

5.1 Klassendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.2 Diagramm zur index.php . . . . . . . . . . . . . . . . . . . . . . . . 41

6.1 Aufteilung zwischen Footer und Head . . . . . . . . . . . . . . . . . 66

6.2 Ablauf beim Event Navigation . . . . . . . . . . . . . . . . . . . . . 75

6.3 Ablauf beim Event Auswahl . . . . . . . . . . . . . . . . . . . . . . 76

6.4 Ablauf beim Event zusatzliche Auswahl . . . . . . . . . . . . . . . . 78

B.1 Die Startseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

B.2 Konfigurator fur Triathlonrader . . . . . . . . . . . . . . . . . . . . 92

B.3 Konfigurator fur Rennrader . . . . . . . . . . . . . . . . . . . . . . 93

Diplomarbeit IV

Page 7: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Einfuhrung

Das Ziel dieser Arbeit war es mit Hilfe von kostengunstigen Mitteln einen Web-

basierten Konfigurator fur Renn- und Triathlonrader zu erstellen. Um die Entwick-

lungskosten zu minimieren wurden die Skriptsprache PHP und die open-source Da-

tenbank MySQL gewahlt. In Auftrag gegeben wurde das Projekt won der Firma

all4triathlon.com, einem Internethandel, der sich auf die Nischensportart Triathlon

spezialisiert hat. Eine Recherche im Internet hat ergeben, dass viele schon vorhan-

dene Konfiguratoren fur z. B. Rennrader sehr unzureichend sind [NR05] oder nur

eine Marke unterstutzen [Bik06]. Dieser Umstand sollte mit diesem Konfigurator

geandert werden, so dass ein benutzerfreundliches Programm unabhangig von Her-

stellern existiert.

Mit Hilfe des Konfigurators kann sich ein Benutzer, unter Berucksichtigung der

Abhangigkeiten der einzelnen Komponenten, sein”Wunsch-Fahrrad“ erstellen. Die-

se Abhangigkeiten galt es in PHP zu realisieren, in dem eine so genannte”Rule-

Engine“ entworfen wurde, so dass am Ende ein Rennrad erstellt wird, bei dem die

einzelnen Teile sich auch tatsachlich von einem Mechaniker zusammenbauen lassen.

Zusatzlich mussten nicht nur die komponentenspezifischen Daten gespeichert und

dargestellt werden, sondern es sollten auch der Preis und das Gewicht automatisch

berechnet werden. Eine weitere Anforderung an den Prototypen war, dass, nach-

dem ein Rad zusammengestellt war, es moglich sein sollte ein oder mehr weitere

Rader zu konfigurieren. In einer Gesamtubersicht sollten dann alle erstellten Rader

angezeigt werden, so dass man die Gelegenheit hat alle Rennrader miteinander zu

vergleichen.

Der fertige Prototyp ist unter der Internetadresse http://www.radtraum.de

erreichbar.

Diplomarbeit V

Page 8: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Kapitel 1

PHP vs. Java

Am Anfang er Entwicklung stellte sich naturlich die Frage mit welchen Mitteln der

Konfigurator erstellt werden sollte. Manche Programmiersprachen schieden von

vornherein aus. Dazu gehoren z. B. C/C++, Delphi oder Pascal. Unter anderem

weil die Sprachen nicht fur Webanwendungen zu verwenden sind. Am Ende kamen

nur Java bzw. JSP1 oder PHP in Frage. Beide (Skript-)Sprachen sind hervorragend

geeignet fur Anwendungen im Internet und ebenso konnen beiden Sprachen den

Anforderungen des Konfigurators gerecht werden.

In diesem Kapitel soll auf die Eigenschaften und auf die Vor-/Nachteile der jewei-

ligen Sprache eingegangen werden. Auch werden typische Anwendungen von Java

und PHP vorgestellt. Gegen Ende des Kapitels wird ein Resumee gezogen, wobei

sich von vornherein die Frage stellt, ob sich diese Sprachen uberhaupt vergleichen

lassen.

1.1 Java

Angefangen hat die Entwicklung von Java im Jahre 1991 unter dem Namen”Green

Project“. Ursprunglich war eine komplette Betriebssystemumgebung geplant und

1992 gab es die erste funktionsfahige Anwendung, in der mittels Touchscreen und

1Java Server Pages

Diplomarbeit 1

Page 9: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 1. PHP VS. JAVA

GUI2 mehrere Gerate interaktiv gesteuert werden konnten. Das bevorzugte Betati-

gungsfeld sollte aber das immer popularere Internet werden. Im Jahre 1995 wurde

dann Java erstmals offiziell der Offentlichkeit vorgestellt. Mit der Kooperation

zwischen Netscape und Sun kam der Durchbruch fur Java. Die erste Version, also

Java 1.0, wurde dann 1996 veroffentlicht. Es waren zwar noch nicht viele Pakete

enthalten, was sich aber mit der Version 1.1 aus dem Jahre 1997 anderte. Damals

wurden heute selbstverstandliche Funktionen, wie JavaBeans oder JDBC3 zum Zu-

griff auf Datenbanken, erstmals implementiert. Mit der ein Jahr spater erschienen

Version 1.2 anderte sich der Name in Java 2. So hießen die Produkte nicht mehr

JDK1.2 sondern J2SDK4. Eine herausragende Neuerung in dieser Version war ein

so genannter Just-in-Time Compiler, so dass Java-Programme deutlich schneller

liefen als vorher. Hinzu kamen noch verschiede Anderungen an den Standard-

Bibliotheken. Im Jahr 2000 kam die nachste Version auf den Markt, bei dem neben

einer erweiterten API5 auch weitere Optimierungsroutinen implementiert wurden.

Nach zwei weiteren Jahren erschien die Version 1.4, in welcher erneut Anderungen

an der Programmiersprache selbst vorgenommen wurden. Zuletzt geschah dies in

Version 1.1. Implementiert wurden auch Erweiterungen die eine Serverprogram-

mierung vereinfachen sollten, wie z. B. mit JSPs. Die momentan (Stand Juli 2006)

aktuelle Version ist 1.5, in der unter anderem generische Typen oder weitere Hilfs-

klassen eingefuhrt wurden. Die Version wurde aber wieder umbenannt und heißt

nun Java 5.0 [Wik06a].

So weit der Uberblick der Geschichte von Java. Doch warum sollte ein Entwickler

uberhaupt Java oder Java Server Pages wahlen? Die ublichen Vorteile, die immer

wieder genannt werden, sind z. B. die Portabilitat und die Vielseitigkeit der Spra-

che. Nachfolgend werden die Vor- und Nachteile von Java, JSP usw. hervorgehoben

und analysiert.

2Graphical User Interface3Java DataBase Connectivity4Java 2 Software Development Kit5Application Programming Interface

Diplomarbeit 2

Page 10: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 1. PHP VS. JAVA

1.1.1 Die Vor- und Nachteile bei Java und JSP

Zum Anfang eine Eigenschaft von Java,, welche noch immer im Internet zu lesen,

jedoch mittlerweile uberholt ist. Es wird oft genannt, dass Java eine clientseitige

Sprache sei [Ind06]. Z. B. durch JSP ist Java heute eher eine serverseitige Sprache

geworden.

Den großten Vorteil, den Java besitzt ist die Plattformunabhangigkeit. So ist ein

einmal kompilierter Code auf jedem System einsetzbar, dass die JVM installiert

hat. Dies wird auch als”write once, run everywhere“ umschrieben. Aber durch die

Java Virtual Machine ergeben sich auch Nachteile. Es muss eine JVM erst einmal

auf dem System vorhanden sein, damit der Java-Code lauft. Als großer Vorteil

wird bei Java immer wieder die Skalierbarkeit angefuhrt. Skalierbarkeit bedeutet,

dass eine Anwendung problemlos auf großere Rechnersysteme ubertragen werden

kann, wenn es die Benutzerzahlen bzw. die Systembelastung erfordert. So kann ein

Javaprogramm ohne weitere Optimierung viele Aufgaben bewaltigen, so lange die

Hardware stimmt [Hom06b].

Der nachste Vorteil ist die Testbarkeit von Programmen. Dieses wird haufig durch

Komponentenmodelle wie EJB erreicht. Da diese Enterprise Java Beans

unabhangig voneinander Aufgaben erfullen konnen, werden diese Funktionen ubli-

cherweise auch getrennt getestet, so dass das Aufspuren von Fehlern leichter ist

[Ihn06]. Dieser Vorteil wird seit PHP4, und besonders seit PHP5, aufgehoben, da

objektorientiertes Programmieren nun auch dort moglich ist. Wobei man allerdings

sehr viel mehr”

Disziplin“ beim Erstellen des Codes haben muss, um die gleiche

Testbarkeit und Modularitat von Java zu erreichen.

Das fuhrt direkt zu einem weitern Vorteil bzw. Nachteil, je nach Sichtweise: Bei

Java ist Vieles von vornherein definiert und abstrahiert. So mussen bei Java Varia-

blentypen und Klassen deklariert werden, oder es mussen Referenztypen angegeben

werden um objektorientiert zu arbeiten. Das bringt aber auch Typensicherheit. Au-

ßerdem muss Java uber eine main-Funktion verfugen damit der Java-Interpreter

einen so genannten Startpunkt hat.

Falls eine komplette Entwicklungsumgebung mit dazugehorigem Server gekauft,

bzw. gemietet werden soll, so sind die Kosten ublicherweise nicht gering. Eine

Diplomarbeit 3

Page 11: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 1. PHP VS. JAVA

einzige Benutzerlizenz fur Sun Java Studio Enterprise 7 kostet schon 1.850 e; eine

Verlangerung der Lizenz kostet nochmals 1.300 e6. Fur eine Java-Application-

Server Software wird jahrlich nochmals 1.950 e7 verlangt [Cat06]. Allein an diesen

Preisdimensionen kann man sofort sehen, dass dies ein großer Nachteil von Java ist,

und sich entweder nur fur gut situierte Unternehmen und/oder große Anwendungen

eignet.

Ein weiterer Nachteil mag in dem relativ schweren Erlernen der Programmier-

sprache liegen. Auch die strikte Objektorientierung mag fur manchen Anfanger

zu abstrakt erscheinen. Weiterhin wird als Nachteil die langere”Anlaufzeit“ eines

Java-Projekts genannt. Wie lange allerdings die Gesamtentwicklungszeit einer An-

wendung dauert, kommt naturlich auf das Projekt an. Dabei heißt es, dass je großer

die Anwendung, desto kurzer ist die Entwicklungszeit gegenuber PHP [XF04].

1.1.2 Anwendungsbereiche von Java

Hauptsachlich wird Java in E-Business Anwendungen eingesetzt. Auch auf Web-

und Applikationsservern wird Java in diesem Bereich verwendet. Die J2EE bietet

hierfur einen modularen Aufbau und die Moglichkeit mehrschichtige Anwendungen

zu erstellen. Das Spektrum reicht hier von Call-Center Losungen uber Kundenin-

formationssystemen bis hin zu graphischen Editoren [ID06].

Applets sind bzw. waren ein wichtiges Aufgabengebiet von Java. Gegen Ende der

neunziger Jahre war ein Java-Chatraum, das eigentlich eine Applet war, Norma-

litat. Andere Anwendungen fanden sich in der Datenprasentation, in Animationen

und Visualisierungen. Heute sind Applets nicht mehr so verbreitet, werden aber

immer noch gerne zu Visualisierungszwecken in Wissenschaft und Technik benutzt.

Heutzutage findet man Java auch in kleinen, mobilen Geraten wie einen PDA

oder das Mobiltelefon. Hier konnen dann verschiedenste Anwendungen, vom Spiel

bis zum Fahrplan8, ausgefuhrt werden. Allerdings wird nur das Notwendigste der

6jeweils ohne MWSt.7ohne MWSt.8siehe www.mofahr.de

Diplomarbeit 4

Page 12: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 1. PHP VS. JAVA

JVM implementiert - die kleinste Version der J2ME, CLDC genannt [Hom06a],

verzichtet sogar auf Berechnung von Fließkommazahlen.

1.2 PHP

PHP ist als Programmiersprache relativ jung. Erst 1995 wurde sie aus einer Samm-

lung Perl-Skripten erschaffen. Der Name stand damals noch fur”Personal Home

Page“. 1997 wurde dann PHP 2.0 veroffentlicht, in dem ein Form Interpreter bein-

haltet war. Deshalb wurde auch von PHP/FI gesprochen. Es war Perl recht ahnlich,

wenn auch eingeschrankter und einfacher.

PHP3 wurde neu geschrieben, da die alten Versionen dem e-commerce nicht mehr

genugten. Es erschien 1998. Die Entwicklung des Form Interpreters wurde bald

darauf eingestellt. Es wurde die Firma Zend Technologies gegrundet und somit

wurde 2000 die Zend-Engine, die das Herzstuck von PHP4 darstellte veroffent-

licht, in der auch einfache objektorientierte Programmierung moglich war. Auch

die Bedeutung der Abkurzung wurde geandert. PHP steht nun fur ein rekursi-

ves Akronym und heißt PHP: Hypertext Processor. Der nachste Meilenstein fur

diese Sprache kam 2004, als PHP5 veroffentlicht wurde. Nun war ernsthafte OO-

Programmierung moglich, und es kamen Java-ahnliche Funktionen wie Exceptions

vor. Die aktuellste Version ist derzeit 5.1. [Wik06b] [Bra05]

Vor allem das gegen Ende der neunziger Jahre stark anwachsende World Wide

Web verlangte nach einer Skriptsprache, die fahig ist, dynamische Webseiten dar-

zustellen. Die damals als Standard geltende Sprache Perl wurde von PHP in der

Popularitat uberholt, da sie als einfacher zu erlernen gilt.

PHP ist eine serverseitige Skriptsprache und wird fast ausschließlich fur Weban-

wendungen angewandt. Naturlich ist auch ein Zugriff auf Datenbanken, insbeson-

dere MySQL, moglich. Gerne werden die Vorzuge von PHP genannt: leichte Er-

lernbarkeit, schnellere Performance oder einfachstes Zusammenspiel mit HTML.

Nachstehend werden die Vor- und auch die Nachteile einer PHP-basierten Anwen-

dung beschrieben.

Diplomarbeit 5

Page 13: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 1. PHP VS. JAVA

1.2.1 Die Vor- und Nachteile bei PHP

Der großte Vorteil ist wohl, dass PHP uber die GPL9 vertrieben wird. Das bedeu-

tet, es ist freie Software. Der Quelltext kann von jedem eingesehen werden, und

daher ist eine GPL-Software auch kostenlos. Ebenso ist MySQL eine freie Software

und kann kostenfrei heruntergeladen werden. Dadurch werden fur PHP-Projekte

gegenuber Java weniger Geldmittel aufgewendet werden mussen [Bra05].

Der nachste positive Aspekt von PHP liegt in dem von vornherein großen Funk-

tionsumfang, wie z. B. optimierte Funktionen zu Datenbankanbindungen, Netz-

werken oder (seit PHP5) XML. Diese stehen sofort zur Verfugung, ohne dass die

Funktionen/Bibliotheken erst importiert oder inkludiert werden mussen. Dadurch

kann sich auch die Entwicklungszeit eines Projekts verkurzen, da viele dieser Funk-

tionen nicht erst selbst erstellt werden brauchen [Mor02b].

Ein haufig genannter Vorteil ist die Performancegeschwindigkeit, die viel hoher

liegen soll als die von Java. Allerdings gibt es in der Praxis zu viele Faktoren, wie

z. B. die Leistungsfahigkeit des Server-Computers und die des Client-Rechners, um

einen Unterschied festzustellen.

Die im Java-Teil schon erwahnte, strenge Typisierung entfallt bei PHP vollig. So

braucht man Variablen nicht deklarieren, denn die erste Zuweisung bestimmt den

Typ. Auch kann man, z. B. bei einer switch-Anweisung, fast jeden Typ verwenden

[Hat02]. Doch dadurch geht auch die Typensicherheit verloren und macht Java-

typische Funktionen wie Polymorphie unmoglich.

Nachteile ergeben sich durch den erhohten Netzwerktraffic. Da PHP serverseitig

funktioniert, mussen bei jeder zu prufenden Eingabe diese Daten an den Server

gesendet werden. Diese konnen durch JavaScript zwar minimiert werden, doch das

ist umstandlich und stellt auch nur eine”Vorprufung“ dar [Mor02a].

Ein ganz großer Nachteil (insbesondere fur großere Projekte) durfte in der fehlen-

den Modularitat liegen. Java ist von vornherein auf mehrschichtige Anwendungen

abgestimmt, wahrend man bei PHP schon recht”

disziplinierter“ arbeiten muss,

9General Public Licence

Diplomarbeit 6

Page 14: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 1. PHP VS. JAVA

um alle Aufgaben sauber von einander zu trennen. Dieses reduziert die Ubersicht-

lichkeit, die Wartbarkeit und den Wiederverwendungswert [WC04].

1.2.2 Typische Anwendungen bei PHP

Es gibt im Grunde genommen nur einen Anwendungsbereich von PHP, und das

sind dynamische Webseiten, bei denen Daten aus einer Datenbank entnommen

werden.

Aber da das Web viele Anwendungsmoglichkeiten bietet, sind auch die Bereiche in

denen PHP verwendet wird sehr unterschiedlich. Der oben genannte, grundlegende

Prozess kann mitunter auch sehr Komplex werden. Das einfachste Beispiel ware

eine Homepage eines Hobbyprogrammierers. Das kann bei einem selbst erstellten

Gastebuch oder einem Forum anfangen. Das Ganze kann bis zu einer Unterneh-

mensprasenz mit Homepage, e-commerce-shop [osC06] und Content Management

System (CMS) [Typ06] gehen.

Aber es gibt auch neben dem Internet Anwendungsgebiete fur PHP. Allerdings

sind diese recht unbedeutend, da es fur diese Aufgaben bessere Programmierspra-

chen gibt (z. B. Java). Es handelt sich beispielsweise hierbei um Kommandozeilen-

Skripte fur haufig verwendete Aufgaben, wobei nur der PHP Interpreter benotigt

wird. Ein weiteres Beispiel ist die clientseitige GUI-Programmierung. Dazu wird

allerdings die Erweiterung PHP-GTK10 verwendet [Gle03].

1.3 PHP vs. Java - uberhaupt vergleichbar?

Auf einer Seite im Internet wird behauptet ein Vergleich zwischen Java und PHP

sei wie ein Vergleich zwischen”Coke und Pepsi“ oder

”Hulk Hogan und Mr.T“

[Nor03]. Trotz dieser zugegebenermaßen seltsamen Analogie ist es wahr, dass sich

diese beiden Sprachen nicht ohne weiteres Vergleichen lassen. Jede Programmier-

sprache hat seine Vor- und Nachteile. Deshalb konnte eigentlich diese Diskussion

damit abgeschlossen werden, indem behauptet wird:

10GIMP (GNU Image Manipulation Program) Tool Kit

Diplomarbeit 7

Page 15: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 1. PHP VS. JAVA

Grundsatzlich bestimmen die Anforderungen des Kunden welches Sys-

tem zu Einsatz kommt.[Con04]

Doch welches System kommt wann zum Einsatz? Im Grunde genommen kann

man sagen, dass je großer und umfangreicher eine Anwendung wird, desto eher

sollte Java die Sprache der Wahl sein. Als Beispiel kann man das System eines

Call-Centers nutzen. Dort mussen viele Informationen von tausenden von Kunden

verfugbar sein. Diese Informationen mussen von jedem Call-Center Mitarbeiter

manipulierbar sein, und zusatzlich muss es nachvollziehbar sein, welcher Arbeiter

welche Anderungen vorgenommen hat. Dies ist ein System, das hunderte bis tau-

sende von Anfragen pro Minute hat und eine riesige Datenbank verwalten muss.

Dabei kann Java z. B. auch die Verteilung der Anrufe steuern. Das Ganze muss

auch so automatisch, d.h. so effizient wie moglich erfolgen.

Die Skriptsprache PHP ware dabei uberfordert, da unter anderem PHP ein so

genanntes Multithread System (mit dem Apache-Server) ist, wahrend Java ein

Multiprocess System darstellt und somit mehrere Aufgaben gleichzeitig erledigen

kann. Außerdem ist es mit PHP nicht moglich auf so genannte Low-Level Ressour-

cen zuzugreifen, so dass keine Hardware gesteuert werden kann.

Anders herum ist naturlich PHP vorzuziehen. Besonders bei kleineren oder mitt-

leren Projekten ist die Entwicklungszeit sehr kurz. Es macht keinen Sinn ein Java-

system fur eine Homepage oder einfache Internetprasenz eines Unternehmens zu

nutzen. Auch bei etwas großeren Projekten, wie eine e-commerce Applikation oder

ein Content Management System, ware PHP geeigneter wergen den geringeren

Kosten und der (wahrscheinlich) kurzeren Entwicklungszeit.

Als Fazit der Gegenuberstellung der beiden doch recht unterschiedlichen Program-

miersprachen kann man sagen:

Obwohl PHP schneller erste Fortschritte erzielt, ist bei großen Anwendungen eher

damit zu rechnen, dass die Java-Version schneller fertig gestellt wird. Deshalb ist,

wie schon erwahnt bei großen und umfangreichen Projekten Java zu bevorzugen.

Im Umkehrschluss heißt es also, dass bei kleineren und mittleren Projekten, bei

denen nicht so viel Performance benotigt wird, PHP vorzuziehen ist.

Diplomarbeit 8

Page 16: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 1. PHP VS. JAVA

Fur das Projekt mit der Erstellung des Konfigurators stand dann fest, dass PHP

verwendet werden sollte. Die Webanwendung ist nicht so umfangreich, dass ein

Team von Programmierern zur Realisierung benotigt ware. Ebenso ware eine der-

art teure Anschaffung, wie die einer Lizenz fur Java Studio Enterprise 7, fur dieses

Projekt kaum gerechtfertigt.

Diplomarbeit 9

Page 17: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Kapitel 2

Das Renn-/Triathlonrad

Ein Renn- bzw. Triathlonrad besteht aus vielen Komponenten, die nicht beliebig

austauschbar sind. Es stand fruh fest, dass dies ein interdisziplinares Projekt wer-

den wurde. Nicht nur Programmierfahigkeiten waren notwendig, sondern auch ein

technisches und mechanisches Verstandnis fur den Aufbau einer solchen”Rennma-

schine“. Daher bestand ein nicht unerheblicher Teil dieser Diplomarbeit daraus,

zu ermitteln, welche Komponenten bzw. Komponentengruppen sich uberhaupt fur

einen Konfigurator eignen.

Als Beispiel kann das Laufrad genannt werden: es besteht aus Felge, Speichen, Na-

be und Schnellspanner. Jedes dieser Teile ließe sich einzeln kaufen und so konnte

man nur fur das Laufrad vier weitere Bauteile in den Konfigurator aufnehmen. Die-

ses detailgenaue Erstellen eines Rennrades wurde allerdings den Rahmen sprengen,

und so mussten Bauteilgruppen zusammengefasst werden11 um eine uberschaubare

Menge an Komponenten zu erhalten.

Der nachste zeitaufwandige Teil bestand darin, zu ermitteln, in welchen Abhangig-

keiten diese Komponenten zueinander standen, bzw. wie diese Bauteile zusammen-

gebaut werden. Unter anderem wurden bei unterschiedlichen Herstellern unter-

schiedliche Bezeichnungen verwendet, so dass erst herausgefunden werden musste,

welche dieser Bezeichnungen das Gleiche bedeuteten. Als Beispiel kann man die

Große der Laufrader verwenden, denn dort gibt es drei Bezeichnungen fur den

11Die Komponenten Kurbelsatz und Schaltgruppe bestehen ebenfalls aus mehreren Einzelteilen

Diplomarbeit 10

Page 18: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 2. DAS RENN-/TRIATHLONRAD

gleichen Durchmesser: normal ist ein Durchmesser von 28 ”. Die Bezeichnung von

Reifen- und Schlauchherstellern lautet hier fur 663, was diese Große in mm an-

gibt, wahrend die traditionelle franzosische Bezeichnung 700C ist, und oft von

Laufradherstellern verwendet wird.

Abbildung 2.1: Ubersicht Fahrrad-Komponenten

2.1 Aufbau und Komponenten

An diesem Punkt sind die Komponenten aufgelistet, die in dem Konfigurator Ver-

wendung finden. Da die Benutzung ein gewisses Vorwissen uber den Aufbau eines

Rennrades erfordert, das die Zielgruppe zweifellos besitzt, werden die einzelnen

Baugruppen beschrieben, und es wird erklart was deren Funktionen sind. Abbil-

dung 2.1 zeigt wo an einem Rennrad die Komponenten zu finden sind.

Diplomarbeit 11

Page 19: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 2. DAS RENN-/TRIATHLONRAD

Rahmen Der Rahmen ist das Herzstuck des Fahrrades, da fast alle anderen Bau-

teile daran angebaut werden. An dieser Komponente werden direkt der Steu-

ersatz, die Gabel, die Sattelstutze und der Kurbelsatz befestigt. Eine wichtige

Einheit bei der Auswahl eines Rahmens ist die Rahmenhohe.

Steuersatz Diese Komponente halt Gabel und Rahmen zusammen und sorgt mit

den Kugellagern dafur, dass diese auch beweglich bleibt. Der untere Teil des

Steuersatzes wird auf die Gabel geschoben, und diese beiden Bauteile werden

dann durch das Steuerrohr des Rahmens geschoben. Mit dem oberen Teil des

Steuersatzes wird dann die Gabel an das Rohr festgeklemmt.

Gabel An der Gabel werden am oberen Ende der Vorbau, der Lenker und (beim

Triathlonrad bzw. Zeitfahrrad) der Aeroaufsatz montiert. Am unteren Ende

wird das vordere Rad befestigt. Die Gabel wird, wie schon beschrieben, mit

Hilfe des Steuersatzes an das Steuerrohr des Rahmens befestigt.

Vorbau Der Vorbau ist das Verbindungsstuck zwischen Gabel und Lenker. Er

wird in verschiedenen Langen gefertigt, die individuell vom Fahrer ausgewahlt

werden. Ein Vorbau kann auch einen bestimmten Winkel besitzen, damit der

Lenker eine fur den Fahrer optimale Hohe erreichen kann.

Lenker Der Lenker ist an dem Vorbau befestigt, und er kann verschiedene Breiten

von 40 cm bis 44 cm haben. Diese muss von Fahrer individuell gewahlt wer-

den. An dem Lenker sind bei einem Rennrad die Schalt-Bremshebel befestigt

(Die Schaltung und die Bremse befinden sich in einem Bauteil).

Aeroaufsatz Dieses Bauteil wird nur bei Zeit- bzw. Triathlonradern verwendet.

Durch den Aufsatz wird eine aerodynamischere Fahrposition erreicht. Hier

befinden sich die Schalthebel am Ende es Aufsatzes, wahrend sich die Brem-

sen am Lenker befinden.

Laufrader Die Laufrader sind ein fur die Aerodynamik wichtiges Bauteil. Sie

konnen je nach Einsatzzweck normale Speichen und Felgen, (fur normale

Radrennen), oder besonders aerodynamisch Geformte, bis hin zu einer Schei-

be am Hinterrad (fur Zeitfahren u. a.) haben. Bei speziell fur Aerodynamik

Diplomarbeit 12

Page 20: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 2. DAS RENN-/TRIATHLONRAD

und Gewicht ausgerichtete Laufrader spricht man auch von Systemradern.

Zusatzlich wird zwischen Schlauch- und Drahtreifen unterschieden. Auch gibt

es zwei verschiedene Arten von Naben am hinteren Laufrad, die mit dem

Hersteller fur die Schaltgruppe kompatibel sein mussen.

Reifen Den Kontakt zum Boden bilden die Reifen. Es gibt spezielle Gummi-

Mischungen fur Wettkampf und Training. Außerdem wird zwischen Schlauch-

reifen und Drahtreifen unterschieden. Erstere werden wie normale Reifen

gehandhabt, wahrend letztere aufwandig auf das Laufrad geklebt werden.

Kurbelsatz Dies ist eine Bauteilgruppe, die aus sehr vielen Einzelteilen besteht,

die, wenn sie einzeln zusammengestellt werden sollten, den Umfang eines

Konfigurators sprengen wurden. Doch viele Hersteller bieten Komplettsyste-

me an. Ein Kurbelsatz besteht aus zwei bzw. drei Kettenblattern, zwei Kur-

beln, einer Achse und dazu passendes Tretlagergehause samt Kugellager. Die

Kurbeln werden in verschiedenen Langen angeboten, die entsprechend den

Vorlieben des Fahrers ausgewahlt werden.

Schaltgruppe Hier gibt es nur zwei weltweit fuhrende Hersteller, Shimano und

Campagnolo, deren Systeme untereinander nicht kompatibel sind. Auch die

Schaltgruppe besteht aus vielen Einzelteilen, wie z. B. einem vorderen und

hinteren Umwerfer, der fur das Wechseln der Kette auf die verschiedenen

Ritzel bzw. Kettenblatter zustandig ist. Des weiteren gehort zu einer Schalt-

gruppe ein Ritzelpaket, auch Kassette genannt. Es besteht aus neun bis zehn

unterschiedlich großen Ritzeln, die auf die hintere Nabe des Laufrades ge-

steckt werden. Ein weiteres Bauteil ist der so genannte Kafig, der dafur

sorgt, dass die Kette stets gespannt bleibt. Zur Schaltgruppe gehoren auch

die Schalt-Bremshebel.

Bremsen Mit den Bremsen ist der tatsachliche Bremskorper gemeint. Die Brems-

backen greifen an der Felge des Laufrades und verlangsamen so die Fahrt.

Pedale Die Pedale werden an das Ende der Kurbeln vom Kurbelsatz geschraubt.

Sie sind ublicherweise so genannte Klick-Pedale, mit denen dann der Rad-

schuh fest an der Pedale befestigt ist. Das hat den Vorteil, dass nicht nur Vor-

Diplomarbeit 13

Page 21: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 2. DAS RENN-/TRIATHLONRAD

triebskraft beim Herunterdrucken der Pedale ausgeubt wird, sondern zusatz-

lich auch beim Hochziehen Vortrieb geleistet wird, da die Schuhe mit den

Pedale fest verbunden sind.

Sattelstutze Eine Sattelstutze ist nicht nur notwendig um einen Sattel zu befes-

tigen, sondern sie sollte auch entsprechend der individuellen Korpergroße des

Fahrers verstellbar sein. Da die Stutze dem Fahrtwind ausgesetzt ist, werden

oft aerodynamische Anspruche an diese Komponente gestellt.

Sattel Auf dem Sattel sitzt der Fahrer die meiste Zeit, und ist somit optimal

auf die menschliche Anatomie ausgerichtet. Es gibt sogar spezielle Sattel fur

Manner und Frauen, sowie je nach Fahrstil ausgerichtete Sattel.

2.2 Abhangigkeiten der Komponenten

In diesem Abschnitt werden die Abhangigkeiten der Komponenten untereinander

aufgezahlt bzw. welche Großen mit welchen Komponenten zusammenpassen. Auch

hier gilt, dass ein gewisses Vorwissen von Namen und Bezeichnungen vorhanden

sein sollte. Abbildung 2.1 kann dabei eine Hilfe sein.

Rahmen An einen Rahmen werden viele weitere Bauteile angebracht. Weil der

Rahmen die zentrale Komponente ist, sind viele andere Elemente von den

Maßen des Rahmens abhangig. So gibt es verschiedene Großen fur das Steu-

errohr, das Tretlager, die Sattelstutze, und – je nach Rahmenhohe12 – die

Laufrader.

Das Steuerrohr kann einen Durchmesser von 1 ” oder 11/8 ” haben. Das wirkt

sich dann auf den Steuersatz, die Gabel und den Vorbau aus. Die Sattelstutze

kann verschiedenste Maße zwischen 26mm und 34mm Durchmesser anneh-

men. Auch das Tretlager, das zum Kurbelsatz gehort, kann zwei unterschied-

liche Maße haben: ITA (metrisch, 70mm Durchmesser) und BSA (imperial,

12Die Rahmenhohe leitet sich von der Schritthohe des Fahrers ab.

Diplomarbeit 14

Page 22: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 2. DAS RENN-/TRIATHLONRAD

68mm Durchmesser), um die traditionellen Großen-Bezeichnungen zu benut-

zen. Zuletzt hangen auch noch die Durchmesser der Laufrader, und damit

auch die Große bzw. Lange der Gabel, von dem Rahmen ab, denn unter

einer Rahmenhohe von 52 cm werden ublicherweise 26 ” anstatt 28 ” Rader

verwendet.

Steuersatz Hier ist es wichtig welche Große das Steuerrohr des Rahmens, und

somit der Gabelschaftdurchmesser hat. Betragt das Maß nur 1 ” konnen nur

Steuersatze mit dem gleichen Maß verwendet werden. Bei 11/8 ” verhalt es

sich genau so.

Gabel Bei dieser Komponente sind zwei Maße wichtig: der Gabelschaftdurchmes-

ser und ob die Gabel fur 26 ” oder 28 ” Rader geeignet ist. Beides ergibt sich

aus der Rahmengeometrie, d.h. zum einen der Durchmesser des Steuerrohrs

und zum anderen die Rahmenhohe.

Vorbau Der Vorbau hat drei Maße, die zu beachten sind, wobei eine zwar wichtig

fur den Fahrer ist, aber unerheblich fur den Konfigurator. Es handelt sich

hierbei um die Lange des Vorbaus. Diese ist je nach Vorlieben und Korper-

große des Fahrers unterschiedlich.

Eines der beiden Maße, die fur das Programm von Bedeutung sind, ware

der Durchmesser fur das Loch, das auf den Gabelschaft montiert wird. Diese

Große hangt, wie der Steuersatz und die Gabel selber auch, von dem Durch-

messer des Steuerrohrs am Rahmen ab. Hier gibt es die schon genannten

Maße 1 ” und 11/8 ”.

An der anderen Seite des Vorbaus ist die Offnung, an die der Lenker festge-

klemmt wird. Hier werden die Maße wieder in Millimeter angegeben. Ublich

sind 26.0mm und 31.8mm als Lenkerrohrdurchmesser. Je nach dem welche

Große dieser Durchmesser bei dem ausgewahlten Vorbau hat, werden bei der

Komponente Lenker nur die entsprechenden Artikel angezeigt.

Lenker Wie oben erwahnt, sind die Lenkerrohrdurchmesser 26.0mm und 31.8mm

ublich. Diese Maße sind auch spater fur den Aeroaufsatz wichtig, falls ein

Triathlonrad gewahlt wurde. Es sind noch andere Informationen uber den

Lenker von Bedeutung. So muss z. B. angegeben sein, ob dieser Lenker nicht

Diplomarbeit 15

Page 23: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 2. DAS RENN-/TRIATHLONRAD

schon vom Hersteller aus uber einen Aeroaufsatz verfugt. Diese Art Lenker

durfen dann nicht angezeigt werden wenn ein Rennrad konfiguriert werden

soll. Es kann auch vorkommen, dass ein Lenker nicht dafur geeignet ist, einen

zusatzlichen Aeroaufsatz aufzunehmen. Dies muss auch berucksichtigt wer-

den, und somit durften diese Lenker nicht bei einem Triathlonrad angezeigt

werden.

Aeroaufsatz Diese Komponente steht nur zur Auswahl, wenn der Nutzer ein

Rennrad konfigurieren mochte. Der Aeroaufsatz ist naturlich von den Vor-

gaben des Lenkers abhangig. Da der Aufsatz normalerweise auf den Lenker

geklemmt wird, ist der Lenkerrohrdurchmesser hier von entscheidender Be-

deutung. Allerdings bieten manche Hersteller so genannte Multi-Fit Systeme

an, die bei (fast) allen Lenkern passen. Dies muss im Konfigurator ebenfalls

berucksichtigt werden.

Des Weiteren kann es vorkommen, dass ein Lenker schon vom Hersteller aus

einen Aeroaufsatz fest montiert hat. Auch das ist ein Aspekt, der beruck-

sichtigt werden muss.

Laufrader Hier sind ebenso zwei ubliche Maße zu beachten. Zum einen gibt es

die 28 ” und die 26 ” Rader. Die Große ist indirekt von der Korpergroße

abhangig, denn diese bestimmt die Rahmenhohe. Unterschreitet die Hohe

einen bestimmten Betrag (ublich sind 52 cm), so werden automatisch im

Konfigurator die kleineren Reifen gewahlt. Zusatzlich gibt es noch, wie oben

beschrieben, den Unterschied zwischen Draht- und Schlauchreifen. Diese In-

formation ist fur die Komponente Reifen wichtig.

Eine weitere Eigenschaft, die spater bei der Schaltgruppe und/oder dem Kur-

belsatz wichtig wird, ist die Nabe des hinteren Laufrades. Auf diese Nabe

wird die so genannte Kassette aufgesteckt, die aus bis zu zehn Kettenblattern

besteht. Es gibt nur zwei marktbeherrschende Hersteller fur Schaltgruppen

im Radsport: Shimano und Campagnolo. Die Naben sind nicht untereinan-

der kompatibel. Daher muss auch auf diese Eigenschaft beim Konfigurator

geachtet werden.

Diplomarbeit 16

Page 24: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 2. DAS RENN-/TRIATHLONRAD

Reifen Die einzige Abhangigkeit, die hier besteht, ist der Unterschied zwischen

den Schlauch- und Drahtreifen. Sie bestimmt welche Art der Reifen darge-

stellt wird. Eine weitere, aber fur den Konfigurator nicht relevante Große

sind die Breite der Reifen.

Kurbelsatz Bei der Vorauswahl eines Kurbelsatzes ist nicht nur zu beachten, dass

die Tretlager dieser Komponente auch in das Tretlagergehause des Rahmens

passen mussen. Es ist auch noch im Konfigurator zu prufen, ob nicht schon

die Laufrader gewahlt wurden, und somit die Anzeige der Komponenten nicht

weiter eingeschrankt wird. Abgesehen von der Kurbellange, bestimmen die

weiteren Maße und Eigenschaften eines Kurbelsatzes, welche Schaltgruppe

spater zur Auswahl steht.

Da ware die Art und Anzahl der Kettenblatter. Es gibt drei Variationen: die

normale Ausfuhrung mit zwei Blattern, die”compact“ Version, mit ebenfalls

zwei Kettenblattern, aber kleinerem Durchmesser und weniger Zahnen, und

die Variante mit drei Blattern. Die Anzahl der Zahne auf den Kettenblattern

ist wichtig um die so genannte Kapazitat des Schaltkafigs bei der Schaltgrup-

pe zu berechnen. Außerdem sind manche Schaltgruppen speziell auf compact

oder dreifach-Antriebe ausgerichtet.

Eine weitere Abhangigkeit besteht bei der Marke der Schaltgruppe. Da es

nur die Marken Shimano oder Campagnolo gibt, und die einzelnen Teile nur

bedingt bis gar nicht kompatibel untereinander sind, werden z. B. durch die

Wahl eines Shimano-Kurbelsatzes auch nur Shimano-Komponenten bei der

Kategorie Schaltgruppen angezeigt. Es gibt aber auch Anbieter von Kur-

belsatzen, bei denen es moglich ist, Schaltgruppen von beiden Herstellern zu

benutzten. Dies alles muss naturlich im Konfigurator berucksichtigt werden.

Schaltgruppe Die Anzeige der Schaltgruppenkomponenten wird entweder durch

die Wahl der Laufrader oder durch die Wahl des Kurbelsatzes eingeschrankt.

Außerdem bewirkt die Berechnung der Kapazitat der Kette eine weitere Vor-

auswahl. Andere Daten von vorherigen Komponenten dienen fur die spatere

Montage des Rades, und nicht mehr fur die Funktionalitat des Konfigura-

tors. Weitere gespeicherte Eigenschaften der Schaltgruppe dienen noch zu

Darstellungszwecken.

Diplomarbeit 17

Page 25: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 2. DAS RENN-/TRIATHLONRAD

Bremsen Hier gibt es keine Abhangigkeiten und keine Vorauswahl der Kompo-

nenten. Es kann sogar eine Campagnolo Bremse an ein Rad mit Shimano-

Schaltgruppe montiert werden.

Pedale Bei den Pedalen gibt es ebenfalls keine Abhangigkeiten mit anderen Bau-

teilen. Jede Pedale passt an jede Kurbel. Es gibt aber noch verschiedene

Pedalsysteme13, die nur mit bestimmten Radschuhen kompatibel sind. Die

sind allerdings nicht relevant fur den Konfigurator – das muss der Nutzer

selbst entscheiden, was fur ein System er verwenden mochte.

Sattelstutze Das einzige Maß auf das hierbei geachtet werden muss, ist der

Durchmesser der Sattelrohraufnahme beim Rahmen. Weitere Eigenschaften,

wie z. B. die Lange der Sattelstutze dienen nur zu Darstellungszwecken und

sind nicht weiter relevant fur die Vorauswahl von anderen Bauteilen.

Sattel Auch hier gibt es keine Abhangigkeiten mit anderen Komponenten, denn

auf jeder Sattelstutze lasst sich ein beliebiger Sattel montieren.

13Es gibt das so genannte Look-System und die SPD-Pedale von Shimano

Diplomarbeit 18

Page 26: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Kapitel 3

Das Programm aus Sicht des

Nutzers

3.1 Programmablauf

Der Ablauf vom Zusammenstellen eines Rennrades sollte recht flexibel sein. Es

wurde uberlegt, welche Art von Nutzerfuhrung am sinnvollsten erscheint. Zur Aus-

wahl standen der so genannte”Wizard-Mode“, in dem jede Komponente einzeln

und nacheinander durchgegangen wird, bis alle Bauteile ausgewahlt sind. Dem ge-

genuber stand die freie Wahl der Reihenfolge, in der der Nutzer die Komponenten

wahlen kann. Naturlich ist wegen der Abhangigkeiten untereinander keine ganzlich

freie Wahl moglich, aber in einem gewissen Rahmen ließe sich das realisieren.

Fur die assistierte Zusammenstellung sprach die relativ einfache Programmierung,

aber auf der anderen Seite wurde sich ein Nutzer zu sehr in seiner Wahlfreiheit

eingeschrankt fuhlen. Denn die Zielgruppe ist der schon fortgeschrittene Fahrer,

der die einzelnen Komponenten an seinem Rad kennt, und der sich durch einen

Assistenten-Modus eher”bevormundet“ fuhlen wurde. Außerdem ware der ganze

Prozess des Konfigurierens nicht sehr transparent.

Fur die (relativ) freie Wahl sprach eine bessere Benutzerfreundlichkeit, wie z. B.

die Moglichkeit eine schon ausgewahlte Komponente schnell zu entfernen, ohne

Diplomarbeit 19

Page 27: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 3. DAS PROGRAMM AUS SICHT DES NUTZERS

einige Male einen Zuruck-Button im”Wizard-Mode“ anzuklicken. Ein weiterer

Vorteil ist, dass durch eine Navigationsleiste die Ubersicht behalten wird, und al-

les innerhalb einer Webseite passieren kann. Der große Nachteil war allerdings die

komplizierte Implementierung und die ganzen Moglichkeiten, die sich dadurch ei-

nem Nutzer ergeben, abzufangen und in die gewunschten Bahnen zuruckzulenken.

Ein Beispiel hierfur ware, dass der Nutzer nach der Wahl des Rahmens nicht sofort

den Lenker wahlen kann. Er konnte zwar in der Navigationsleiste auf die Rubrik

Lenker klicken, aber durch entsprechende Mitteilungen musste der Nutzer wieder

die geforderte Reihenfolge einhalten.

Abbildung 3.1: Pfade im Programmablauf

Diplomarbeit 20

Page 28: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 3. DAS PROGRAMM AUS SICHT DES NUTZERS

Schließlich wurde wegen der genannten Vorteile die freie Wahl implementiert. Der

Nutzer kann zwar nicht in beliebiger Reihenfolge die Komponenten wahlen, aber

er kann so genannte Pfade entlang die Rad-Elemente aussuchen. Die Bauteile in

den Pfaden sind unabhangig von einander, so dass nur innerhalb dieser Pfade der

Nutzer auf eine bestimmte Reihenfolge in der Auswahl gebracht wird. Als Beispiel

(siehe Abb. 3.1) waren der Pfad im Konfigurator mit den Komponenten Laufrader

und Reifen, und der Pfad mit Sattelstutze und Sattel. Die Komponenten dieser

Pfade sind unabhangig voneinander, wahrend z. B. die Reifen von den Laufradern

abhangig sind, und der Sattel erst nach der Sattelstutze gewahlt werden kann.

3.2 Bildschirmausgabe

In den folgenden Sektionen wird auf die einzelnen Elemente, die auf dem Bildschirm

sichtbar sind, eingegangen und erklart welche Funktion sie haben. Die meisten Ele-

mente dienen dazu den Konfigurator zu bedienen, wie z. B. die Navigationsleiste

oder die Tabelle mit den Komponenten. Der Rest ist fur die Darstellung von In-

formationen zustandig. Dazu zahlt die Anzeige vom Gesamtpreis, Gewicht oder

ausgewahlter Marke.

3.2.1 Navigationsleiste

Die Leiste zum Navigieren ist naturlich sehr wichtig. Ohne sie ware das Steuern

und Bedienen des Konfigurators unmoglich. Wie schon vorher erwahnt (Seite 19),

ist das das Resultat der Entscheidung gegen einen vollig starren Ablauf im Konfi-

gurieren eines Rades.

In der Navigationsleiste sind die alle 13 Komponenten aufgelistet. Dies gilt aber

nur fur ein Rennrad, denn bei einer Zusammenstellung eines Triathlonrades sind

es 14 Komponenten. Bei einem Rennrad wird die Komponente Aeroaufsatz nicht

verwendet, und daher taucht dieses Element in der Navigationsleiste nicht auf.

Klickt der Nutzer auf eine dieser Kategorien, werden ihm die zur Verfugung stehen-

den, und kompatiblen Bauteile in der Komponententabelle angezeigt. Muss vorher

Diplomarbeit 21

Page 29: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 3. DAS PROGRAMM AUS SICHT DES NUTZERS

noch eine andere Komponente gewahlt werden, wird eine entsprechende Meldung

dargestellt. Wird ein Artikel gewahlt, so farbt sich das Feld dieser Komponente

ein. Dieses dient dazu um dem Nutzer einen Uberblick zu verschaffen welche Kom-

ponente er schon gewahlt hat, denn bei einer nicht assistierten und freien Wahl

der Bauteile kann die Ubersicht schnell verloren gehen. Falls eine Entscheidung

zuruckgenommen wird, und die entsprechende Baugruppe entfernt werden soll, so

werden auch in der Navigationsleiste dieses Feld, und alle damit zusammenhangen-

den Felder, wieder auf die Ursprungsfarbe zuruckgesetzt.

Abbildung 3.2: Navigatonsleiste

3.2.2 Komponententabelle

Auch diese Tabelle ist sehr wichtig. Hier kann der Nutzer die Komponenten an-

schauen, auswahlen und ggf. loschen. Jedes angezeigte Bauteil ist kompatibel mit

Diplomarbeit 22

Page 30: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 3. DAS PROGRAMM AUS SICHT DES NUTZERS

den vorher ausgewahlten Elementen, bzw. mit den angegeben Korpermaßen. Jedes

Element der Komponententabelle ist gleich aufgebaut, unterscheidet sich aber in

den Informationen. So sind in der ersten Zeile die Artikelnummer, der Name der

Komponente und daneben der Preis zu finden. Darunter ist eine Zeile mit einer

kurzen Beschreibung des Produkts und ein kleines Bild zu finden. Die darunter lie-

gende Zeile findet sich nicht bei jeder Komponente, sondern nur bei denen, die eine

zusatzliche Information brauchen. Als Beispiel kann man die Sattelstutze nennen,

bei dem diese Zeile angibt welchen Durchmesser und welche verstellbare Lange

sie hat14. In der letzten Zeile, die wieder fur alle Baugruppen gilt, sind dann das

Gewicht und der Auswahl-Button zu finden. Gegebenenfalls erscheint auch hier

eine Schaltflache zum Entfernen der Komponente.

Abbildung 3.3: Komponententabelle

Eine Abwandlung der Komponententabelle besteht in der so genannten zusatzli-

chen Auswahl. Bei den Komponenten Vorbau und Kurbelsatz bieten die Hersteller

das gleiche Produkt in verschiedenen Langen an. Da sonst die Komponententa-

belle zu lang und zu unubersichtlich ware, wenn alle Produkt- und Langenkombi-

nationen dort aufgelistet waren, wurde diese zusatzliche Auswahl implementiert.

14In der Abbildung bezieht sich die zusatzliche Info auf die Rahmenhohe.

Diplomarbeit 23

Page 31: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 3. DAS PROGRAMM AUS SICHT DES NUTZERS

Wahlt der Nutzer z. B. einen Vorbau, erscheint automatisch eine weitere Tabel-

le an der Stelle, an der auch die Komponententabelle war, und der Nutzer wird

aufgefordert eine passende Lange zu dem Vorbau auszuwahlen. Hierbei wird die

Navigationsleiste ausgeblendet, damit der Nutzer erst diese Wahl treffen muss.

Diese Vorgehensweise ware ein Beispiel fur die Lenkung der Entscheidungen des

Nutzers, damit dieser nichts”falsch machen“ kann.

3.2.3 Ubersichtstabelle

Diese Tabelle dient, wie der Name schon aussagt, zur Ubersicht. Wahrend der

Nutzer anhand der Navigationsleiste erkennen kann welche Komponenten er schon

gewahlt hat, so sind in der Ubersichtstabelle genauere Informationen zu finden. In

jeder Zeile der Tabelle ist eine Komponente aufgelistet. In der zweiten Spalte ist der

jeweilige Name des ausgewahlten Fahrradelements zu finden. In der dritten Spalte

ist dann noch einmal der Preis der Komponente aufgezeigt. Sollte es vorkommen,

dass z. B. bei dem Rahmen die Gabel schon im Lieferumfang enthalten ist, so wird

dies mit einem entsprechenden Eintrag in der Tabelle bei der Zeile Gabel vermerkt.

Der angegebene Preis ware dann naturlich 0,00e. Fur den Fall, dass ein Rennrad

zusammengestellt werden soll, zeigt die Ubersichtstabelle des Konfigurators ein

”N/A“ bei der Komponente Aeroaufsatz an, da bei einem Rennrad keine solchen

Elemente zum Einsatz kommen.

3.2.4 Sonstige Anzeigen

Zu den sonstigen Anzeigen zahlen z. B. der Gesamtpreis und das Gesamtgewicht.

Da beide Angaben fur einen Radfahrer sehr wichtige Daten sind, durfen sie bei

einem Renn- und Triathlonkonfigurator nicht fehlen. Das Feld mit diesen Informa-

tionen ist unter der Ubersichtstabelle positioniert. Je nachdem ob eine Komponen-

te ausgewahlt, oder wieder entfernt wird, andern sich der Preis und das Gewicht

automatisch.

Eine weitere Anzeige ist die der ausgewahlten Marke fur die Komponente Schalt-

gruppe. Diese wird nicht von Anfang an dargestellt, da die Wahl der Marke bei

Diplomarbeit 24

Page 32: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 3. DAS PROGRAMM AUS SICHT DES NUTZERS

Abbildung 3.4: Ubersichtstabelle

den Laufradern, dem Kurbelsatz oder erst bei der Schaltgruppe fallt. Sollten alle

Komponenten, fur die die Kompatibilitat mit Shimano oder Campagnolo wichtig

ist, entfernt werden, so wird auch diese Anzeige nicht mehr dargestellt. Diese In-

formation wird ebenfalls unter der Ubersichtstabelle angezeigt.

Zu manchen Komponenten wird auch ein Infotext angezeigt, der den Nutzer z. B.

daruber aufklart aus welchen einzelnen Elementen die Schaltgruppe besteht. Auch

wird darauf hingewiesen, bei welcher Komponente die Schaltgruppenmarke fest-

gelegt wird. Dieser Infotext ist ebenfalls dynamisch, so dass der eben genannte

Hinweis nur angezeigt wird, wenn die Marke noch nicht gewahlt wurde. Die Hin-

weise sind an dem unteren Rand des Bildschirms zu finden.

Ein weiterfuhrender Link erscheint uber der Navigationsleiste wenn alle Kompo-

nenten gewahlt wurden. Dieser Verweis fuhrt den Nutzer zu dem so genannten

”Showroom“, in dem er sich bis zu drei selbst erstellte Rader anschauen, und die

einzelnen Bauteile, den Gesamtpreis und das Gesamtgewicht vergleichen kann.

Diplomarbeit 25

Page 33: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 3. DAS PROGRAMM AUS SICHT DES NUTZERS

Die letzte, der so genannten sonstigen Anzeigen, ist eine Schaltflache am oberen

linken Bildschirmrand. Der Knopf dient zum Neustart des aktuell zu konfigurie-

renden Rades. Wird dieser angeklickt, so werden alle bisher ausgewahlten Kom-

ponenten entfernt. Allerdings kann nur das aktuelle Rad neu konfiguriert werden

– schon fertig zusammengestellte Rader, die im”Showroom“ betrachtet wurden,

sind nicht mehr loschbar, es sei denn, der Nutzer fangt wieder mit der Startseite

wieder an.

3.2.5 Showroom

Der Showroom ist eine eigene php-Datei. Das heißt, es wird nicht mehr alles von der

Main.php gesteuert. Hier werden das aktuelle Rad und vorher konfigurierte Rader

dargestellt. Diese Seite besteht aus drei Tabellen, die ahnlich der Ubersichtsta-

belle auf der Hauptseite sind. Es werden hier auch der Komponentenname, der

Artikelname und der Einzelpreis je Komponente nebeneinander angezeigt. Unter

der Tabelle ist dann noch einmal der jeweilige Gesamtpreis und das Gesamtgewicht

dargestellt.

Diese Ubersicht ist bisher bei noch keinem der schon im Internet verfugbaren Fahr-

radkonfiguratoren vorhanden. So kann der Nutzer von seinem Wunschrad mehrere

Ausfuhrungen oder Ausstattungen erstellen und so auf einen Blick entscheiden,

welche Konfiguration ihm am geeignetsten erscheint.

Es ist moglich bis zu drei Renn- bzw. Triathlonrader zusammenzustellen. Sind

noch nicht alle Rader konfiguriert, so erscheint unter den Tabellen noch ein Link,

der den Nutzer wieder zu der Hauptseite fuhrt. Dort kann dann ein weiteres Rad

erstellt werden. Die Komponentendaten sind naturlich wieder alle geloscht, so dass

keine Bauteilgruppe ausgewahlt ist. Es werden die Daten, die der Nutzer auf der

Startseite angegeben hat, wie Korper- und Schritthohe, sowie die daraus resul-

tierenden anderen Maße, beibehalten. Falls andere Korpermaße oder ein anderer

Radtyp gewunscht ist, muss der Nutzer wieder von vorne beginnen.

Diplomarbeit 26

Page 34: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Kapitel 4

MySQL Datenbank

4.1 Aufbau der Tables

Als Datenbank wurde eine normale MySQL Datenbank verwendet, da zumindest

in der Phase eines Prototyps nicht so viele Daten und Benutzerzahlen zusammen-

kommen, dass andere, kommerzielle Datenbanksysteme wie Oracle [Ora06] oder

DB2 [IBM06] in Betracht gezogen werden mussten.

Die Datenbank ist der essentielle Teil des Konfigurators, denn darin sind alle rele-

vanten Daten zu den einzelnen Komponenten gespeichert. Unter relevanten Daten

sind Informationen zur Darstellung innerhalb es Konfigurators, wie z. B. Kompo-

nentenname oder die Beschreibung zu verstehen. Die wichtigeren Daten innerhalb

der Datenbank sind Informationen uber die Komponenten, damit die Abhangig-

keiten zwischen anderen Bauteilgruppen erkannt werden konnen. So ist, um ein

Beispiel zu nennen, im Rahmen-Table der Durchmesser der Gabelaufnahme hinter-

legt. Ebenso ist diese Große bei jeder Komponente im Gabel-Table erfasst, damit

im Konfigurator nur die Gabeln angezeigt werden, die mit der Gabelaufnahme des

Rahmens zusammenpassen.

Diplomarbeit 27

Page 35: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 4. MYSQL DATENBANK

4.1.1 Gemeinsame Eigenschaften

Da jede Komponente verschiedene Abhangigkeiten mit anderen Rennradteilen be-

sitzt, hat jedes Table eine unterschiedliche Anzahl von Spalten und Eigenschaften.

Allerdings sind einige Spalten bei allen Tables gleich, da sie unter anderem fur die

Darstellung im Konfigurator gebraucht werden. Damit die Daten aus den Spalten

spater einfach extrahiert werden konnen, sind diese immer die Ersten eines Tables

und damit immer an der gleichen Stelle und Reihenfolge.

Es handelt es sich dabei um folgende Spalten:

Artikelnummer Ein eindeutiger Schlussel, der gleichzeitig auch der Primary Key

ist. Die Artikelnummer besteht aus sechs Zeichen, wovon das erste Zeichen

ein Buchstabe ist, der die Komponente bezeichnet.’A‘ ware in diesem Fall der

Rahmen,’B‘ der Steuersatz usw. Die nachsten beiden Zeichen bestehen aus

Zahlen und stellen einen Code fur den Hersteller/die Marke dar. Die nachsten

beiden Ziffern bezeichnen die wievielte Komponente des Herstellers es in der

Datenbank ist. Das letzte Zeichen sollte wieder ein Buchstabe sein, und steht

fur verschiedene Ausfuhrungen bei dem gleichen Artikel. Ein Beispiel ware

hierfur, wenn es einen Lenker in drei verschiedenen Breiten gibt.

Gewicht Hier wird das Gewicht der jeweiligen Artikel eingetragen, da es fur einen

Renn- und Triathlonfahrer sehr wichtig ist, wie viel sein Rad wiegt. Der

Eintrag in der Datenbank dient zum Darstellen im Konfigurator und zur

Errechnung des Gesamtgewichts.

Preis Der Betrag, den eine Komponente kostet, wird in dieser Spalte eingetragen.

Auch diese Daten dienen zur Darstellung im Konfigurator und zur Errech-

nung des Endpreises.

Name Der Name der Komponente. Dieser Eintrag wird nur zur Darstellung in

dem Konfigurator und der Ubersichtstabelle verwendet.

Beschreibung Ein kurzer Text zur Beschreibung der Komponente, in dem fur

den Benutzer, aber nicht fur die Funktion des Konfigurators, relevante Daten

stehen konnen.

Diplomarbeit 28

Page 36: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 4. MYSQL DATENBANK

Abbildung 4.1: Aufbau der Artikelnummer

Bild Eine URL zu einem kleinen Bild. Dies dient nur zu Darstellungszwecken. Al-

lerdings ist diese Funktion im Prototyp nur durch ein Beispiel-Bild realisiert,

das bei jedem Artikel gleich ist. Es wird aber spater notwendig sein, dass der

Dateiname des Bildes gleich dem der Artikelnummer (und gleichzeitig auch

des Primary Keys) ist.

Allein durch diese Daten in der Datenbank ware es moglich den Konfigurator mit-

tels PHP und HTML darzustellen. Alle zusatzlichen Spalten sind notwendig damit

die Abhangigkeiten zwischen den Komponenten erkannt und die kompatiblen Bau-

teilgruppen dargestellt werden konnen.

4.1.2 Einzelne Tabellen

Die folgende Beschreibung zeigt die einzelnen Tables auf, und gibt eine kurze Er-

klarung warum diese Spalte erstellt wurde, und wie/ob sie notwendig fur andere

Komponenten ist. (Vgl. Anhang A ab Seite 83)

TABLE Rahmen

Diplomarbeit 29

Page 37: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 4. MYSQL DATENBANK

• rahmenhoehe: das Maß wird aus den auf der Startseite angegebenen Da-

ten des Benutzers berechnet. Die Rahmen mit der ubereinstimmenden Große

werden angezeigt. Außerdem ist das Maß fur die Große der Laufrader rele-

vant.

• gabelaufnahme: hier ist gespeichert welcher Gabelschaftdurchmesser mit

diesem Rahmen zusammenpassen wird.

• gabelvorhanden: der Wert in dieser Spalte kann nur 0 oder 1 annehmen,

und gibt an ob der Rahmen schon mit einer Gabel ausgeliefert wird.

• steuersatz: ebenfalls konnen hier nur die Werte 0 und 1 angenommen wer-

den. Die Spalte gibt an, ob der Steuersatz mit dem Rahmen geliefert wird.

• sattelrohr: gibt an, welcher Durchmesser (in mm) das Rohr fur die Sat-

telstutze hat. Ist ein Wert uber 100 angegeben, impliziert das eine schon

beim Rahmen vorhandene Sattelstutze.

• tretlager: da es hier zwei Standardmaße gibt, ist diese Spalte wichtig um

anzugeben, welche Tretlagergroße der Kurbelsatz haben muss.

TABLE Steuersatz

• gabelschaft: der gespeicherte Wert gibt an zu welchen Gabelschaft- bzw.

Gabelaufnahmegroßen der Steuersatz passt.

TABLE Gabel

• gabelschaft: auch hier wird die Große des Gabelschafts angegeben, damit

die Gabel auch mit dem Rahmen und dem Steuersatz zusammenpasst.

• laenge: die Große der Laufrader, also 28 ” oder 26 ”, die an diese Gabel

montiert werden konnen, sind in dieser Spalte hinterlegt.

Diplomarbeit 30

Page 38: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 4. MYSQL DATENBANK

TABLE Vorbau

• gabelaufnahme: die Spalte gibt ebenso den Durchmesser des Gabelschafts

an, so dass im Konfigurator nur die Vorbauten angezeigt werden, die mit

dem ausgewahlten Rahmen bzw. der Gabel zusammenpassen.

• lenkeraufnahme: hier wird der Wert gespeichert, der angibt was fur ein

Durchmesser das Lenkerrohr haben muss, damit der Lenker sich an diesem

Vorbau montieren lasst.

• laenge1: die Hersteller von Vorbauten bieten verschiedene Langen an. Hier

wir die kleinste verfugbare Lange gespeichert.

• laenge2: an dieser Spalte wird die nachst-großere Vorbaulange eingetragen.

• . . .

• laenge9: bis zu neun verschiedene Langen konnen gespeichert werden, was

aber nicht notwendig ist, da viele Hersteller nur vier oder funf Vorbaulangen

zur Auswahl haben.

• winkel: gibt an, mit was fur einen Winkel der Vorbau von der Gabel abste-

hen wird. Das dient zur weiteren Lenker-Erhohung/Herabsetzung.

• flip: der Wert kann nur 0 oder 1 annehmen und beschreibt ob der Vorbau

um 180◦ drehbar ist, so dass der Fahrer zwischen zwei Winkeln wahlen kann.

TABLE Lenker

• lenkerdurchm: alle Lenker, die den gleichen Lenkerdurchmesser haben, wie

von dem Vorbau vorgegeben, werden angezeigt.

• breite: individuelle Große, die sich nach dem Fahrer richtet. Diese Spalte

dient nur zu Darstellungszwecken, und zum spateren Uberprufen, welche

Komponenten ausgewahlt wurden.

Diplomarbeit 31

Page 39: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 4. MYSQL DATENBANK

• lenkerart: in dieser Spalte ist festgehalten um was fur eine Art Lenker es

sich handelt: reiner Rennradlenker, reiner Triathlonlenker (ublicherweise mit

Aeroaufsatz) oder ob der Lenker mit beiden Fahrradarten kompatibel ist.

• aeroaufsatz: der Inhalt der Spalte beschreibt, ob an dem Lenker ein Ae-

roaufsatz angebaut werden kann, ob dies nicht moglich ist, oder ob schon ein

solcher Aufsatz mit dabei ist.

TABLE Aeroaufsatz

• lenkerklemm da der Aeroaufsatz auf den Lenker geklemmt wird, ist es

wichtig zu wissen, fur welche Lenkerdurchmesser der Aufsatz passt.

TABLE Laufraeder

• durchmesser: diese wichtige Spalte gibt an welche Große die Laufrader

haben. Es werden die traditionellen Maße angegeben: 700 (also 700C) fur

28 ” Rader, 650 (also 650C) fur 26 ” Rader.

• reifenart: hier ist festgehalten ob es sich um Draht- oder Schlauchreifen

handelt.

• nabe: ebenfalls ein wichtiger Wert wird in dieser Spalte angegeben. Hier

ist hinterlegt mit welchem der beiden Hersteller fur Schaltgruppen die Nabe

kompatibel ist.

Naheres siehe auch Seite 16.

TABLE Reifen

• durchmesser: in dieser Spalte ist vermerkt fur welche Laufraddurchmesser

die Reifen passen. Auch hier wurden die traditionellen Maße angegeben: 700

(C) und 650 (C)

• breite: dieser Wert dient nur zu Darstellungszwecken und beschreibt fur

welche Laufradbreiten der Reifen geeignet ist.

Diplomarbeit 32

Page 40: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 4. MYSQL DATENBANK

• reifenart: da es zwei verschiedene Reifensysteme gibt, ist es wichtig die Art

des Reifens festzuhalten.

TABLE Kurbelsatz

• kettenblatt: der hier hinterlegte Wert gibt an wie viele Kettenblatter an der

Kurbel sind, bzw. ob es sich um eine so genannte Compact-Kurbel handelt.

• zaehne vorne: gibt die Anzahl der Zahne auf dem großten Kettenblatt an.

Dieser Wert dient nicht nur zu Darstellungszwecken sondern ist auch wichtig

um die”Kapazitat“ des Schaltkafigs bei der Schaltgruppe zu berechnen.

• zaehne mitte: dieser Wert ist nur fur die Darstellung wichtig, und wird

auch nur mit einem Inhalt versehen falls es sich um ein 3-fach Kettenblatt

handelt.

• zaehne hinten: die Anzahl der Zahne des kleinsten Kettenblattes werden

hier gespeichert. Auch dieser Wert wird spater zur Berechnung der Kapazitat

benotigt.

• laenge1: gibt an wie lang die Kurbel von der Mitte zu den Pedalen ist.

Die Angabe ist in mm und da die Hersteller normalerweise mehrere Langen

anbieten, wie hier die kleinste verfugbare Große gespeichert.

• . . .

• laenge7: bis zu sieben verschiedene Langen konnen eingetragen werden, was

aber meistens nicht notwendig ist, da viele Hersteller nur zwei oder drei

Kurbellangen zur Auswahl haben.

• kompatibel: auch hier ist angegeben, mit welchem der beiden Hersteller

fur Schaltgruppen der Kurbelsatz kompatibel ist. Es ist auch moglich, dass

ein Anbieter einen Kurbelsatz anbietet, der fur Shimano und Campagnolo

kompatibel ist.

• innenlager: da diese Komponente unter anderem aus einem Innenlager be-

steht, fur das es zwei Großen gibt, ist es wichtig diesen Wert festzuhalten,

damit nur kompatible Kurbelsatze angezeigt werden.

Diplomarbeit 33

Page 41: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 4. MYSQL DATENBANK

TABLE Schaltgruppe

• kettenblatt: die Anzahl der Kettenblatter des zuvor ausgewahlten Kur-

belsatzes ist fur die Schaltgruppe in so fern relevant, dass fur verschiedene

Kettenblatter verschieden lange Schaltkafige benotigt werden.

• hersteller: dies gibt an mit welcher Marke die Schaltgruppe kompatibel ist.

• kassette min: die Anzahl der Zahne der kleinsten Scheibe am Ritzel. Ein

notwendiger Wert zur Berechnung der”Kapazitat“ der Schaltung.

• kassette max: hier wird die Anzahl der Zahne der großten Scheibe am

Ritzel angegeben. Das dient auch zur Berechnung der”Kapazitat“.

TABLE Bremsen

• Keine weiteren Spalten notwendig.

TABLE Pedale

• Keine weiteren Spalten notwendig.

TABLE Sattelstuetze

• laenge: ein Wert der nur zu Darstellungszwecken dient.

• durchmesser: diese Angabe ist notwendig, damit Sattelstutzen mit dem

richtigen Rohrdurchmesser angezeigt werden.

TABLE Sattel

• Keine weiteren Spalten notwendig.

Diplomarbeit 34

Page 42: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Kapitel 5

Die Progamm-Dateien

5.1 Programmablauf

Zuerst werden die eingegebenen Daten auf der Startseite berechnet und diese dann

abgeschickt. Zuvor werden jedoch mit Hilfe von JavaScript die Angaben uberpruft,

ob sie in einem zulassigen Bereich liegen. Nach dem Abschicken des Formulars wird

die Main.php aufgerufen, bei der es sich um die zentrale Datei handelt.

Verschiedene Variablen und Klassen werden initialisiert, damit am Anfang die

Navigationsleiste, die zur Verfugung stehenden Rahmen, die noch nicht ausgefullte

Ubersichtstabelle und auch schon der Preis/Gewicht-Bereich zu sehen sind. Der

gesamte Konfigurator wird uber die angeklickten Links, die eigentlich immer so

genannte Submit-Buttons von Formularen sind, gesteuert.

Wird ein solcher Button angeklickt, wird dieses in der Main.php registriert, indem

die entsprechenden Post-Variablen abgefragt werden. Je nachdem welcher Ver-

weis aktiviert wurde (oder auch: je nach dem welches Ereignis auftritt), ruft die

Main.php eine andere Funktion der EventHandler Klasse auf. Diese Klasse erkennt

bei welcher Komponente des Rennrades der Konfigurator sich gerade befindet, und

aktiviert die zum Event passende Funktion der zugehorigen Komponentenklasse.

In dieser Klasse werden nun die notigen Session-Variablen gesetzt, bzw. wieder

geloscht.

Diplomarbeit 35

Page 43: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

Abbildung 5.1: Klassendiagramm

Diplomarbeit 36

Page 44: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

Manche Aufgaben, wie z. B. das Darstellen der Tabelle, oder das Entfernen von

Komponenten geschehen in der Eltern-Klasse. In den Komponentenklassen werden

nur die spezifisch fur diese Baugruppe notwendigen Aufgaben erledigt. Darunter

fallt das Setzen von Session-Variablen fur die eigene und andere Komponenten, das

Herausfiltern von inkompatiblen Bauteilen oder auch das Fullen der Tabelle mit

den spezifischen Daten. Die Eltern-Klasse, bezeichnenderweise ComponentParent

genannt, ist dagegen fur Aufgaben zustandig, die allgemein fur alle Komponenten

gleich ist. Dazu zahlen das schon erwahnte Darstellen der Tabelle und die Remove-

Routine. In dieser Klasse werden auch die Daten fur Preis und Gewicht aktualisiert.

So werden die Ereignisse, die die einzelnen Komponenten betreffen, auf den Bild-

schirm gebracht. Allerdings ist die EventHandler Klasse noch fur mehr zustandig.

Sie stellt die Navigationsleiste, die Ubersichtstabelle und den Preis/Gewichts-

Bereich dar; es wird gepruft ob alle Komponenten ausgewahlt wurden, damit ein

weiterfuhrender Link zum Showroom erscheint; und es wird der Primary Key aller

ausgewahlten Baugruppen der verschiedenen Rennrader in einem zweidimensiona-

len Array gespeichert.

5.2 Darstellung

In diesem Abschnitt werden die php Dateien behandelt, die sich mit der Darstel-

lung des Konfigurators befassen. Hierbei soll es sich um alles handeln, was auf dem

Bildschirm zu sehen ist, wie die Komponententabelle, die Navigationsleiste oder die

Ubersichtstabelle. Zwar bringen z. B. die einzelnen Komponentenklassen auch In-

formationen auf den Bildschirm, aber deren primare Funktion ist es die Regeln der

Abhangigkeit zwischen den Komponenten anzuwenden. Die EventHandler Klasse

selbst stellt auch viele Informationen dar. Diese werden aber durch die Main.php

oder Showroom.php aufgerufen.

Diplomarbeit 37

Page 45: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

5.2.1 index.php

Das ist die erste Seite, die der Nutzer zu sehen bekommt. Hier werden die Infor-

mationen abgefragt, die fur den Start des Konfigurators wichtig sind. Notwendige

Angaben sind nur die Korpergroße und die Schritthohe. Die anderen Angaben

werden mittels JavaScript automatisch berechnet. Die ganze index.php besteht im

Grunde aus JavaScript, bis auf die Initialisierung der Session.

Beim ersten Aufrufen der Seite wird mit dem JavaScript Befehl navigator.

cookieEnabled uberpruft, ob der Browser Cookies zulasst. Durch eine if-Abfrage

wird dann bei positivem Ergebnis die eigentliche Seite dargestellt. Sind keine Coo-

kies erlaubt, wird dieses angezeigt, und ein Link zum erneuten Laden der Seite

bereitgestellt.

Die dargestellte Seite ist ein Formular, das beim Abschicken erst die eingegebenen

Werte uberpruft, und ggf. einen Fehler ausgibt. In der CheckFormular() Funktion

werden die Angaben fur Korpergroße, Schritthohe und Rahmenhohe kontrolliert.

Da alle drei Prufungen nach dem gleichen Muster ablaufen, hier als Beispiel nur

den Programmcode fur die Korpergroße:

var ZahlCheckFlag = 1;

if(document.datainput.height.value == "")

{

alert("Bitte Deine Korpergroße eingeben!");

document.datainput.height.focus();

return false;

}

if(document.datainput.height.value >=221 ||

document.datainput.height.value <=130)

{

alert("Unzulassige Korpergroße!")

document.datainput.height.focus();

Diplomarbeit 38

Page 46: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

return false;

}

for(i=0;i<document.datainput.height.value.length;++i)

if(document.datainput.height.value.charAt(i) < "0" ||

document.datainput.height.value.charAt(i) > "9")

ZahlCheckFlag = -1;

if(ZahlCheckFlag == -1)

{

alert("Korpermaß ist keine Zahl!");

document.datainput.height.focus();

return false;

}

Die erste if-Abfrage testet, ob uberhaupt etwas eingeben wurde. Die nachste Ab-

frage pruft ob sich der eingebende Wert in einem bestimmten Bereich befindet. In

diesem Beispiel sollte das Korpermaß zwischen 1,30m und 2,21m liegen. Der letzte

Test kontrolliert, ob alle Zeichen auch Zahlen sind, da es wenig Sinn ergibt eine

Kopergroße oder Rahmenhohe mit Buchstaben zu versehen. Bei jeder Falscheinga-

be wird das fehlerhafte Feld mit document.datainput.height.focus() hervor-

gehoben, um dem Nutzer die Suche nach diesem Feld zu ersparen.

In der index.php kann der Nutzer auch zwischen Renn- und Triathlonrad wahlen.

Dies hat Auswirkungen auf die angezeigte Rahmenhohe, da dieses Maß beim Tri-

athlonrad einige Zentimeter kleiner ist. Diese Große wird auch dynamisch geandert

sobald der Nutzer einen anderen Radio-Button anklickt. Bewerkstelligt wird dies

mit updateFramesize() und ist ebenfalls mit JavaScript realisiert. Diese Funktion

ruft getBikeType() auf, um festzustellen welcher Radio-Button gerade aktiv ist.

Da diese Buttons die ersten beiden Elemente des Formulars sind, ist es mit Hilfe

von der Abfrage if(document.datainput.elements[X].checked) recht einfach

dies herauszufinden. Wobei X entweder 0 fur das erste Element oder 1 fur das

zweite Element ist. In der Funktion updateFramesize() wird auch updateStem()

Diplomarbeit 39

Page 47: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

aufgerufen, die schon im Vorfeld die Auswahlmoglichkeiten der Vorbaulange ein-

schrankt.

5.2.2 Main.php

Diese Datei ist dafur zustandig, dass alle Klassen, weitere Dateien, und die Bild-

schirmausgabe”verlinkt“ werden. Deshalb auch der Name Main, da diese php-

Datei alles zusammenfugt. Hier werden auch die notigen Klassen eingefugt und

die Anfangsbedingungen initialisiert. Zuerst werden die aus der index.php uber-

gebenen Daten in Session-Variablen gespeichert, so dass diese fur spatere Berech-

nungen oder Darstellungen verwendet werden konnen. Die Initialisierung ist not-

wendig, damit der Konfigurator immer einen bestimmten Startpunkt hat. So wird

z. B. durch den folgenden Code die Navigationsvariable auf die erste Komponente

(hier: der Rahmen) gesetzt, wobei es egal ist ob die Main.php von der index-Datei

oder von der Showroom.php aufgerufen wird.

if (!empty ($_POST[’size’]) or empty($_SESSION[’nav’]))

{

$navigation = $xm->get_component_from_xml(1);

$sh->register_session(nav, $navigation);

$ev->navbar;

}

Ein anderes Beispiel ware, da es moglich ist bis zu drei Fahrrader zu konfigurieren

und anzeigen zu lassen, dass es notwenig ist am Anfang eine Session-Variable zu

initialisieren, welche speichert wie viele Rader schon konfiguriert wurden.

Anderer Code ist dafur zustandig, dass je nach Event eine andere Funktion aus der

EventHandler Klasse zum Einsatz kommt. Da alles auf dem Bildschirm Anklickba-

re ein HTML-Formular ist, werden diese Events durch Abfrage der entsprechenden

POST-Variablen erfasst.

In der Main.php werden auch alle anderen Funktionen aufgerufen, die Informatio-

nen auf dem Bildschirm darstellen. Meistens sind diese Funktionen ebenfalls in der

Diplomarbeit 40

Page 48: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

Abbildung 5.2: Diagramm zur index.php

Diplomarbeit 41

Page 49: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

EventHandler Klasse untergebracht. Zu diesen Aufgaben gehort unter anderem das

Anzeigen der Navigationsleiste, und das Ausblenden dieser, wenn eine zusatzliche

Auswahl zu einer Komponente getroffen werden soll. Die Ubersichtstabelle und die

Preis-/Gewichtsinformationen werden ebenfalls in der Main.php aufgerufen. Des

Weiteren wird in der Main.php uberpruft, ob alle Komponenten ausgewahlt wur-

den (indem wieder eine Funktion aus der EventHandler Klasse aufgerufen wird)

und erst dann ein Link zum so genannten Showroom angezeigt wird.

5.2.3 Showroom.php

Diese php stellt die schon zusammengestellten Fahrrader dar. Sie kann erst vom

Nutzer aufgerufen werden wenn alle Komponenten ausgewahlt wurden. Es wer-

den drei Tabellen angezeigt, die der Ubersichtstabelle auf der Hauptseite gleichen.

Um diese Tabellen mit Daten zu fullen wird ein zweidimensionales Array ausge-

lesen, in dem der Unique-Key jedes Rades und jeder ausgewahlten Komponente

gespeichert ist. Dieses Array wird in der EventHandler Klasse gefullt und nach

jeder Auswahl aktualisiert. Ebenso gibt es fur den Gesamtpreis und das Gewicht

ein separates zweidimensionales Array in dem diese Daten gespeichert werden.

Das Array wird auch in der Showroom.php ausgelesen und entsprechend auf dem

Bildschirm prasentiert.

Die Daten aus dem Array mit dem Unique-Key der Komponenten werden dann

in der Datei benutzt, um den Namen und Preis aus der Datenbank auszulesen.

Bei Gesamtpreis und -gewicht ist dies nicht notwendig, das es sich hierbei nur um

Session-Variablen handelt.

So lange noch nicht alle drei Renn- oder Triathlonrader konfiguriert sind, wird ein

Link dargestellt, mit dem der Nutzer wieder zuruck zur Hauptseite gelangen kann,

um ein weiteres Rad zu konfigurieren. Wurden alle drei Rader zusammengestellt,

wird dieser Link nicht mehr angezeigt, und der Prototyp des Konfigurators endet

hier.

Diplomarbeit 42

Page 50: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

5.3 XML

5.3.1 XML-Datei

Beim Erstellen der Form der XML-Datei, wie sie im Konfigurator gewunscht ist,

traten mehr Probleme auf, als vorhergesehen war. Zum einen mussten die notigen

Informationen untergebracht werden, und zum anderen musste die Struktur der

Abhangigkeiten berucksichtigt werden. Ein Beispiel fur diese Struktur ist, dass es

einen Zusammenhang von den Komponenten Gabel, Vorbau, Lenker und Aeroauf-

satz gibt. Mochte ein Nutzer, nachdem er diese vier Komponenten ausgewahlt hat,

z. B. die Gabel andern, so muss gleichzeitig die Auswahl der anderen drei Kompo-

nenten ruckgangig gemacht werden, da durch eine andere Gabel evtl. der Vorbau

und dadurch evtl. der Lenker usw. nicht mehr zusammenpassen. Diese im Beispiel

genannte Struktur muss in die XML ubertragen werden. Allerdings sollte das Aus-

lesen der Daten nicht zu kompliziert werden. Das heißt, die Ebenen sollten nicht

zu sehr in die Tiefe gehen, da sonst der Code zum Extrahieren zu unubersichtlich

werden wurde.

Nach ersten Uberlegungen wurde eine XML-Datei erstellt, die zwar genau die

Struktur des Konfigurators wiedergab, aber, wie sich im Nachhinein herausstellte,

dennoch Informationen fehlten. Dieses hier ist ein Codefragment aus dem ersten

Entwurf:

...<Path2><Component03>

<ArtNr>ArtNrFork</ArtNr><Component04>

<ArtNr>ArtNrStem</ArtNr><Component05>

<ArtNr>ArtNrBar</ArtNr><Component06>

<ArtNr>ArtNrAero</ArtNr></Component06>

</Component05></Component04>

</Component03>...</Path2>

Diplomarbeit 43

Page 51: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

Also wurden nach dem ersten Entwurf die Daten erganzt, die wichtig erschienen.

Dies beschrankte sich zunachst darauf, dass zur besseren Extrahierung der Kom-

ponenten und Pfade, die Tags mit einer ID versehen wurden. Danach sah es in der

XML-Datei so aus:

...<Path id="02"><Component id="03">

<ArtNr>ArtNrFork</ArtNr><Component id="04">

<ArtNr>ArtNrStem</ArtNr>...

Doch nach einigem Arbeiten mit dem Code, das die Daten auslesen sollte, stand

fest, dass es zum einen zu viele Ebenen gab, und somit der Code unubersichtlich

und kompliziert wurde, und zum anderen, dass dort noch weitere Daten eingefugt

werden konnen und sollen. Der nachste Entwurf hatte also dementsprechend we-

nige Ebenen und versuchte auch die geforderte Struktur widerzuspiegeln:

<Konfigurator><Component id="01">

<path>0</path><ArtNr>ArtNrFame</ArtNr>

</Component><Component id="02">

<path>1</path><ArtNr>ArtNrHeadset</ArtNr>

</Component><Component id="03">

<path>2</path><ArtNr>ArtNrFork</ArtNr>

</Component><Component id="04">

<path>2</path><ArtNr>ArtNrStem</ArtNr>

</Component>...

Im finalen Entwurf, wurde die XML nicht vereinfacht, aber dennoch so gehalten,

dass die Daten relativ leicht ausgelesen werden konnten. Zusatzlich wurde die

geforderte Struktur noch hervorgehoben und weitere Daten hinzugefugt, die sich

Diplomarbeit 44

Page 52: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

letztendlich als sehr hilfreich, wenn nicht sogar als unverzichtbar herausgestellt

haben. Ein Teil dieser XML sieht nun so aus:

<Konfigurator><Path id="00">

<Component id="01"><Name>Rahmen</Name><Unique>ArtNrFrame</Unique><Additional></Additional>

</Component><Path id="01">

<Component id="02"><Name>Steuersatz</Name><Unique>ArtNrHeadset</Unique><Additional></Additional>

</Component></Path><Path id="02">

<Component id="03"><Name>Gabel</Name><Unique>ArtNrFork</Unique><Additional></Additional>

</Component><Component id="04">

<Name>Vorbau</Name><Unique>ArtNrStem</Unique><Additional>StemLength</Additional>

</Component>...<Component id="06">

<Name>Aeroaufsatz</Name><Unique>ArtNrAero</Unique><Additional></Additional>

</Component></Path>

...</Path>

</Konfigurator>

Wie sich erkennen lasst, umfasst der Pfad mit der ID-Nummer 00 alle Baugruppen.

Die anderen Pfade beinhalten lediglich die entsprechende Gruppe von Komponen-

ten, was - wie schon Eingangs erwahnt - das Entfernen von Komponenten relativ

einfach macht. Die Inhalte der Tags mit dem Namen Unique konnen naturlich frei

Diplomarbeit 45

Page 53: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

gewahlt werden, sollten aber nicht doppelt vorkommen, da dieser Name in den

php-Skripten als Session-Variable zum speichern des Primary Keys aus der Daten-

bank verwendet wird. Der dritte Tag innerhalb eines Component mit dem Namen

Additional ist fur zusatzliche Informationen gedacht, die nicht bei jeder Kompo-

nente vorkommen. Im Fall dieses Konfigurators wird nur bei dem Vorbau und bei

dem Kurbelsatz der Additional-Tag gebraucht, um die Vorbau- bzw. Kurbellange

in Session-Variablen zu speichern.

5.3.2 XML-Handler Klasse

Die Klasse ist nicht nur fur das Extrahieren von Daten aus der XML-Datei zustandig,

sie fuhrt auch ein paar Operationen zum Testen durch. Aufgerufen wird die Klasse

mit einem Parameter, der den gewunschten Dateinamen enthalt. Im Konstruktor

wird dann mittels der Funktion simple load xml() die XML-Datei als mehrdi-

mensionales assoziatives Array geladen, und so sind die darin enthaltenen Daten

relativ leicht zu lesen.

Eine der oben angesprochenen Test-Funktionen ist die test set. Sie uberpruft

ob alle vorherigen Komponenten in dem Pfad (vgl. Abschnitt 3.1 auf Seite 19)

gesetzt sind, so dass die Komponententabelle mit den kompatiblen Bauteilen an-

gezeigt werden kann. Dieser Funktion werden zwei Werte ubergeben: die Num-

mer des Pfades, in der sich die zu testende Komponente befindet und an welcher

Stelle innerhalb des Pfades sie steht. Durch verschiedene foreach-Schleifen und

if-Abfragen wird dann mit dem Programm fortgefahren oder eine entsprechende

Meldung auf dem Bildschirm erscheint, die besagt dass eine andere Komponente

vorher gewahlt werden muss.

Die restlichen Methoden sind zum Auslesen der Daten aus der XML-Datei. Es gibt

jeweils Funktionen zum extrahieren des Komponentenamens, der Komponenten-

ID, des Unique-Wertes (also der Artikelnummer) oder der Pfad-ID. Eine dieser

Funktionen ist die get component from xml, die den Komponentennamen aus der

XML liest. Die zu ubergebenen Werte sind die Nummer des Bauteils und optional

einen Parameter der angibt in welcher Form dieser Name zuruckgegeben werden

soll. Um den gewunschten Namen zu finden wird ebenfalls mit foreach-Schleifen

Diplomarbeit 46

Page 54: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

und if-Abfragen das Array der eingelesenen XML-Datei durchlaufen. Der optio-

nale Parameter gibt an, ob der Name mit oder ohne Umlaute zuruckgegeben wird.

Zum Beispiel konnte Laufrader oder Laufraeder ausgegeben werden. Dieses zu im-

plementieren war notwendig, da die MySQL Datenbank keine deutschen Umlaute

in den Table-Namen erlaubt. So werden alle XML-Funktionen, die Table-Namen

verarbeiten, mit diesem optionalen Parameter aufgerufen, um der Namenskonven-

tion von MySQL gerecht zu werden.

Eine Funktion durchsucht den Pfad (dessen Pfad-ID ubergeben werden muss) und

gibt als Array die in diesem Pfad enthaltenen Komponentennummern zuruck. Die-

se Operation ist notwendig damit bei dem Entfernen einer Komponente auch alle

nachfolgenden Bauteile geloscht werden. Die weiteren Funktionen sind alle ahnlich

aufgebaut, da die Struktur der XML sich naturlich nicht andert. Es gibt verschiede-

ne Funktionen, die die gleichen Daten extrahieren, aber andere Parameter haben.

So lesen die beiden Funktionen get key from xml und get key from name jeweils

den Unique-Key einer Komponente aus, bei der einen wird jedoch die Komponen-

tennummer ubergeben, bei der anderen der Komponentenname (vgl. Abschnitt

6.4.1 auf Seite 70.

Als Beispiel folgt nun der Code einer dieser Funktionen:

public function get_id_from_name ($name) {

foreach ($this->XML->Path as $path)

{

foreach ($path->Component as $component)

{

if ($name == utf8_decode($component->Name))

{

return utf8_decode($component->attributes());

}

}//end-foreach

foreach ($path->Path as $innerpath)

{

foreach ($innerpath->Component as $component)

Diplomarbeit 47

Page 55: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

{

if ($name == utf8_decode($component->Name))

{

return utf8_decode($component->attributes());

}

}

}//end-foreach

}//end-foreach

}//end-function

Die hier dargestellte Funktion sucht die dazugehorige Nummer des angegebenen

Komponentennamens. In den ersten beiden foreach-Schleifen wird die oberste

Ebene der Pfade durchlaufen. In dem Fall der XML-Datei des Rennrad-Konfigurators

ist es nur die Komponente Rahmen, die in der obersten Ebene zu finden ist (siehe

Seite 44 fur den XML-Aufbau). In den nachsten beiden foreach-Schleifen werden

die unteren Ebenen der Pfade durchsucht. Da es in dieser XML nur zwei Ebenen

von Pfaden gibt, ist es meiner Ansicht nach nicht notwendig gewesen, diese rekursiv

zu realisieren. Sollten weitere Pfad-Ebenen erforderlich sein, so ware es bestimmt

ubersichtlicher diese Funktion rekursiv zu programmieren. Wurde der gewunschte

Komponentenname gefunden, so wird die entsprechende Nummer zuruckgegeben.

Die Operation utf8 decode ware hier nicht unbedingt notwendig, aber bei Namen

ist dies unerlasslich, da sonst die Zeichen nicht richtig dargestellt werden.

5.4 Event-Handler Klasse

Die Event-Handler Klasse war ursprunglich nur dazu gedacht die Ereignisse zu ver-

arbeiten. Mit Ereignissen sind z. B. Klicks auf die Navigationsleiste, den Auswahl-

Button oder die Entfernen-Schaltflache gemeint. Allerdings sind im Laufe der Ent-

wicklung mehrere Funktionen hinzugekommen, die auch zur Darstellung auf dem

Bildschirm oder Verarbeitung von Daten dienen.

Diplomarbeit 48

Page 56: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

5.4.1 Die Ereignisse

Es gibt insgesamt 5 Ereignisse, die auftreten konnen, und jedes mal einen Klick

auf einen so genannten Submit-Button bedeuten. Diese Events waren ein Klick

auf die Navigationsleiste, auf den Neustart Link und auf den Auswahlen- oder

Entfernen Knopf. Bei zwei Komponenten gibt es noch ein Ereignis, bei der eine

zusatzliche Auswahl erscheint. Jedes Event wird in der Main.php registriert und

an die EventHandler Klasse weitergeleitet. Dort wird mittels der get-Funktion

dieses Ereignis an die entsprechende Funktion verteilt und ausgefuhrt. Als Beispiel

folgt ein Teil des Programmcodes. Zuerst wird ein Event in der Main.php erfasst:

if (isset($_POST[’navigation’]))

$ev->navbar;

Dadurch wird die EventHandler Klasse aufgerufen und somit auch die get-

Funktion:

public function __get($event)

{

$method = "handle_".$event."_click";

if (is_callable(array($this, $method)))

{

$this->{$method}();

}

}

So werden alle Events zu den entsprechenden Funktionen weitergeleitet. Jedes

dieser Funktionen ist nach dem Muster handle (der Eventname) click benannt. In

diesen Fall ware es: public function handle navbar click().

Eine Beschreibung wie diese Funktionen im Einzelnen programmiert wurden und

wie sie arbeiten wurde den Rahmen dieses Unterpunktes sprengen. Sie werden im

Abschnitt 6.1 naher erklart.

Diplomarbeit 49

Page 57: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

5.4.2 Weitere Funktionen

Unter den weiteren Funktionen sind all die zusammengefasst, die sich um Daten-

auswertung oder Darstellung auf dem Bildschirm kummern. Eine sehr wichtige

Funktion ist navibar, die fur die Erstellung der Navigationsleiste zustandig ist.

Hier werden zwei Werte ubergeben: einmal bei welcher Position die Leiste starten

soll, und einmal die Anzahl nach der die rekursive Funktion abgebrochen wer-

den soll. Innerhalb der Funktion wird abgefragt, ob es sich um ein Rennrad, oder

um ein Triathlonrad handelt, das konfiguriert werden soll, damit bei Ersterem die

Komponente Aeroaufsatz nicht angezeigt wird. Des Weiteren wird uberpruft ob

die entsprechende Komponente schon ausgewahlt wurde. Falls dies der Fall ist,

wird das Feld fur dieses Bauteil farblich hinterlegt.

Eine Funktion innerhalb der EventHandler Klasse ist fur das Darstellen der Uber-

sichtstabelle zustandig und heißt bezeichnenderweise auch overview table. Sie

wird auch aus der Main.php aufgerufen, und geht alle Komponenten der Reihe

nach durch, um zu uberprufen ob diese ausgewahlt wurden. Ist das der Fall, wird

anhand der Artikelnummer, die auch gleichzeitig der Primary Key ist, der Arti-

kelname und Preis aus der Datenbank gelesen und in der Tabelle angezeigt. Es

sind noch weitere Uberprufungen notwendig, wie etwa der Test ob es sich um ein

Renn- oder Triathonrad handelt und dem entsprechend die Komponente Aeroauf-

satz gehandhabt wird, oder ob eine Komponente durch die Auswahl eines anderen

Bauteils schon vorhanden ist.

overview price ist eine ahnliche Funktion, die allerdings nur fur den Gesamt-

preis und -gewicht zustandig ist. Da bei der Speicherung des Sessionwertes keine 0

(Null) ubergeben werden kann, muss in dieser Funktion dieses berucksichtigt und

uberpruft werden. So wird bei einem nicht gesetzten Sessionwert explizit 0.00e

bzw. 0 g angegeben.

Eine weitere Aufgabe, die die Klasse EventHandler ubernimmt, ist nachzuprufen

ob alle Komponenten ausgewahlt wurden, damit ein weiterfuhrender Verweis zu

dem Showroom (vgl. Seite 26 bzw. Seite 42) erscheint. Auch diese Funktion hat

einen entsprechenden Namen, der verdeutlicht wozu sie gebraucht wird: check if all

set(). Hierzu werden alle vorhandenen Komponenten mit dem Befehl $this->

Diplomarbeit 50

Page 58: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

xml->get ids in path(’00’) in ein Array geladen, um dann alle Elemente mit

einer foreach-Schleife durchzugehen. Sobald eine Komponente nicht gewahlt wur-

de, wird die Schleife abgebrochen und ein false zuruckgegeben. Wenn die Schleife

aber komplett durchlaufen wird, so erscheint auf dem Bildschirm der weiterfuhren-

de Link, da ein true zuruckgegeben wurde.

Die letzte Funktion, die keine Ereignisse verarbeitet, heißt save item. Es wer-

den hier die Artikelnummern der ausgewahlten Komponenten gespeichert. Da

es moglich ist, bis zu drei Fahrrader zu konfigurieren, und alle spater in dem

Showroom dargestellt werden sollen, werden alle Artikelnummern in ein zwei-

dimensionales Array gespeichert, damit diese Informationen auch spater noch

verfugbar sind. Wie dies geschieht soll hier verdeutlicht werden:

public function save_item() {

$num = ($_SESSION[’number’]-1);

$ids = $this->xml->get_ids_in_path(’00’);

foreach ($ids as $single_id)

{

$all[$num][$single_id] =

$_SESSION[$this->xml->get_key_from_xml($single_id)];

}

if ($num > 0)

{

$all = $all + $_SESSION[’all’];

}

$this->session->register_session(all, $all);

...

}

Die Sessionvariable number beinhaltet die Nummer des aktuell konfigurierten Ra-

des. Da keine 0 (Null) gespeichert werden kann, fangt number bei eins an. Die Varia-

ble $num sollte allerdings wegen dem Array bei 0 (Null) anfangen. In der nachsten

Zeile werden wieder alle vorhanden Komponenten-IDs in ein (ein-dimensionales)

Diplomarbeit 51

Page 59: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 5. DIE PROGAMM-DATEIEN

Array gespeichert. Mit der foreach-Schleife werden nun alle Bauteile nacheinan-

der durchgegangen und mittels der Komponenten-ID die Artikelnummer aus den

jeweiligen Sessionvariablen im zwei-dimensionalen Array gespeichert. Die nachste

Abfrage ob $num großer Null sei, ist notwendig, da sonst Fehlermeldungen vom

php-Parser auftreten, weil dort zwei Arrays zusammengefugt werden. Schließlich

wird das Array in einer Sessionvariable gespeichert, damit die Informationen er-

halten bleiben.

In der Funktion werden auch Gesamtpreis und Gesamtgewicht in ein separates

zwei-dimensionales Array gespeichert, da auch diese Angaben fur alle Fahrrader

im Showroom benotigt werden.

Diplomarbeit 52

Page 60: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Kapitel 6

Das Programm aus Sicht des

Entwicklers

In diesem Kapitel soll naher und detaillierter auf den Programmcode eingegan-

gen werden. Es werden die Zusammenhange zwischen den Klassen und einzelnen

Funktionen erlautert, und teilweise wie der Code genau funktioniert.

6.1 Events

In diesem Unterkapitel geht es um die Ereignisse, die bei dem Konfigurator auftre-

ten konnen. Insgesamt sind es funf Events die den gesamten Konfigurator steuern.

Ihre groben Funktionen wurden schon in Abschnitt 5.4.1 angesprochen. Dort wur-

de auch gezeigt, wie die Ereignisse in der EventHandler Klasse aufgerufen werden.

Hier soll noch einmal in detaillierter Form darauf eingegangen werden, was genau

in den einzelnen Funktionen passiert, da die Ereignisse ein unverzichtbarer Be-

standteil des Konfigurators sind.

Diplomarbeit 53

Page 61: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

6.1.1 Navigation

Nachdem der Nutzer auf die Navigationsleiste klickt, wird in der EventHandler

Klasse die handle navbar click-Funktion aufgerufen (vgl. Seite 49). Innerhalb

dieser Funktion wird dann die entsprechende Komponentenklasse aufgerufen. Die

Komponentenklassen wurden in der Main.php mit den Variablen $c01, $c02, . . .

fur jede Komponente initialisiert.

function handle_navbar_click()

{

if(empty($_SESSION[’nav’]))

$num = ’01’;

else

$num = $this->xml->get_id_from_name ($_SESSION[’nav’]);

eval(’global ${c.$num};’);

${c.$num}->display();

}

Die erste Abfrage uberpruft, ob die Session-Variable, die die aktuelle Komponen-

te speichert, uberhaupt gesetzt ist. Falls es nicht so ist, dann wird die Variable

$num auf 01 gesetzt, damit die Daten fur die erste Komponente dargestellt werden

konnen.

Beinhaltet die Session-Variable nav einen Wert, so wird die zugehorige Komponen-

ten-ID aus der XML-Datei gelesen. Da der gespeicherte Wert in der Session-

Variable stets mit den Komponentennamen in der XML ubereinstimmt, ist dieses

Vorgehen ohne Probleme moglich.

Durch den Befehl eval(’global ${c.$num};’); ist es moglich auf die Methoden

der Komponentenklasse innerhalb der EventHandler Klasse zuzugreifen, da die

Instanz der Komponentenklasse global verfugbar gemacht wird. So ist dann auch

die display()-Funktion problemlos aufrufbar [Tut05].

Das ${c.$num} ist eine so genannte”variable Variable“. Je nach der aus der XML

ausgelesenen Komponenten-ID, wird eine andere Komponentenklasse aufgerufen.

Diplomarbeit 54

Page 62: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

6.1.2 Entfernen

Zuerst wird die handle remove click-Funktion aufgerufen, und danach die ent-

sprechende Komponentenklasse. Dies geschieht nach dem gleichen Mechanismus,

wie bei der handle navbar click-Funktion. Mit dem Befehl ${c.$num}->remove(); wird die entsprechende Funktion in der Komponentenklasse aufgeru-

fen, die je nach Komponente sofort in der Elternklasse die Remove-Routine aufruft,

oder vorher noch bestimmte Session-Variablen entfernt, wie z. B. die Schaltgruppen-

Marke. Durch ${c.$num}->display(); werden dann sofort die kompatiblen Kom-

ponenten wieder angezeigt. Mit dem anschließenden Befehl $this->save item();

werden die aktuellen Daten in ein zwei-dimensionales Array gespeichert (siehe Seite

51).

6.1.3 Auswahl

Auch die handle choice click-Funktion ist ahnlich aufgebaut und wird genau

so wie die anderen Methoden aufgerufen. Es wird erst die entsprechende Kompo-

nentenklasse aus der Navigations-Session-Variable ermittelt und global verfugbar

gemacht. Danach wird die Funktion ${c.$num}->set session() aufgerufen, die

innerhalb der Komponentenklasse die Session-Variable fur die Komponente und

andere Variablen setzt. Um zu verhindern, dass ein mehrmaliges Klicken auf den

Auswahl-Button einen Effekt hat, muss eine if-Abfrage dieses testen. Außerdem

darf es nicht passieren, dass ein anderer Artikel gewahlt werden kann, ohne dass

vorher der Entfernen-Button angeklickt wurde. Durch diese Abfrage wird das rea-

lisiert:

if (empty($_SESSION[$this->xml->get_key_from_xml($num)]) or

$_POST[$this->xml->get_key_from_xml($num)] !=

$_SESSION[$this->xml->get_component_from_xml($num)])

{

${c.$num}->set_session();

}

Diplomarbeit 55

Page 63: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

Es werden hier zwei Dinge uberpruft. Zum einen ob die Session-Variable uberhaupt

gesetzt ist, denn ist das nicht der Fall, so wurde diese Komponente vorher noch

nicht ausgewahlt und es ist somit zulassig die entsprechenden Variablen zu setzen.

Die zweite Uberprufung nach dem or testet, ob der gerade ausgewahlte Arti-

kel nicht identisch mit der schon gespeicherten Komponente ist. Dadurch wird

gewahrleistet, dass alle Klicks auf den Auswahl-Button dieser Komponente igno-

riert werden, solange nicht vorher dieses Bauteil wieder entfernt wird.

6.1.4 Zusatzliche Auswahl

Damit die Komponententabelle nicht zu lang und unubersichtlich wird, war es

notwendig eine zusatzliche Auswahl fur die Langen bestimmter Komponenten zu

implementieren (vgl. Abschnitt 3.2.2 auf Seite 23).

Grundsatzlich unterscheidet sich die handle additional click nicht von der

handle choice click-Funktion. Es wird ebenfalls die gleiche if-Abfrage benutzt

um mehrmaliges Anklicken des Auswahl-Buttons zu verhindern. Der einzige Un-

terschied besteht darin, dass nach dem Befehl ${c.$num}->set session() noch

ein ${c.$num}->additional() folgt, in dessen Funktion dann die zusatzliche Aus-

wahl in der dazugehorigen Komponentenklasse abgehandelt wird.

6.1.5 Reset

Diese Funktion ist dafur zustandig, dass nach dem Klicken des Neustart-Buttons

alle relevanten Session-Variablen geloscht werden. Auch hier lauft der Aufruf der

Methode nach diesem Event nach dem gleichen Muster ab, wie bei den Anderen.

Im Grunde ist der Vorgang des Neustarts ahnlich dem des Loschens des Rahmens :

Alle Komponenten-Session-Variablen werden geloscht. Dennoch werden hier noch

zusatzliche Variablen, wie Gesamtpreis und -gewicht geloscht, wahrend diese Daten

beim Entfernen des Rahmens nur neu berechnet werden.

Der Aufruf aus der Main.php lautet hier im Ubrigen $ev->reset und somit die

Funktion in der EventHandler Klasse handle reset click(), da das Wort reset

schon fur eine andere Funktion reserviert ist.

Diplomarbeit 56

Page 64: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

public function handle_reset__click()

{

eval(’global $c01;’);

$ids = $this->xml->get_ids_in_path(’00’);

foreach ($ids as $single_id)

{

if (1 <= $single_id)

{

$this->session->unregister_session(

$this->xml->get_key_from_xml($single_id));

}

}

$this->session->unregister_session(brand);

$this->session->reset_sessionvalue(weight);

$this->session->reset_sessionvalue(price);

$this->session->unregister_session(nav);

$navigation = $this->xml->get_component_from_xml(1);

$this->session->register_session(nav, $navigation);

$c01->display();

$this->save_item();

}

Zuerst wird die Instanz der Komponentenklasse global verfugbar gemacht, so dass

auf die Funktionen dieser Klasse innerhalb der EventHandler Klasse darauf zu-

gegriffen werden kann. Hier wird nur die Komponentenklasse des Rahmens auf-

gerufen, da nach einem Neustart in jedem Fall der Rahmen als erstes benotigt

wird. Dann werden alle vorhandenen Komponenten-IDs in ein Array geladen, da-

mit sie mit einer foreach-Schleife bequem abgearbeitet werden konnen. In der

darauf folgenden Schleife werden die gesamten Komponenten-Session-Variablen

Diplomarbeit 57

Page 65: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

geloscht, und in den nachsten vier Zeilen die anderen relevanten Variablen, wie

Preis, Gewicht oder Navigation. Danach wird in den beiden folgenden Zeilen die

Navigation auf dem Rahmen gesetzt und mit dem Befehl $c01->display() wird

die Komponententabelle dargestellt. Anschließend wird noch das Ganze im zwei-

dimensionalen Array aktualisiert durch die $this->save item()-Instruktion.

6.2 Komponentenklassen

Jede Komponente hat ihre eigene Klasse, da jedes Bauteil verschiedene Anforde-

rungen mit sich bringt, bzw. verschiedenste Abhangigkeiten haben. Dies konnte am

besten und am ubersichtlichsten gestaltet werden, indem jede Komponente ihre ei-

gene Klasse bekam, in der die Bauteilspezifischen Eigenheiten bearbeitet werden

konnen. Wie schon in Abschnitt 6.1.1 beschrieben, haben die Klassen, wegen der

einfacheren Bearbeitung, eine bestimmte Objektvariable. Die Erzeugung der vier-

zehn Komponenten-Objekte geschieht in der Main.php und sieht folgendermaßen

aus:

for ($i = 1; $i < 15; $i++)

{

$num = sprintf("%02d", $i);

$com_function = "Component".$num;

${c.$num} = new $com_function($db,$sh,$xm);

}

Hier wird eine Schleife durchlaufen, in der z. B. bei der Erzeugung des Objekts fur

Component01 die Variable $c01 zugewiesen wird. Das geschieht bei allen vierzehn

Komponenten. An den Constructor (in der Elternklasse) werden die Referenzen

zu den Objekten des DBHandlers, des SessionHandlers und des XMLHandlers

ubergeben, damit die Funktionen dieser Klasse auch innerhalb der Komponenten-

klassen verfugbar sind.

Diplomarbeit 58

Page 66: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

Aufgrund der vielen verschiedenen Anforderungen jeder Komponente, beinhaltet

jede Klasse zwar Funktionen, die bei jedem Bauteil gleich sind, aber andere Fahr-

radelemente haben zusatzliche Funktion, die fur besondere Aufgaben benotigt wer-

den. Als Beispiel sei die additional info-Funktion genannt, die nur bei ein paar

Komponenten gebraucht wird, und einen kleinen Infotext auf dem Bildschirm an-

zeigt.

Naturlich ist der Inhalt der gemeinsamen Funktion je nach Anforderung der Kom-

ponente verschieden. Da es den Umfang einer Diplomarbeit ubersteigen wurde,

wird aber darauf verzichtet den Code jeder einzelnen Funktion jeder Komponen-

tenklasse eingehend zu beschreiben. Nur auf die generellen Aufgaben mit kleinen

Code-Beispielen so hier eingegangen werden.

6.2.1 Funktion set session

Innerhalb dieser Funktion wird dafur gesorgt, dass die eindeutige Artikelnummer

in den entsprechenden Session-Variablen gespeichert wird. Des Weiteren werden

bei Bedarf weitere Session-Variablen gesetzt, so z. B. wenn der Rahmen schon

mit einer Gabel geliefert wird. Bei jedem Klick auf den Auswahl-Button wird die

eindeutige Artikelnummer als POST-Variable ubergeben. Durch diese Befehlsfolge

wird zuerst abgefragt ob die POST-Variable uberhaupt gesetzt ist, um dann in der

Session-Variable gespeichert zu werden. In diesem Beispiel wird die Artikelnummer

der ersten Komponente, also des Rahmens, gespeichert.

$component01 = isset($_POST[$this->xml->get_component_from_xml(1)])

? $_POST[$this->xml->get_component_from_xml(1)]

: ’’;

$this->session->register_session($this->xml->get_key_from_xml(1),

$component01);

Dieser Teil wird in jeder Komponentenklasse ausgefuhrt. Das Folgende wird nur

angewendet, wenn eine Komponente Auswirkungen auf andere Bauteile hat.

Diplomarbeit 59

Page 67: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

Die nachste Instruktion dient dazu anhand der Artikelnummer den gesamten Da-

tensatz aus der Datenbank zu lesen und lautet $choice = $this->db->

GetComponentArray($ SESSION[$this->xml->get key from xml(1)],

$this->xml->get component from xml(1)). Der Befehl GetComponentArray hat

zwei Argumente. Das Erste ist der Name, den die Session-Variable erhalt, also die

eindeutige Artikelnummer. Das zweite Argument ist der Name der Table, in dem

der Artikel gespeichert ist. Das zuruckgegebene Ergebnis ist ein Array, in dem die

Werte aus der Datenbank nacheinander abgelegt sind.

Danach werden, je nach Komponente und Artikel, die anderen Session-Variablen

gesetzt. Um bei dem Beispiel des Rahmens zu bleiben, wird dann abgefragt ob

andere Komponenten bei diesem Rahmen schon vorhanden sind. Dafur werden die

aus der Datenbank ausgelesenen Informationen verwertet.

if ($choice[8] == 1)

{

$this->session->register_session(

$this->xml->get_key_from_xml(3), ’Vorhanden’);

}

else if ($choice[8] == 0 and

$_SESSION[$this->xml->get_key_from_xml(3)] === ’Vorhanden’)

{

$this->session->reset_sessionvalue(

$this->xml->get_key_from_xml(3));

}

Hier wird in der if-Abfrage uberpruft ob der ausgewahlte Rahmen schon eine Ga-

bel besitzt. Falls das so ist, wird die Session-Variable fur die Gabel mit dem Wert

”Vorhanden“ besetzt.

Die nachste Abfrage gilt dafur wenn ein Rahmen, der eine Gabel besitzt, aus-

gewahlt, dann aber geloscht wird, und danach ein Rahmen ohne Gabel gewahlt

wird. Das”Vorhanden“ wird aus der Session-Variable geloscht wenn der gewahlte

Rahmen keine Gabel besitzt und wenn diese Variable mit”Vorhanden“ belegt ist.

So ahnlich funktioniert es bei jeder Komponente, die Auswirkungen auf andere

Diplomarbeit 60

Page 68: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

Bauteile hat. Dabei muss es nicht nur darum gehen, ob eine andere Komponen-

te vorhanden ist oder nicht, sondern auch welche Schaltgruppenmarke verwendet

wird.

Der nachste Befehl parent::update it($this->xml->get id from name

($ SESSION[’nav’]), 1) wird auch in jeder Komponentenklasse verwendet, denn

er aktualisiert den Gesamtpreis bzw. -gewicht. Die Ausfuhrung wird durch die El-

ternklasse erledigt. Die beiden Argumente, die ubergeben werden, sind zum einen

die Komponenten-ID, und zum anderen das Vorzeichen. D.h. das Vorzeichen be-

stimmt ob der Betrag zum Gesamtergebnis addiert oder davon subtrahiert wird.

6.2.2 Funktion display

Dieses ist wohl die wichtigste Funktion im Programm des Konfigurators. Nicht

nur, weil hier die Komponententabelle mit den Auswahl- und Entfernen-Buttons

erzeugt wird, sondern auch weil in dieser Funktion die nicht kompatiblen Bauteile

ausgefiltert werden. Deshalb mag der Funktionsname etwas in die Irre fuhren, da

hier mehr geleistet wird als nur das Darstellen. Als Beispiel, an dem die Funktionen

erklart werden sollen, sei hier die Komponente 13 (die Sattelstutze) aufgefuhrt, da

dort zwar alle wichtigen Aufgaben vorkommen, aber dennoch diese Funktion nicht

zu kompliziert ist, und zu viel Code enthalt.

Bei jedem Klick auf die Navigationsleiste wird, bevor die Komponententabelle

dargestellt wird, eine Uberprufung gestartet, ob die vorangegangenen Komponen-

ten dieses Pfades schon ausgewahlt wurden. Dieses geschieht durch eine einfache

if-Abfrage und lautet in diesem Beispiel if ($this->xml->test set(4,1)). Die

beiden Argumente in der Funktion zeigen an, dass dies der vierte Pfad, und die Sat-

telstutze darin die erste Komponente ist. Also muss hier nur der Rahmen gewahlt

sein, damit die Komponententabelle fur dieses Bauteil angezeigt wird.

Als nachstes werden die Daten des ausgewahlten Rahmens mittels der schon be-

kannten Funktion GetComponentArray in ein Array geladen. Die Sattelstutze ist

von den Vorgaben des Rahmens abhangig (vgl. Abschnitt 2.2) und deshalb ist es

notwendig diese Daten zu ermitteln. Der Rest der display-Funktion besteht aus

Diplomarbeit 61

Page 69: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

einer if-else-Abfrage, in der gepruft wird, ob der vorher ausgewahlte Rahmen

nicht schon eine Sattelstutze besitzt, in dem der Ausdruck if ($FrameRow[10] >

90) verwendet wird. In der Datenbank ist an dieser Stelle normalerweise der Durch-

messer vermerkt. Ist dieser Wert aber uber 90, so interpretiert das Programm es

aber als eine schon vorhandene Sattelstutze. Ahnliche Abfragen gibt es auch fur

den Aeroaufsatz, die Gabel oder den Steuersatz. Ist diese if-Abfrage wahr, so wird

der Text”Sattelstutze schon vorhanden“ ausgegeben.

Der restliche Code befindet sich im else-Teil der Abfrage. Der einfacheren Be-

schreibung halber ist er hier abgebildet:

$dbquery = "SELECT * FROM ".$this->xml->get_component_from_xml(13,1)

. "WHERE durchmesser between ".($FrameRow[10]-0.01)

. " and " . ($FrameRow[10] + 0.01);

$SeatpostResultSet = $this->db->query_db($dbquery);

echo "<div id=content>";

while ($SeatpostRow = mysql_fetch_row($SeatpostResultSet))

{

$artnr = $_SESSION[$key13];

parent::display_head($SeatpostRow);

echo "<tr class=main>

<td colspan=3>Durchmesser: ".$SeatpostRow[7]."mm</td>

<td colspan=2>Lange: ".$SeatpostRow[6]."mm</td>

</tr>";

parent::display_footer($SeatpostRow, $artnr);

}

echo "</div>";

Der $dbquery-String ist die Anfrage an die Datenbank, nur diejenigen Datensatze

herauszusuchen, die gleich dem Durchmesser der Sattelstutze des Rahmens ist.

Der Ausdruck between ".($FrameRow[10]-0.01). " and ".($FrameRow[10] +

Diplomarbeit 62

Page 70: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

0.01)" ist notwendig, da MySQL Probleme mit der Genauigkeit von Nachkommas-

tellen hat. In der nachsten Zeile wird diese Anfrage abgeschickt, und das Ergebnis

wird in $SeatpostResultSet gespeichert.

Nun beginnt die eigentliche Erstellung der Komponententabelle. Solange noch Da-

tensatze vorhanden sind, wird die while-Schleife ausgefuhrt. Der obere Teil der

Tabelle eines Artikels wird in der Elternklasse durchgefuhrt, da immer Preis, Na-

me, Artikelnummer usw. dort dargestellt werden. In der Funktion display footer

wird der untere Teil der Tabelle angezeigt, der das Gewicht, den Auswahl-Button

und ggf. den Entfernen-Button beinhaltet.

Dazwischen konnen weitere, komponentenspezifische Informationen, eingefugt wer-

den, so wie es in dem Beispiel zu sehen ist.

6.2.3 Weitere Funktionen

Bei den weiteren Funktionen handelt es sich, bis auf remove, um Funktionen

die nicht in jeder Komponentenklasse vorkommen. Da ware additional und die

additional info-Funktion, die eine Informationsbox darstellt.

Bei remove handelt es sich, wie der Name vermuten lasst, um eine Funktion,

die die Aufgabe des Entfernens von Komponenten hat. Bei vielen Komponen-

tenklassen wird einfach der Befehl parent::remove components($this->xml->

get path id from name($ SESSION[’nav’]), $this->xml->get id from name

($ SESSION[’nav’])) ausgefuhrt. Doch bei Bauteilen, die mit der Schaltgrup-

penmarke zusammenhangen, mussen in dieser Funktion noch zusatzlich einige Ab-

fragen vorhanden sein, bei denen getestet wird, ob die Session-Variable der Marke

geloscht werden kann. Das sieht dann, wie z. B. bei den Laufradern, so aus:

$var = $this->db->GetComponentArray(

$_SESSION[$this->xml->get_key_from_xml(9)],

$this->xml->get_component_from_xml(9,1));

if ( (empty($_SESSION[$this->xml->get_key_from_xml(9)]) or

$var[17] == 2) and

Diplomarbeit 63

Page 71: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

empty($_SESSION[$this->xml->get_key_from_xml(10)]))

{

$this->session->reset_sessionvalue(brand);

}

Die Funktion additional ist ahnlich der display. Nur werden hier nicht vorher

die nicht kompatiblen Artikel herausgefiltert und dann angezeigt, sondern die ver-

schiedenen Langen der ausgewahlten Komponente aus der Datenbank ausgelesen

und dann als eigene Komponententabelle dargestellt. Diese Funktion wird aber

nur bei dem Vorbau und bei den Kurbelsatzen gebraucht.

Zum Darstellen wird einfach der Datensatz des ausgewahlten Artikels aus der Da-

tenbank extrahiert und die verschiedenen Langen nacheinander mittels einer for-

Schleife angezeigt. Die Funktionen der Elternklasse display head und display

footer kommen auch zum Einsatz, damit erstens diese zusatzliche Tabelle sich

nicht vom Aussehen her viel von der Komponententabelle unterscheidet, und zwei-

tens wird der Code wieder verwendet.

Abschließend ist in diesem Abschnitt noch die Funktion additional info zu nen-

nen, die gegebenenfalls aus der display aufgerufen wird, denn nicht jede Kompo-

nente bedarf einer zusatzlichen Information oder Erklarung. Das Ganze ist auch

dynamisch gestaltet, so dass machen Information nicht mehr erscheinen wenn z. B.

die Schaltgruppenmarke schon gewahlt wurde.

6.3 Elternklasse

Alle verwendeten Komponentenklassen sind von der Elternklasse abgleitet. Der

Name der php ist bezeichnenderweise ComponentParent. Hier sind alle Metho-

den zusammengefasst, die von allen Komponenten benutzt werden. Hier werden

auch uber den Konstruktor die Funktionen der Klassen, die XML-, Datenbank-

oder Sessionangelegenheiten erledigen, verfugbar gemacht. Die Elternklasse hat

drei Aufgaben: Das Entfernen von Komponenten, das Darstellen der Komponen-

tentabelle und die Berechnung von Gesamtpreis und -gewicht.

Diplomarbeit 64

Page 72: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

Im Folgenden wird auf die Methoden detailliert eingegangen und erklart wie sie

aufgebaut sind und funktionieren.

6.3.1 Komponentendarstellung

Dieser Teil des Programms ist sehr wichtig und auch etwas kompliziert, da hier

nicht nur die Komponententabelle erstellt wird, sondern auch noch die Klicks auf

den Auswahl- bzw. gegebenenfalls auch den Entfernen-Button gehandhabt werden

mussen.

Die Darstellung ist in zwei Teile gegliedert. Dies wurde so realisiert damit noch

komponentenspezifische Informationen in der Tabelle aufgenommen werden konnen,

wie z. B. die Breite bei den Reifen. Der obere Teil enthalt immer die gleichen Daten,

wie Preis oder Artikelname. Der unter Abschnitt beinhaltet nur die Information

uber das Gewicht und die beiden wichtigen Schaltflachen.

display head

Hier wird, wie der Name schon aussagt, der obere Teil der Komponententabelle

erzeugt. Der Methode wird nur ein Parameter ubergeben, das hier $field genannt

ist. $field ist ein Array, das die aus der Datenbank ausgelesenen Daten fur den

gerade darzustellenden Artikel enthalt. Da die Informationen hier angezeigt werden

sollen, die in der Datenbank fur jede Komponente an der gleichen Stelle gespeichert

sind, stehen diese Daten auch im ubergebenen Array immer am selben Ort. Daher

beinhaltet z. B. $field[0] immer die Artikelnummer, oder $field[4] immer den

Preis usw. (vgl. Abschnitt 4.1.1). Somit ist es sehr leicht die obere Sektion der

Tabelle zu erzeugen, da hier hauptsachlich nur HTML-Code gebraucht wird, in

dem die einzelnen Elemente des Array eingebettet werden.

display footer

In dieser Methode werden, neben dem Gewicht, die unverzichtbaren Schaltflachen

fur die Auswahl bzw. das Entfernen einer Komponente angezeigt, und so erstellt,

Diplomarbeit 65

Page 73: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

Abbildung 6.1: Aufteilung zwischen Footer und Head

dass der Event des Anklickens registriert werden kann. Dieser Funktion konnen drei

Parameter ubergeben werden, wobei zwei davon optional sind. Das oben schon be-

schriebene Array $field muss jedes Mal ubergeben werden. Optional sind die In-

formationen uber die Artikelnummer eines eventuell schon ausgewahlten Bauteils,

und der Parameter, der aussagt, ob es sich nun um eine normale Komponententa-

belle, oder um eine zusatzliche Auswahl handeln soll. Wird Letzteres weggelassen,

so wird automatisch eine normale Komponententabelle erstellt, da dies der vorge-

gebene Wert ist.

Der normale Ablauf, ohne eine nachtragliche zusatzliche Auswahl, wird folgen-

dermaßen durchgefuhrt: In der jeweilige Komponentenklasse wird diese Funktion

in der Elternklasse aufgerufen. Das aus der Datenbank gelesene Array und die

Artikelnummer eines evtl. schon ausgewahlten Bauteils werden ubergeben und

dann der untere Teil der Tabelle dargestellt. Dieser Teil beginnt mit dem Gewicht.

Danach wird eine Abfrage ausgefuhrt, die testen soll, ob die Artikelnummer des

gerade darzustellenden Artikels, mit der gepeicherten Nummer in der entsprechen-

den Session-Variablen ubereinstimmt. Ist das der Fall, so wird die Schaltflache zum

Entfernen bei diesem Bauteil angezeigt. Dann wird der Auswahl-Button angezeigt,

Diplomarbeit 66

Page 74: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

der naturlich wieder bei jedem Artikel dargestellt wird.

Die beiden Schaltflachen zum Auswahlen oder Entfernen sind HTML-Formulare,

und haben jeweils versteckte Felder, damit z. B. der eingetretene Event in der

Main.php registriert werden kann.

echo "<form action=’Main.php’ method=’post’>";

echo "<input name=’entfernen’ type=’submit’

class=’submitLink’ value=’Entfernen’>";

echo "<input name=’remove’ type=’hidden’

value=’".$field[0]."’>";

echo "</form>";

Dies hier ist das Formular fur das Entfernen, was nur bei dem Bauteil erscheint,

das vorher ausgewahlt wurde. Der Name lautet remove, so dass das Ereignis in

der Main.php als”remove“ erkannt wird. Der Wert der Artikelnummer, die in

$field[0] gespeichert ist, wird bei der jetzigen Version des Prototypen nicht

mehr verwendet, und wurde wahrend der Entwicklungszeit zu Uberprufungszwe-

cken gebraucht.

echo "<form action=’Main.php’ method=’post’>";

echo "<input name=’".$name."’ type=’submit’ class=’submitLink’

value=’Auswahlen’>";

echo "<input type=’hidden’ name=’".$name."’

value=’".$_SESSION[’nav’]."’>";

echo "<input type=’hidden’ name=’".$_SESSION[’nav’]."’

value=’".$field[0]."’>";

echo "</form>";

Diplomarbeit 67

Page 75: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

Das Formular fur den Auswahl-Button hat zwei versteckte Felder. Außerdem ist

der Name des sichtbaren und eines versteckten Feldes variabel. Der Grund dafur

ist, dass unterscheiden werden muss, ob es nun die Auswahl-Schaltflache bei einer

normalen Komponententabelle, oder ein Button bei einer zusatzlichen Auswahl

handelt. Das zweite versteckte Feld ist notwendig, damit spater auch der aus-

gewahlte Artikel in der Session-Variable abgespeichert werden kann.

Die Variable $name kann die Werte additional oder auswahl annehmen. Also

kann je nach Namen eine andere POST-Variable abgefragt, und somit ein ande-

res Ereignis registriert werden. Dazu muss in der Komponentenklassenmethode

display der dritte Parameter explizit ubergeben werden, so dass, nachdem der

Artikel ausgewahlt wurde, die Funktion zur Darstellung der zusatzlichen Auswahl

aufgerufen werden kann.

6.3.2 Komponenten entfernen

In dieser Funktion der Elternklasse wird das Entfernen der Komponenten in einem

Pfad gehandhabt. Die Methode ist in dieser Klasse, da das Loschen bei jedem

Bauteil der gleiche Vorgang ist.

Hier werden zwei Parameter beim Aufruf ubergeben. Zum einen die ID des Pfades,

die $comp id genannt wird, und zum anderen $path id, die Position an der sich

die zu loschende Komponente innerhalb des Pfades befindet. Dies ist notwendig,

damit die nachfolgenden Bauteile auch geloscht werden um Inkompatibilitaten der

Elemente zu vermeiden.

Zunachst wird der Befehl $ids = $this->xml->get ids in path($path id) aus-

gefuhrt, damit aus der XML alle Komponenten eines Pfades in ein Array gespei-

chert werden. Der eigentliche Loschvorgang ist eine einfache foreach-Schleife.

foreach ($ids as $single_id)

{

if ($comp_id <= $single_id)

{

$this->update_it($single_id, -1);

Diplomarbeit 68

Page 76: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

$this->session->unregister_session

($this->xml->get_key_from_xml($single_id));

}

}

In der Schleife werden erst einmal alle in dem Array befindlichen Komponenten

durchgegangen. Falls nun die Nummer des Indexes (also $single id hoher oder

gleich der angegebenen Position innerhalb des Arrays ist, so werden die Kom-

ponenten entfernt. Das bedeutet, dass alle nachfolgenden Bauteile innerhalb des

Pfades ebenfalls geloscht werden. Das eigentliche Entfernen geschieht durch die An-

weisung $this->session->unregister session, in dem als Argument der Name

der Session-Variable steht. Dieser wird ebenfalls mittels der $single id) aus der

XML gelesen.

Die Session-Variable mit dem Namen brand, die keine Komponente ist, muss unter

bestimmten Umstanden ebenfalls geloscht werden. Das geschieht wenn keine der

Bauteile Laufrader, Kurbelsatz oder Schaltgruppe ausgewahlt sind bzw. wenn eine

geloscht, und keine der anderen Komponenten gewahlt wurde. Das Ganze wird

durch eine einfache if-Abfrage realisiert, in der das Vorhandensein der Bauteile

gepruft und mittels UND verknupft werden.

6.3.3 Preis- und Gewichtsaktualisierung

Der Zweck dieser Methode ist es, den angezeigten Gesamtpreis und das Gesamtge-

wicht aktuell zu halten. Dazu wird beim Aufrufen der Funktion als Parameter die

ID der Komponente, dessen Gewicht und Preis addiert bzw. subtrahiert werden

soll, ubergeben. Als zweiter Wert wird das Vorzeichen (also eine 1 oder eine -1)

angegeben.

Es wird als erstes innerhalb der Funktion die Daten der Komponente aus der

Datenbank gelesen und in ein Array gespeichert. Dies geschieht wieder mit der

Methode GetComponentArray. An Position 1 im Array befindet sich immer der

Wert des Gewichts und an Position 4 immer der Preis. Diese Werte werden dann

zu der entsprechenden Session-Variable hinzuaddiert bzw. abgezogen.

Diplomarbeit 69

Page 77: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

$weight = $_SESSION[’weight’] + ($info[1] * $sign);

$price = $_SESSION[’price’] + ($info[4] * $sign);

Falls Gewicht oder Preis gleich 0 (null) ist, wird die Session-Variable zuruckgesetzt,

da bei einer Speicherung der Wert 0 (null) nicht zulassig ist, und ignoriert wird.

Das wird durch eine if-Abfrage fur die jeweiligen Variablen realisiert. Zu letzt

werden dann $price und $weight in den Session-Variablen gespeichert, wobei

$price vorher auf zwei Nachkommastellen gerundet wird.

6.4 Weitere Klassen

In diesem Abschnitt soll es um die Beschreibung der restlichen Klassen gehen.

Zum Teil, weil sie schon recht ausfuhrlich behandelt wurden (wie die XML Handler

Klasse), oder aus dem Grund, weil die Funktionen nicht so umfangreich sind, dass

ein ganzer Abschnitt dafur gerechtfertigt ware.

6.4.1 XML Handler Klasse

Diese Klasse wurde in Abschnitt 5.3.2 schon recht ausfuhrlich beschrieben. Auch

der Aufbau wurde in der Sektion 5.3.1 schon behandelt. Hier sollen einmal alle

Methoden der Klasse aufgefuhrt werden, damit ein Uberblick geschaffen wird, was

diese Klasse alles auslesen und bearbeiten kann.

construct Der Konstruktor hat einen String als Parameter, der den Dateinamen

angibt. So kann beim instanzieren schon die Datei geladen werden, ohne noch

einen zusatzlichen Befehl auszufuhren.

test set Diese Methode wurde schon in Abschnitt 5.3.2 ausfuhrlich erklart. Sie

dient zum Testen, ob eine an der Navigationsleiste angeklickte Komponente

schon an der Reihe ist.

get component from xml Hier werden zwei Parameter ubergeben: Der Name der

Komponente (ublicherweise in der Session-Variable nav enthalten) und ein

Diplomarbeit 70

Page 78: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

Operator, der bestimmt, ob Umlaute normal oder MySQL-konform zuruck-

gegeben werden.

umlaute In dieser Funktion werden die Umlaute ersetzt, so dass beispielsweise aus

einem a ein ae wird.

get key from xml Der Name, den eine Session-Variable fur eine bestimmte Kom-

ponente haben soll, wird durch diese Methode ausgelesen. Der Ubergabepa-

rameter ist die Nummer der Komponente.

get key from name Hier wird ebenfalls der Name der Session-Variable fur eine

Komponente extrahiert. Allerdings ist der Parameter der Komponentenna-

me.

get id from name Die Id-Nummer einer Komponente wird hier ausgelesen, und

es wird der Name der Komponente ubergeben.

get path id from name Eine ahnliche Funktion wie get id from name, nur dass

hier die ID-Nummer des Pfades zuruckgegeben wird.

get additional from xml Hier wird der Name der Session-Variable ausgelesen,

die zusatzliche Attribute speichert. Im Fall des Konfigurators sind das die

Lange vom Vorbau bzw. die Lange der Kurbel am Kurbelsatz. Hier muss als

Parameter die Komponenten ID angegeben werden. . .

get additional from name . . . wahrend hier der Name der Komponente uberge-

ben werden sollte. Ansonsten sind die Funktionen ahnlich.

get ids in path In dieser Methode werden alle Komponenten-IDs in einem Array

zuruckgegeben, die in einem bestimmten Pfad sind. Hierzu muss als Uber-

gabewert naturlich die Pfad-ID angegeben werden.

Diese Methoden extrahieren also alle benotigten Daten aus der XML-Datei, die

zur Funktion des Konfigurators verwendet werden. Es gibt noch weitere Kombina-

tionen um Daten aus der XML auszulesen, wie beispielsweise anhand des Session-

Variablen-Namens die Komponenten-ID zu erfassen. Allerdings macht das nicht

viel Sinn, und findet auch keine Verwendung im Konfigurator.

Diplomarbeit 71

Page 79: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

6.4.2 Session Handler Klasse

In dieser Klasse werden alle Funktionen, die die Session-Variablen und dessen

Inhalte manipulieren, zusammengefasst. Die wichtigsten und am haufigsten ge-

brauchten Methoden sind register session, unregister session und reset

sessionvalue.

Bei register session wird, wie der Name schon vermuten lasst, eine Session-

Variable registriert. Zwei Parameter werden ubergeben. Einmal der Name, den

diese Variable bekommen soll, und einmal der Wert dieser Variable. Es wird aber

noch uberpruft, ob der Wert eine 0 (null) oder ob der false ist. Falls dem nicht so

ist, wird die Variable registriert. Daher muss bei Werten, die eine 0 (null) besitzen

durfen, wie z. B. der Gesamtpreis, eine andere Losung gefunden werden.

Die Methode unregister session bewirkt das Gegenteil. Hier muss allerdings

nur der Name der Session-Variablen beim Aufruf angegeben werden. Es wird noch

getestet, ob die angegebene Variable uberhaupt einen Wert besitzt.

Der Unterschied zu unregister session liegt bei reset sessionvalue darin,

dass die Variable selbst nicht geloscht wird, sondern nur der Inhalt auf NULL. Die

ist manchmal hilfreich, wenn z. B. nach einem Neustart ein paar Session-Variablen

sofort abgefragt werden, wie es bei Gesamtpreis und -gewicht der Fall ist.

In der Klasse befinden sich noch andere Funktionen wie get session id oder

is registered, die nur wahrend der Entwicklungszeit benutzt wurden, um die

Funktionalitat zu testen oder um Fehler zu finden.

6.4.3 Datenbank Handler Klasse

Alles was, sich um die Benutzung der Datenbank und dessen Funktionen dreht,

befindet sich in dieser Klasse. Auch hier gibt es Methoden, die standig benutzt

werden, und es gibt Methoden, die nur wahrend der Entwicklung des Konfigura-

tors gebraucht wurden.

Eine der haufig verwendeten Funktionen ist query db. Es gibt naturlich die vor-

gefertigte Funktion mysql query, doch bei der Benutzung von query db wird im

Fehlerfall der Errorcode und der Fehler ausgegeben.

Die Methode GetComponentArray ist ebenfalls eine sehr oft benutzte Funktion.

Diplomarbeit 72

Page 80: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

Mit ihr ist es moglich den kompletten Datensatz eines Artikels auszulesen. Da-

zu mussen zwei Parameter ubergeben werden. Der Eine ist der Name des Tables,

und der Andere ist die Artikelnummer, was auch gleichzeitig den Primary Key

darstellt. Zuruckgegeben wird ein Array, das alle in der Datenbank gespeicherten

Informationen uber diesen Artikel enthalt.

Erwahnenswert ist noch der Konstruktor. Ihm wir bei der Instanzierung ein String

ubergeben, der dann bestimmt, ob eine Verbindung zum Server der lokalen Ent-

wicklungsumgebung, oder zum Webserver hergestellt werden soll. So muss, wenn

der Konfigurator auf den Webserver hochgeladen wird, nur der String geandert

werden. Eine relativ komfortable Losung, wenn man in Betracht zieht, dass die

MySQL und PHP Versionen von den beiden Umgebungen nicht hundertprozentig

kompatibel sind.

Die restlichen Methoden wie create db, select db, delete db, oder auch

select table, finden nur Verwendung im recht rudimentaren Backend, das sich

darauf beschrankt, dass man die gesamte Datenbank loschen, dessen Inhalt an-

schauen, oder mit den Testdaten befullen kann.

6.5 Interaktionen

Nachdem nun die gesamten Klassen detailliert durchgesprochen und erklart wur-

den, sind nun die Interaktionen zwischen den Klassen das Thema dieses Abschnitts.

Es werden nicht alle moglichen Zusammenspiele angesprochen, da das den Rah-

men sprengen wurde.

Der Konfigurator wird, wie schon mehrmals erwahnt, durch Ereignisse gesteuert,

und in Gang gesetzt. Es werden hier exemplarisch drei Events besprochen und

erklart. Das geschieht jeweils anhand eines Diagramms, dem ein paar erklarende

Satze folgen, zu Stellen, an denen die Darstellung nicht ganz klar sein konnte.

6.5.1 Event: Navigation

Nach dem Klick auf die Navigationsleiste wird die Main.php erneut aufgerufen,

und die POST-Variable navigation wird gesetzt. Das wird dann registriert und

Diplomarbeit 73

Page 81: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

die Funktion handle navbar click in der EventHandler-Klasse aufgerufen. Der

Inhalt der POST-Variable navigation wird in der Session-Variablen nav gespei-

chert, und mit dessen Hilfe und der XML-Funktion get id from name die Metho-

de display der entsprechenden Komponentenklasse aufgerufen. In dieser Funktion

wird dann durch die Methode test set der XMLHandler-Klasse gepruft, ob diese

Komponente uberhaupt schon auswahlbar ist. Falls das nicht der Fall ist, kommt

eine Fehlermeldung, die aussagt, welche Komponente zuerst gewahlt werden soll.

Ist das Bauteil aber an der Reihe, so werden in der display-Funktion die entspre-

chenden Informationen, basierend auf schon vorher ausgewahlten Komponenten,

aus der Datenbank ausgelesen. Mit den Methoden der Elternklasse display head

und display footer werden dann nur kompatible Bauteile dargestellt.

6.5.2 Event: Auswahl

Nachdem alle kompatiblen Bauteile auf dem Bildschirm angezeigt werden, klickt

der Nutzer auf die Schaltflache”Auswahlen“. Die Main.php wird auch hier wieder

neu geladen, und die POST-Variable auswahl ist gesetzt. Dadurch wird die Metho-

de handle choice click in der EventHandler Klasse aufgerufen. Hier wird dann

durch eine if-Abfrage getestet, ob der Artikel ausgewahlt werden darf. Ist das

nicht der Fall, so passiert nichts weiter. Ist es erlaubt das Bauteil zu wahlen, so

wird wieder die entsprechende Komponentenklasse aufgerufen, dessen Name im-

mer noch in der Session-Variable nav gespeichert ist. In der Funktion set session

wird die Session-Variable fur die eigene Komponente gesetzt und, falls notwendig,

auch andere Variablen. Die nachste aufgerufene Funktion ist dann wieder display,

in der aufgrund der aktuellen Session-Variablen der Inhalt dargestellt wird. Ein

Beispiel hier fur ist die Komponente Laufrader. Zu Anfang werden die beiden

Schaltgruppenmarken, Shimano und Campagnolo, angezeigt. Wird nun ein Lauf-

radsatz gewahlt, der mit Shimano kompatibel ist, so sind nach dem Klick auf die

Auswahl-Schaltflache nur noch Shimano-kompatible Laufrader zu sehen.

Diplomarbeit 74

Page 82: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

Abbildung 6.2: Ablauf beim Event Navigation

Diplomarbeit 75

Page 83: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

Abbildung 6.3: Ablauf beim Event Auswahl

Diplomarbeit 76

Page 84: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

6.5.3 Event: Auswahl mit Zusatz

Diese Interaktion zwischen den Klassen ist etwas komplizierter als der normale

Auswahl-Ablauf. Allerdings gilt dies nur fur die Komponenten Vorbau und Kur-

belsatz. Wird also in der Navigationsleiste einer der beiden Bauteile angeklickt, so

wird zwar auch die Komponententabelle dargestellt, allerdings mit einem Unter-

schied. Der Name des Formulars, das die Auswahl-Schaltflache beinhaltet, heißt

nicht mehr auswahl, sondern additional. So kann beim Anklicken des Auswahl-

Buttons in der Main.php registriert werden, dass nun die zusatzliche Tabelle mit

den jeweiligen Langen dargestellt werden soll. Der Ablauf vom Anklicken bis zum

Setzen der Variablen ist der gleiche wie bei der Auswahl, was in dem Diagramm die

Buchstaben A und B darstellen sollen. Nur wird nach der Auswahl nicht wieder

die Komponententabelle dargestellt, sondern die zusatzliche Tabelle. In der Event-

Handler Klasse kommt die Methode handle additional click zum Einsatz, die

ebenfalls die entsprechende Komponentenklasse aufruft. Dort wird dann mit Hilfe

der Funktionen display head und display footer die Tabelle mit den Langen

dargestellt. Hier heißen dann die Formulare der Auswahlfelder wieder auswahl, so

dass alles wieder den gewohnten Ablauf annehmen kann.

Diplomarbeit 77

Page 85: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 6. DAS PROGRAMM AUS SICHT DES ENTWICKLERS

Abbildung 6.4: Ablauf beim Event zusatzliche Auswahl

Diplomarbeit 78

Page 86: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Kapitel 7

Zusammenfassung und Ausblick

In den vorherigen Kapiteln wurden ausfuhrlich die Klassen, die PHP Dateien, die

MySQL Datenbank und deren Inhalt, und dessen Zusammenspiel vorgestellt. Au-

ßerdem gab es in einem Kapitel einen Uberblick, wie der Nutzer den Konfigurator

sieht. In einem weiteren Kapitel wurde das Renn- bzw. Triathlonrad besprochen,

so wie die Abhangigkeiten zwischen den Komponenten. Zu Beginn gab es noch die

Uberlegung, ob die Programmiersprache Java oder PHP fur ein solches Projekt

geeigneter waren.

In diesem Kapitel mochte ich noch einmal zusammenfassen, was der Konfigura-

tor leistet, und inwieweit das vorgegebene Ziel erreicht wurde. Im nachsten Ab-

schnitt wird angesprochen was an dem Konfigurator zusatzlich implementiert wer-

den muss, damit daraus ein kommerzielles Produkt werden kann. Schließlich wird

noch ein personliches Fazit gezogen.

7.1 Zusammenfassung

Wie in der Einleitung beschrieben, war es vorgegeben so kostengunstig wie moglich

einen Konfigurator fur Renn- und Triathlonrader zu erstellen. Die Mittel, die zum

Programmieren verwendet wurden, entsprachen diesem Kriterium, da hauptsachlich

Open Source und/oder freie Programme verwendet wurden. Der Rechner, auf dem

Diplomarbeit 79

Page 87: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 7. ZUSAMMENFASSUNG UND AUSBLICK

der Konfigurator entwickelt wurde, war ein handelsublicher Desktop Computer

mit Windows R© XP als Betriebssystem. Darauf wurde dann ein Apache Server in-

stalliert, ebenso wie ein PHP Interpreter, die beide frei im Internet verfugbar sind.

Auch die MySQL Datenbank lasst sich kostenlos herunterladen. Somit entfallen

die Kosten fur Lizenzgebuhren der essentiellen Programme. Auch die Lizenz fur

die PHP Entwicklungsumgebung PHPEdit ist unter Angabe des Namens und einer

E-Mail Adresse kostenfrei erhaltlich.

Probleme gab es allerdings mit dem Webserver, der den Konfigurator unter der

URL http://www.radtraum.de im Internet verfugbar machen sollte. Offen-

sichtlich gab es Kompatibilitatsprobleme zwischen den verschiedenen PHP und

MySQL Versionen. Doch diese konnten jedoch durch kleinere”Workarounds“ be-

hoben werden.

Ein weiteres gefordertes Kriterium war, dass ein Nutzer nur Komponenten wahlen

kann, die sich tatsachlich zusammenbauen lassen. So soll am Ende sichergestellt

sein, dass der Kunde ein funktionsfahiges Wunsch-Rad erstellt. Diese Forderung

war erwartungsgemaß die am schwierigsten umzusetzende. Nicht nur, dass zuerst

Komponentengruppen identifiziert werden mussten (vgl. Seite 10), sondern auch

deren Zusammenspiel und Abhangigkeiten untereinander herausgearbeitet werden

sollten. Das nahm einen nicht unerheblichen Teil des Projektes ein. Danach muss-

ten die erarbeiteten Daten mittels PHP in eine benutzerfreundliche Form gebracht

werden.

Dies war ein Grund, warum gegen eine assistierte Konfiguration, und fur eine (re-

lativ) freie Wahl der Reihenfolge entschieden wurde. Allerdings verkomplizierte

diese, im Nachhinein gefallte Entscheidung, die Erstellung des Konfigurators. Es

mussten alle moglichen”Fehler“ des Nutzers erkannt und abgefangen werden, da-

mit der virtuelle Zusammenbau des Wunschrades in gewunschte Bahnen gelenkt

wird.

Vergleicht man diesen Konfigurator mit anderen im Internet befindlichen Rad-

Konfiguratoren, so muss festgestellt werden, dass der in diesem Projekt Erstell-

te recht fortschrittlich ist, da es auf manchen Seiten z.B. moglich ist, wahllos

Komponenten einzutragen, ohne darauf zu achten, ob diese auch zusammenpassen

[NR05]. Dennoch sollte zusatzlich eine Funktion implementiert werden, die nicht

Diplomarbeit 80

Page 88: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 7. ZUSAMMENFASSUNG UND AUSBLICK

einmal fuhrende Automobilhersteller in ihren Konfiguratoren zur Verfugung stel-

len. Ein so genannter”Showroom“ sollte erstellt werden, so dass es fur den Nutzer

moglich ist, bis zu drei verschiedene Fahrrader zu erstellen, und dann die einzelnen

Zusammenstellungen nebeneinander zu betrachten. Auch dieses wurde erfolgreich

realisiert, nachdem ein paar Probleme uberwunden wurden, z.B. wie diese Daten

die ganze Zeit erhalten bleiben, ohne die Datenbank zu nutzen.

Eine weitere Eigenschaft des Programms, die aber nicht vorgegeben war, ist der

relativ generische Aufbau, mit dem ein Programmierer innerhalb kurzer Zeit einen

neuen Konfigurator fur ein komplett anderes Produkt erstellen kann. Der ar-

beitsintensivere Teil ware naturlich das Identifizieren der Komponenten und der

Abhangigkeiten zwischen diesen. Ebenso musste schon eine entsprechend erstell-

te Datenbank vorhanden sein, bevor sich das Programm umgestalten lasst. Dazu

muss aber im Grunde nur eine vergleichbare XML-Datei erstellt und die dann

bekannten Abhangigkeiten in den Komponentenklassen implementiert werden.

Zusammengefasst bleibt zu sagen, dass das Projekt erfolgreich abgeschlossen wur-

de, so dass der Auftraggeber, die Firma all4triathlon.com, sehr zufrieden mit dem

Ergebnis ist.

7.2 Ausblick

Da dieser Konfigurator zurzeit nur einen Prototypen darstellt, sind selbstverstand-

lich noch Verbesserungen moglich und notwendig, bevor dieser einen kommerziel-

len Einsatz hat. Dennoch ist der Konfigurator voll funktionsfahig. Das heißt, alle

Funktionen, uber die das Programm auch im kommerziellen Einsatz verfugen soll-

te, sind schon vorhanden. Die Verbesserungen beziehen sich in erster Linie auf den

Bereich, der fur den Nutzer relativ unerheblich ist.

Die wohl großte und wichtigste zukunftige Implementierung ist die Erstellung eines

Backends. Das derzeit eingesetzte System ist sehr rudimentar und diente dazu die

Datenbank zu fullen, oder zu loschen. In einem kompletten Backend sollen nicht

nur komfortable Datenbankfunktionen enthalten sein, sondern auch ein System

zum Einpflegen und Warten von neuen Komponenten. Doch diese Erstellung war

Diplomarbeit 81

Page 89: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

KAPITEL 7. ZUSAMMENFASSUNG UND AUSBLICK

nicht die Aufgabe des Projekts, und das vorhandene Backendsystem erfullte alle

Funktionen, die wahrend der Entwicklung des Konfigurators notwendig waren.

Ein weiteres, wahrend der Entwicklung nicht behandeltes Problem, ist die Kom-

patibilitat zwischen den verschiedenen Browsern. Zurzeit ist das Programm auf

Mozilla Firefox und Opera optimiert. Entsprechende Anpassungen fur den Micro-

soft Internet Explorer, Konqueror oder auch Safari mussten folgen. Weitere Ver-

besserungen in der Darstellung sind generell gefragt, aber insbesondere muss die

Anzeige fur kleinere Bildschirme angepasst werden, da wahrend der Entwicklungs-

zeit eine relativ hohe Auflosung benutzt wurde. Schließlich konnte das Programm

so geandert werden, dass Templates benutzt werden, und die Gestaltung somit

unabhangig von der”Rule-Engine“ ist.

7.3 Schlusswort

Um ein Fazit zu ziehen, mochte ich zuerst anmerken, dass das Diplomarbeitspro-

jekt eine Herausforderung war, in dem Sinne, dass ohne auf einer Grundlage aufzu-

bauen, ein funktionierender Prototyp entstanden ist. Manches Problem wahrend

der Entwicklung war nicht so einfach zu losen, doch es hat immer Spaß gemacht, an

diesem Projekt zu arbeiten. Außerdem konnte ich durch die Erstellung des Konfi-

gurators meine Fahigkeiten in PHP, HTML und auch JavaScript weiter vertiefen,

was sich im Berufsleben als nutzlich erweisen wird. Hinzu kommt, dass ich nun Ge-

wissheit habe ein Projekt dieser Große eigenstandig organisieren und realisieren

zu konnen.

Diplomarbeit 82

Page 90: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Anhang A

Tables der Datenbank

In diesem Teil des Anhangs werden alle Tables der Datenbank abgebildet. Der

Spaltenname ist in den Tabellen so wiedergegeben, wie er auch in der Datenbank

abgelegt ist. Deshalb sind auch keine Umlaute zu finden, da die Namenskonvention

von MySQL diese nicht erlaubt. Die Tabellen enthalten jeweils eine Spalte fur den

Spaltennamen, die Eigenschaften dieser, und eine kleine erklarende Bemerkung.

Diplomarbeit 83

Page 91: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

ANHANG A. TABLES DER DATENBANK

TA

BLE

Rahm

en

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

rahm

enhoeh

eT

INY

INT

(2)

UN

SIG

NE

DN

OT

NU

LL

DE

FA

ULT

0w

ichti

ges

Maß

gabel

aufn

ahm

eFLO

AT

NO

TN

ULL

DE

FA

ULT

0M

aße

inm

m,≥

100=

schon

vorh

anden

steu

ersa

tzT

INY

INT

(1)

UN

SIG

NE

DN

OT

NU

LL

DE

FA

ULT

00=

vorh

anden

,1=

nic

ht

vorh

anden

satt

elro

hr

FLO

AT

NO

TN

ULL

DE

FA

ULT

0M

aße

inm

m,≥

100=

schon

vorh

anden

tret

lage

rFLO

AT

NO

TN

ULL

DE

FA

ULT

0M

aße

inm

m

TA

BLE

Ste

uers

atz

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

gabel

schaf

tFLO

AT

NO

TN

ULL

DE

FA

ULT

0ublich

inZol

l,hie

rin

mm

Diplomarbeit 84

Page 92: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

ANHANG A. TABLES DER DATENBANKTA

BLE

Gabel

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

gabel

schaf

tFLO

AT

NO

TN

ULL

DE

FA

ULT

0ublich

inZol

l,hie

rin

mm

laen

geSM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0re

leva

nt

f.R

ahm

enhoh

e

TA

BLE

Vorb

au

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

gabel

aufn

ahm

eFLO

AT

NO

TN

ULL

DE

FA

ULT

0D

urc

hm

esse

rdes

Gab

elsc

haf

ts,in

mm

lenke

raufn

ahm

eFLO

AT

NO

TN

ULL

DE

FA

ULT

0D

urc

hm

esse

rdes

Len

kers

,in

mm

laen

ge1

TIN

YIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0zw

.70

u.14

0m

m

...

...

...

laen

ge9

TIN

YIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0zw

.70

u.14

0m

m

win

kel

TIN

YIN

TN

OT

NU

LL

DE

FA

ULT

0zw

.-1

7◦und

17◦

flip

TIN

YIN

T(1

)N

OT

NU

LL

DE

FA

ULT

00

=nic

ht

dre

hbar

,1

=dre

hbar

Diplomarbeit 85

Page 93: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

ANHANG A. TABLES DER DATENBANK

TA

BLE

Lenker

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

lenke

rdurc

hm

FLO

AT

NO

TN

ULL

DE

FA

ULT

0D

urc

hm

esse

rdes

Len

kers

,in

mm

bre

ite

TIN

YIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0B

reit

e(M

itte

-Mit

te)

lenke

rart

TIN

YIN

T(1

)U

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

00=

Ren

nra

d,1=

Tri

,≥

2=bei

de

aero

aufs

atz

TIN

YIN

T(1

)U

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

00=

N/A

,1=

mog

lich

,≥

2=dab

ei

TA

BLE

Aero

aufs

atz

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

lenke

rkle

mm

FLO

AT

NO

TN

ULL

DE

FA

ULT

0D

urc

hm

esse

rdes

Len

kers

,in

mm

Diplomarbeit 86

Page 94: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

ANHANG A. TABLES DER DATENBANK

TA

BLE

Laufr

aeder

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

durc

hm

esse

rSM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0D

urc

hm

esse

rdes

Lau

frad

sin

mm

reifen

art

TIN

YIN

T(1

)U

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

00=

Sch

lauch

-,≥

1=D

rahtr

eife

n

nab

eT

INY

INT

(1)

UN

SIG

NE

DN

OT

NU

LL

DE

FA

ULT

00=

Shim

ano,≥

1=C

ampa

kom

pat

ibel

TA

BLE

Reifen

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

durc

hm

esse

rSM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0D

urc

hm

esse

rdes

Lau

frad

es,in

mm

bre

ite

TIN

YIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0B

reit

edes

Rei

fens:

19m

m-

25m

m

reifen

art

TIN

YIN

T(1

)U

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

00=

Sch

lauch

-,≥

1=D

rahtr

eife

n

Diplomarbeit 87

Page 95: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

ANHANG A. TABLES DER DATENBANKTA

BLE

Kurb

els

atz

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

kett

enbla

ttT

INY

INT

UN

SIG

NE

DN

OT

NU

LL

DE

FA

ULT

21=

com

pac

t,2=

nor

mal

,3=

3er

Bla

tt

zaeh

ne

vorn

eT

INY

INT

UN

SIG

NE

DN

OT

NU

LL

DE

FA

ULT

0A

nza

hlZah

ne

aufdem

groß

enB

latt

zaeh

ne

mit

teT

INY

INT

UN

SIG

NE

DN

ur

bei

3er

Ket

tenbla

tter

zaeh

ne

hin

ten

TIN

YIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0A

nza

hlZah

ne

aufdem

kle

inen

Bla

tt

laen

ge1

FLO

AT

NO

TN

ULL

DE

FA

ULT

0kurz

este

Lan

geder

Kurb

el

...

...

...

laen

ge7

FLO

AT

NO

TN

ULL

DE

FA

ULT

0la

ngs

teLan

geder

Kurb

el

kom

pat

ibel

TIN

YIN

T(1

)U

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

00=

Shim

ano,

1=C

ampa,≥

2=bei

de

TA

BLE

Bre

mse

n

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

Diplomarbeit 88

Page 96: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

ANHANG A. TABLES DER DATENBANK

TA

BLE

Sch

alt

gru

ppe

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

kett

enbla

ttT

INY

INT

UN

SIG

NE

DN

OT

NU

LL

DE

FA

ULT

21=

com

pac

t,2=

nor

mal

,3=

3er

Bla

tt

her

stel

ler

TIN

YIN

T(1

)U

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

01=

Shim

ano,≥

1=C

ampag

nol

o

lenke

rart

TIN

YIN

T(1

)U

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

00=

nor

mal

,≥

1=A

erol

enke

r

kass

ette

min

TIN

YIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0A

nz.

Zah

ne

kle

inst

esR

itze

l

kass

ette

max

TIN

YIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0A

nz.

Zah

ne

groß

tes

Rit

zel

TA

BLE

Pedale

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

Diplomarbeit 89

Page 97: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

ANHANG A. TABLES DER DATENBANK

TA

BLE

Satt

els

tuetz

e

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

laen

geSM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0ve

rste

llbar

eLan

geder

Stu

tze,

inm

m

durc

hm

esse

rFLO

AT

UN

SIG

NE

DN

OT

NU

LL

DE

FA

ULT

0D

urc

hm

esse

rdes

Sat

telroh

rs,in

mm

TA

BLE

Satt

el

Spalt

ennam

eEig

ensc

haft

en

Bem

erk

ung

arti

keln

um

mer

CH

AR

(6)

PR

IMA

RY

KE

Ykunst

lich

erei

ndeu

tige

rSch

luss

el

gew

icht

SM

ALLIN

TU

NSIG

NE

DN

OT

NU

LL

DE

FA

ULT

0das

Gew

icht

der

Kom

pon

ente

nam

eVA

RC

HA

R(1

00)

NO

TN

ULL

der

Nam

eder

Kom

pon

ente

bes

chre

ibung

TE

XT

NO

TN

ULL

eine

schon

eB

esch

reib

ung

pre

isFLO

AT

NO

TN

ULL

DE

FA

ULT

0das

Wic

hti

gste

bild

VA

RC

HA

R(4

0)N

OT

NU

LL

UR

Lzu

einem

Art

ikel

bild

Diplomarbeit 90

Page 98: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Anhang B

Screenshots

Abbildung B.1: Die Startseite

Diplomarbeit 91

Page 99: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

ANHANG B. SCREENSHOTS

Abbildung B.2: Konfigurator fur Triathlonrader

Diplomarbeit 92

Page 100: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

ANHANG B. SCREENSHOTS

Abbildung B.3: Konfigurator fur Rennrader

Diplomarbeit 93

Page 101: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

Quellenverzeichnis

[Bik06] MAXX Bikes. Bike Configurator.

http://www.maxx.de/fr inhalt bikes road.htm, 2006.

[Bra05] Christian Braun. PHP5 fur Dummies. Wiley-VCH, 2005.

[Cat06] Java Catalog. Java Enterprise System Lizenz.

http://catalog.sun.com/, 2006.

[Con04] Contentmanager.de. Case study: Der wechsel von Java zu PHP bei der

Augsburger Allgemeinen Zeitung.

http://www.contentmanager.de/community/forum/4/1901/1912.html,

2004.

[Gle03] Daniel Gleim. Multimedia-Sprachen und Standarts im Internet.

www-ra.informatik.uni-tuebingen.de/lehre/ws02/pro internet

ausarbeitung/proseminar gleim ws02.pdf, 2003.

[Hat02] Jens Hatlak. PHP Hypertext Preprocessor.

http://jens.hatlak.de/php.php4, 2002.

[Hom06a] Java Homepage. Connected Limited Device Configuration.

http://java.sun.com/products/cldc/overview.html, 2006.

[Hom06b] Java Homepage. Java SE Hotspot.

http://java.sun.com/javase/technologies/hotspot.jsp, 2006.

[IBM06] IBM. Ibm Software - DB2 Product Family.

http://www-306.ibm.com/software/data/db2/, 2006.

Diplomarbeit 94

Page 102: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

LITERATURVERZEICHNIS

[ID06] IST-Dresden. Java Technologie.

http://www.ist-dresden.de/technology/java.html, 2006.

[Ihn06] Oliver Ihns. Umkehr der Beweislast.

JavaMagazin.de, 2006.

[Ind06] Indexpage.ch. Web-sprachen.

http://www.indexpage.ch/web-codes/html/praxis/websprachen.php,

2006.

[Mor02a] Rene Morschhauser. Nachteile von PHP.

http://www.mathematik.uni-ulm.de/sai/ws01/portalsem/rene/

internetportale/node27.html, 2002.

[Mor02b] Rene Morschhauser. Vorteile von PHP.

http://www.mathematik.uni-ulm.de/sai/ws01/portalsem/rene/

internetportale/node26.html, 2002.

[Nor03] D’Arcy Norman. PHP vs. Java commentary from Raible.

http://www.darcynorman.net/2003/08/24/php-vs-java-commentary-

from-raible, 2003.

[NR05] Neon-Radsport. Rennrad Konfigurator.

http://www.neon-radsport.de/konfigurator.php?type=Rennrad, 2005.

[Ora06] Oracle. Oracle Database 10g.

http://www.oracle.com/technology/products/database/oracle10g/

index.html, 2006.

[osC06] osCommerce. Deutsche osCommerce Homepage.

http://www.oscommerce.de/, 2006.

[Tut05] Tutorials.de. Zugriff auf eine Klasseninstanz.

http://www.tutorials.de/forum/php/212138-zugriff-auf-eine-

klasseninstanz-innerhalb-einer-funktion-einer-anderen-klasse.html,

2005.

Diplomarbeit 95

Page 103: Diplomarbeit - fh-muenster.de...Diplomarbeit Erstellung eines Web-basierten Konfigurators fur¨ Renn- und Triathlonr¨ader mittels PHP und MySQL von Marco Ressler Betreuer/Prufer:¨

LITERATURVERZEICHNIS

[Typ06] Typo3. What is Typo3?

http://typo3.com/About.1231.0.html, 2006.

[WC04] Webwork-Community.net. Java und Web.

http://www.webwork-community.net/posting4895 47 0.html, 2004.

[Wik06a] Wikipedia.de. Geschichte Javas.

http://de.wikipedia.org/wiki/Java (Technologie)#Geschichte Javas,

2006.

[Wik06b] Wikipedia.de. Geschichte von PHP.

http://de.wikipedia.org/wiki/PHP/FI#Geschichte, 2006.

[XF04] XHTML-Forum. Vorteile Java gegenuber PHP?

http://xhtmlforum.de/288066-post14.html, 2004.

Fur die Entwicklung verwendete Literatur

[Ogg05] Michael Kofler ; Bernd Oggl. PHP 5 & MySQL 5. Addison-Wesley, 2005.

[Hir04] Jens Ferner ; Elena Hirte. PHP5 Rezepte. Data Becker, 2004.

[Hir05] Elena Hirte. PHP5 & MySQL. Data Becker, 2005.

[Kra04] Jorg Krause. PHP 5 - Grundlagen und Profiwissen. Hanser, 2004.

[Kau04] Mechthild Kaufer. (X)HTML. Data Becker, 2004.

[McC04] Bill McCarty. PHP-Grundlagen. mitp, 2004.

[Nef03] Stefan Munz ; Wolfgang Nefzger. JavaScript - Referenz. Franzis, 2003.

[Sel06] SelfHTML. SelfHTML - HTML-Dateien selbst erstellen. de.selfhtml.org,

2006.

[Tra05] David Sklar ; Adam Trachtenberg. PHP-Kochbuch. O’Reilly, 2005.

[Zed02] Dirk Zedler. Das Rennrad im Selbstaufbau. Delius Klasing, 2002.

Diplomarbeit 96