AZreferate - Referate und hausaufgaben fur schule.
Referatesuche, Hausarbeiten und Seminararbeiten Kostenlose Online-Dokumente mit Bildern, Formeln und Grafiken. Referate, Facharbeiten, Hausarbeiten und Seminararbeiten findest für Ihre einfache Hausarbeiten.



BetriebstechnikBiographienBiologieChemieDeutschDigitaltechnik
ElectronicaEpochenFertigungstechnikGemeinschaftskundeGeographieGeschichte
InformatikKulturKunstLiteraturManagementMathematik
MedizinNachrichtentechnikPhilosophiePhysikPolitikProjekt
PsychologieRechtSonstigeSportTechnikWirtschaftskunde

Referat Praktisches Beispiel: Warenkorb - Allgemeines zur Code-Dokumentation

informatik referate

informatik referate

Praktisches Beispiel: Warenkorb

Aufbau

Die Applikation stellt einen Warenkorb anhand eines Büchershops dar. Die Startseite bietet die vorhandenen Büchersparten an. Von dort aus kann man sich alle Bücher zu dieser Sparte anzeigen lassen. Interessiert einen dann ein Buch, so ist man nur noch einen Mausklick von einer genauen Beschreibung entfernt. Ist man dann gewillt das Produkt zu kaufen, so kann man es gleich mal in den Warenkorb legen / der Shoppingliste hinzufügen. Wenn nicht kehrt man einfach über die Navigationsleiste, die auf jeder Seite gleich erscheint, an den Anfang zurück. Hat man die Shoppingliste zu seiner Zufriedenheit erstellt und möchte nun die Waren bestellen, so läßt man sich einfach den Warenkorb anzeigen und klickt auf den Button 'Bestellen'. Jetzt gelangt man zu einem Login-Menü. Entweder loggt man sich mit einem bereits erstellten Kundennamen und -paßwort ein, oder man erstellt ein neues Konto. Egal was man tut, man muß dann weitere persönliche Daten eingeben / überprüfen. Bevor man nun die Bestätigung bekommt, daß die Bestellung erfolgt ist, muß man noch seine bevorzugte Zahlungsart angeben. Dann darf man sich E-Shopper nennen

Allgemeines zur Code-Dokumentation

Code - was ist das? Nun, hier ist damit das gemeint, was hinter dem Shop steht, der Quellcode, Schleifen und Funktionen, Variablen und Datensätze, alles vereint in Active Server Pages Dateien.

Schwierig? Um das ganze einfacher zu machen sehen wir uns einmal den Aufbau, das Grundgerüst einer Html-Datei (Hypertext Markup Language - die Sprache des Internet) an. Eine ASP-Datei ist nämlich nichts Anderes als eine Html-Datei mit ein wenig ASP-Code.

Das Grundgerüst einer Html-Datei:

<html>

<head>

<title> Der Name der Datei, der in der Windows-Startleiste angezeigt

wird

</title>

</head>

<body>

Hier der Inhalt der Html-Datei, der auch wirklich angezeigt wird

</body>

</html>

Tippt man diesen simplen Code genau so in einen Text-Editor (zb Notepad) ein und benennt diese als *.htm/*.html, so erhält man eine einfachste Html-Datei die mit einem Internet-Browser angezeigt werden kann.

Die Schlüsselwörter (so werden vom System belegte Wörter, die man zB nicht für Variablen verwenden darf, genannt) zwischen den eckigen Klammern (<Schlüsselwort>) sind Bestandteil der Sprache HTML. Diesen Code werden wir in der Folge nicht erklären, außer es sollte zum Verständnis unbedingt notwendig werden. Interessierte können zB auf https://www.teamone.de/selfhtml mehr über Html-Code erfahren.

Wie erkennt man nun den wahren Programm-Code, der die Applikation ausmacht? Durch eckige Klammern mit Prozentzeichen: <% Applikations-Code %>

Wenn Sie nun schon ein wenig Bekanntschaft mit Html und Ahnlichem gemacht haben werden Sie bemerken, daß das nicht ASP-Code sondern VB-Script-Code ist.

Nun, ASP ist eigentlich keine Programmiersprache sonder ein Produkt Microsofts, der das Einbinden von Datenbanken in Html-Dateien ermöglicht. Die Datenbank-Befehle sind eigentlich auch im VB-Script eingebunden, aber nicht jeder kann Dateien mit solchen Befehlen nutzen. Zuerst einmal erkennt man solche Dateien an der Endung .asp, verwenden kann man sie nur wenn man den richtigen Web-Server auf seinem Host installiert hat. Dieser Server ist natürlich das zu ASP gehörige oben erwähnte Microsoft-Produkt, genannt Internet Information Server, kurz IIS. Er arbeitet nur auf Windows NT Servern. Für Windows 9x gibt es den vergleichsweise eher trivial anmutenden Personal Web Server.

Also, wir wissen jetzt, daß VB-Script den eigentlichen Programmcode ausmacht und daß dieser mit <% beginnt und mit %> endet. Diesen werden wir in der Folge erklären, wo es nötig ist.

Obwohl wir nur den VB-Script Code erklären, führen wir zum besseren Verständnis immer die vollständige ASP-Datei an.

Der erklärende Text wird zur Unterscheidung vom Text der Html-Datei kursiv gedruckt.

Der Code

default.asp

<link rel='stylesheet' type='text/css' href='../universalskripts/default.css'>

Hier gleich eine Eigenheit - bevor noch die Html-Datei beginnt wird hier schon eine Datei eingebunden. Dies ist eine sogenannte Cascading-Style-Sheet-Datei - dort kann man grafische Konventionen für bestimmte Zustände und Tags formulieren die dann für jeden Tag, der in der CSS-Datei erwähnt wird, zutreffen.

Ein Beispiel: In der CSS-Datei weisen wir dem body-tag eine Hintergrundgrafik zu - folglich hat jede Datei die diese CSS-Datei implementiert diese Hintergrundgrafik.

<!-- Ein Kommentar -->

Die inkludierten Dateien werden oft zwischen Kommentarzeichen gesetzt um sie so vor alten Browsern zu verstecken, die statt die Datei zu inkludieren Text ausgeben würden. Neue Browser erkennen diesen Trick und inkludieren die Datei trotzdem, obwohl sie zwischen Kommentarzeichen steht.

<% const conimgNotFound='../images/imgNotFound.gif' %>

Diese Konstante brauchen wir später, falls für eine Sparte oder einen Artikel kein Bild vorhanden sein sollte.

<%

idSession2 = Request.QueryString('idSession2')

Wenn der User schon auf der Homepage war, dann kennen wir seine ID jetzt wieder, genauso

wie wir die ID auf jeder weiteren Seite abfragen werden. (Der Variable idSession2 wird ein QueryString zugwiesen, das ist an die URL (Internetadresse) angehängter Code.) (Die ID muß 'händisch' von Seite zu Seite (Datei zu Datei) weitergegeben (und abgefragt) werden, sonst ist sie verloren.) Wenn der User noch keine ID hat, dann ist folgender IF Befehl true und erzeugt eine neue ID.

If idSession2='' OR idSession2=NULL Then

Hier wird also erst mal festgestellt ob idSession2 leer ist oder nicht. Wenn ja, dann geschieht folgendes (Diese Befehlsstruktur nennt man einen IF-Befehl und ist eine Kontrollstruktur. Seine Syntax sieht so aus: IF x=y Then Befehle END IF):

RANDOMIZE(time())

Und damit beim Zuweisen einer Zufallszahl der Algorithmus, der die Zufallszahlen erzeugt, auch immer mit einer anderen Zahl rechnet, weisen wir dem Algorithmus den Parameter 'time' zu, der dem Algorithmus immer eine andere Rechenkonstante übergibt. (abhängig von der Uhrzeit des Host-Rechners)

idSession2 = Int(30000 * Rnd +1) & Date()

Als erstes erzeugen wir jetzt eine Zufallszahl im Integer-Format, die zwischen 1 und 30001 liegt, dann hängen wir das aktuelle Datum an. Wenn später mittels der idSession2 Daten aus einer Tabelle gefiltert werden, so haben wir größere Sicherheit, daß nicht 2 User die gleiche ID haben und sich deren Shopping-Touren vermischen - wenn wir pro Tag 30 Kunden hätten, läge die Wahrscheinlichkeit einer übereinstimmenden ID zweier User trotzdem nur bei 1:1000.

End If

Das obligatorische Ende des IF-Befehls.

%>

<%

SET idConn = Server.CreateObject('ADODB.Connection')

Hier setzen wir eine beliebige Objektvariable (idConn) und weisen ihr die Datenbankverbindung zu.

SET RS = Server.CreateObject('ADODB.RecordSet')

Hier legen wir ein Objekt vom Typ RecordSet an und instanziieren es - wird aus der Datenbank ein Datensatz (Recordset) gelesen, so wird er der Objektvariablen (hier: RS) zugewiesen.

idConn.Open 'DSN=shopsysdata'

Die DSN entspricht dem Namen der Datenbank im ODBC Fenster - ODBC (Open Database Connectivity ist notwendig, damit der Zugriff auf die Datenbank erst möglich wird)

(Start|Einstellungen|Systemsteuerung|ODBC)

SET idConn2 = Server.CreateObject('ADODB.Connection')

Hier setzen wir eine zweite Objektvariable mittels der wir später aus der Datenbank zufällig Farben ermitteln

%>

Kleiner Hinweis: am Ende des VB-Scripts bauen wir eine Datenbankverbindung auf. Dies wird später immer mittels der inkludierten Datei idConnection.inc gelöst.

<!-- #include file='../styles.inc' -->

Diese Datei ist die Navigationsleiste, die in jede Datei eingeschlossen wird.

<html>

<head>

<title>Warenkorb-Standardpage</title>

</head>

<body><font color='white'>

<hr width='90%'> ein Trennstrich

<br> eine Absatzmarke

<p id='Gruppen' Class='clsBold'> ein Absatz mit CSS Formatierungen

Willkommen!<br>

<div id='Gruppen'> ein Bereich mit CSS Formatierungen

Hier sehen Sie unsere verschiedenen B&uuml;chersparten.<br>

Bitte w&auml;hlen Sie eine Gruppe aus<br>

um Artikel anzuzeigen.<br>

;-)) ein Smiley

</div>

</p>

<%

RS.Open 'SELECT * FROM Sparte ORDER BY nameSparte ASC', idConn

Es werden alle Datensätze (Select *) aus der Tabelle Sparte gewählt. Dazu verwendet wird die Verbindung idConn.

%>

Hier muß ich die Sparten aus der Database abfragen und möglichst in einer Tabelle schön geordnet mit verlinkten Bildern anzeigen ;-))

<%

varA=1

Hier setze ich eine Variable die ich am Ende der Tabelle dringend für das Design (den Zeilenumbruch nach je 3 Sparten) benötige

%>

<center>


Wir zentrieren die Tabelle mal und beginnen sie hier, wobei der Zelleninhalt immer einen Abstand von 25 zum Zellenrand haben soll.

<table cellpadding=25>

<tr>Die erste Zeile

<%

DO WHILE NOT RS.EOF


Mache solange du nicht das Ende der Datei erreicht hast (Diese Struktur ist eine abweisende Schleife, das heißt es werden immer dieselben Befehle durchgeführt, solange ein bestimmter Zustand zutrifft; Syntax: Do While (NOT) Zustand Befehle Loop)

lnkImage=RS('imgSparte')

Nebenbei wird schnell noch eine beliebige Variable (lnkImage) gleich dem Bildpfad gesetzt, der aus der Tabelle gefiltert wird. lnkImage ist also je nach dem in welcher Zeile der 'Datenzeiger' gerade steht ein anderes Bild, oder besser gesagt der Pfad davon.

If lnkImage='../images/' Then

lnkmage=conimgNotFound

End if

Wenn mal kein Pfad angegeben ist (dann gibts den obigen Standardwert - in der Tabelle definiert), dann soll lnkImage gleich einem Universalbild sein (conimgNotFound) - das wurde hoffentlich als Konstante am Anfang dieses Skripts gespeichert ;-))

%>

<td> die erste Spalte

<a href='artikel.asp?idSession2=<% = idSesson2%>&Sparte=<% = RS('idLnk') %>&idUser2=<% = idUser2%>'>

Hier wird ein Bild (lnkImage) in einen Link eingebettet. Damit die Session# etc. nicht verlorengeht wird das alles an den Link angehängt ;-)

<%


nun moechten wir, dass zu jedem Bild auch der Untertitel erscheint, wenn man mit dem Mauszeiger auf dem Bild steht :-) (ALT ist dafuer im img-tag zustaendig)


varB=1 wir setzen wieder eine Hilfsvariable

longNameSparte=RS('longNameSparte') hier wird der vollstaendige Spartenname, den wir als Untertitel verwenden, abgespeichert


DO WHILE NOT varB>1 %> mache solange die Hilfsvariable nicht groesser eins ist

<IMG Border='0'

SRC='<%=lnkImage%>' width='130'

height='75' ALT='<% =

longNameSparte %>'>


hier wird das Bild eingefügt; SRC und ALT sind dynamisch und werden nach je dem LOOP mit dem Movenext-Befehl auf den nächsten Datensatz gesetzt (das Loop der umgebenden Schleife ist gemeint)

<% varB=varB+1

wenn das Bild eingefügt wurde stellt man noch sicher, daß diese Schleife sich nicht wiederholt (varB=varB+1 -> =2) - LOOP beendet dann die DO WHILE Schleife wieder. Damit beim nächsten Schleifendurchlauf der umgebenden Schleife varB wieder =1  es ist ja direkt über dieser Schleife (aber außerhalb) definiert varB=1 !!

LOOP das obligatorische Ende der DO WHILE Schleife

%>

</a> Das Ende des Links, in den die Grafik eingebettet ist

<br>

<center> Der Zeilenumbruch und das Zentrieren bewirkt, daß in derselben Zelle wie das Bild, unterhalb (br)        und zentriert (center) der Titel steht (erneut als Link).


<table><tr><td background='../images/stylesbg.jpg'>

<a href='artikel.asp?idSession2=<% = idSession2%>&Sparte=<% = RS('idLnk') %>&idUser2=<% = idUser2%>'>

<%

idConn2.Open 'DSN=shopsysdata'

und wir öffnen auch hier die Verbindung

SET RS2 = idConn2.Execute('SELECT * FROM Farbe')

eine andere Variante um Daten aus der Tabelle zu holen

RANDOMIZE(Time())

varC=Int(32 * Rnd +1)

um zufaellig eine Farbe ermitteln zu koennen weisen wir varC eine Zufallszahl zu

DO WHILE NOT RS2(TRIM('idFarbe'))=varC AND NOT RS2.EOF


Diese Schleife setzt den Datensatz so lange um eins weiter, bis varC gleich dem Wert id im Datensatz ist

RS2.MoveNext

LOOP

color=RS2('Farbe')

jetzt 'sitzt' der Datensatzzeiger auf dem richtigen Datensatz und wir weisen einfach den aktuellen Farbwert der Variablen color zu

RS2.Close

idConn2.Close


die Verbindungen werden wieder geschlossen - sie werden ja nur hier benötigt und würden uns vielleicht stören wenn wir sie mit Bereichen der umgebenden Schleife          überlappen lassen würden; zu Deutsch - dann zB könnte es sein, daß ein anderer Befehl auf den Datensatz zugreifen will, aber nicht kann, weil er hier noch offen ist

%>

<font color='<% = color %>' size='+1' family='Comic Sans MS'><% = RS('nameSparte') %></font>

hier weisen wir die Zufallsfarbe und die jeweilige Sparte zu

</a>

</td></tr></table>

<center>

</td>

<%

If varA=3 then

varA=0


hier wird ein beliebiger Zaehler nach jedem in die Tabelle gespeisten Datensatz um 1 erhoeht - wenn 3 Datensaetze eingespeist wurden wird der Zaehler auf 0 zurueckgesetzt und

%>

</tr>

<tr>

. eine neue Zeile wird begonnen

<% End If

varA=varA+1

RS.MoveNext

LOOP


Hier wird der Zähler erhöht, der Zeiger auf den nächsten Datensatz gesetzt und die umgebende Schleife wiederholt (unabhängig vom If-Befehl)

%>

</tr>

</table>

</center>

</font>

</body>

</html>

<%

RS.Close

idConn.Close


Schließt die Verbindung wieder

%>

artikel.asp

<!-- #include file='../universalskripts/idConnection.inc' -->

<link rel='stylesheet' type='text/css' href='../universalskripts/default.css'>

<% const conimgNotFound='../images/imgNotFound.gif'

Folgendes geschieht nur fuer das Anzeigen eines netten Titels

Sparte = Request.QueryString('Sparte')

IF Sparte='' Or isnull(Sparte) Then Sparte = Request.Form('Warengruppen')

RS.Open 'SELECT * FROM Sparte WHERE idLnk=' & Sparte, idConn

nameSparte=RS('nameSparte')

longNameSparte=RS('longNameSparte')

RS.Close

%>

<!-- #include file='../styles.inc' -->

<html>

<head>

<title>

Unsere Artikel der Sparte <% = nameSparte %> Und hier ist auch schon der Titel

</title>

</head>

<body><font color='white'>

<hr width='90%'>

<br>

<p id='Gruppen' Class='clsBold'>

Willkommen bei unseren Artikeln!<br>

<div id='Gruppen'>

Hier sehen Sie die gesamte Auswahl unserer<br>

Artikel der Kategorie <% = longNameSparte %>.<br>

Bitte w&auml;hlen Sie für eine genaue<br>

Beschreibung einen<br>

Artikel aus<br>


</div>

</p>

<%

RS.Open 'SELECT * FROM Artikel WHERE idLnk=' & Sparte, idConn

varA=1

%>

Wir öffnen die Tabelle Artikel und wählen alle Datensätze aus, bei denen idLnk (Verknüpfung von Tabelle Sparte zu Tabelle Artikel) der gerade ausgewählten Sparte entspricht - so können die Artikel angezeigt werden, die jeweils zur ausgewählten Sparte gehören.

Die Variable varA wird dazu benutzt, daß Jede Zeile der folgenden Tabelle genau drei Spalten hat.


<center>

<table cellpadding=25>

<tr>

<%

DO WHILE NOT RS.EOF

Hier erzeugen wir die Tabelle mit einer Schleife - es werden 'solange Artikel aus der Artikeltabelle geholt, bis kein Datensatz mehr vorhanden ist', zu -Deutsch werden einfach alle Datensätze aus der Tabelle gelesen (unter den oben schon beschriebenen Bedingungen)

Mit jedem einzelnen dieser Datensätze wird eine Vielzahl von Aktionen durchgeführt, es wird der Bildpfad zum Anzeigen des Bildes herausgefiltert, der Untertitel des Bildes, der Name des Artikels und - bei jedem Schleifendurchlauf wird die oben gesetzte Variable varA um 1 erhöht, bis sie 3 ergibt, dann wird sie wieder auf 1 gesetzt. Sinn: Wenn varA=3 wird varA nicht nur wieder 1, es wird auch in der Tabelle eine neue Zeile begonnen.

lnkImage=RS('imgArtikel')

IF lnkImage='../images/' THEN lnkImage=conimgNotFound END IF

Wenn kein Bildpfad angegeben wurde, trifft der Standardwerte dieser Zelle zu ('../images') und es wird das Standardbild ('Ooops, momentan kein Bild verfügbar') eingeblendet.

%>

<td>

<center>

<a href='xartikel.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel') %>&nameSparte=<% = nameSparte %>'>

Der Link, auf den das Bild des jeweiligen Artikels verweist, inklusive allen Informationen die in der nächsten Datei wieder mittels Request.QueryString abgerufen werden.

<%

longNameArtikel=RS('longNameArtikel')

%>

<IMG Border='0' SRC='<% = lnkImage %>' width='100' height='150' ALT='<% = longNameArtikel %>'>

Das Bild inklusive Untertitel

</a>

<br>

<table><tr><td background='../images/stylesbg.jpg'>

<a href='xartikel.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel') %>&idUser2=<% = idUser2%>&nameSparte=<% = nameSparte %>'>

Es erwies sich als beste Möglichkeit um die Position des Titels im Griff zu haben, diesen innerhalb der Tabelle erneut in eine Tabelle zu verpacken.

Es folgt: die zufällige Auswahl einer Farbe für die Schrift nach dem selben Prinzip das wir bereits kennen, ich erkläre also nicht nochmals.

<%

idConn2.Open 'DSN=shopsysdata'

SET RS2 = idConn2.Execute('SELECT * FROM Farbe')

RANDOMIZE(Time())

varC=Int(32 * Rnd +1)

DO WHILE NOT RS2(TRIM('idFarbe'))=varC AND NOT RS2.EOF

RS2.MoveNext

LOOP

color=RS2('Farbe')

RS2.Close

idConn2.Close

%>

<font color='<% = color %>' size='+1' family='Comic Sans MS'><% = RS('nameArtikel') %></font>

</a>

</td></tr></table>

</center>

</td>

<%

If varA=3 then

varA=0

%>

</tr>

<tr>

<% end if

varA=varA+1

Hier das berüchtigte varA=varA+1; darüber die If-Struktur die bei varA=3 ausgeführt wird.

RS.MoveNext Setzt den Datensatzzeiger auf den nächsten Datensatz

LOOP

%>

</tr>

</table>

</center>

</font>

</body>

</html>

<%

RS.Close

idConn.Close

%>

xartikel.asp

<!-- #include file='../universalskripts/idConnection.inc' -->

<!-- #include file='../styles.inc' -->

<link rel='stylesheet' type='text/css' href='../universalskripts/default.css'>

<% const conimgNotFound='../images/imgNotFound.gif' %>

<% Artikel = Request.QueryString('Artikel') %>

<% nameSparte = Request.QueryString('nameSparte') %>

Hier werden der Artikel- und der Spartenname aus dem QueryString (an URL angehangener Code) geholt.

<% RS.Open 'SELECT * FROM Artikel WHERE idArtikel=' & Artikel, idConn

nameArtikel=RS('nameArtikel')

longNameArtikel=RS('longNameArtikel')

Hier werden die Bezeichnungen (kurz, lang) für den Artikel aus der Datenbank geholt, dann wird diese Tabelle wieder geschlossen.

RS.Close

RS.Open 'SELECT idSession,idArtikel From Bestellung Where idSession=' & ''' & idSession2 & ''' & 'AND idArtikel=' & Artikel, idConn

IF RS.EOF THEN command='insert' ELSE command='change' END IF %>

Hier wird in der Tabelle gesucht, ob genau dieser Artikel bereits im Warenkorb liegt, oder nicht - je nachdem wird command mit dem insert oder change belegt und löst dann die gewünschte Reaktion in der warenkorb.asp aus - es wird so verhindert, daß ein Artikel zwei mal angezeigt wird, der Warenkorb wird um die Anzahl der gewählten Artikel erweitert, dh wenn vorher 3 solche Artikel im Warenkorb waren und ich jetzt wieder 1 dieser Artikel einfüge steht dann nicht eine Zeile mit 3 mal und eine mit 1 mal diesem Artikel, sondern nur eine Zeile mit 4 mal diesem Artikel da.

<%

RS.Close

RS.Open 'SELECT * FROM Artikel WHERE idArtikel=' & Artikel, idConn

%>

<html>

<head>

<title>

Artikel <% = nameArtikel %> der Sparte <% = nameSparte %>

</title>

</head>

<body><% = varArt %>

<%

varA=1

%>

<FORM ACTION='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel') %>&idUser2=<% = idser2 %>&command=<% =command %>&nameSparte=<% = nameSparte%>' METHOD='Post'>

<center>

<table width='100%'>

<tr>

<%

lnkImage=RS('imgArtikel')

IF lnkImage='../images/' THEN lnkImage=conimgNotFound END IF

%>

<td align='center' rowspan='6'>

<IMG SRC='<% = lnkImage %>' width='150' height='210' ALT='<% = longNameArtikel %>'>

</font>

</td>

<td colspan='3'>

<%

idConn2.Open 'DSN=shopsysdata'

SET RS2 = idConn2.Execute('SELECT * FROM Farbe')

RANDOMIZE(Time())

varC=Int(32 * Rnd +1)

DO WHILE NOT RS2(TRIM('idFarbe'))=varC AND NOT RS2.EOF

RS2.MoveNext

LOOP

color=RS2('Farbe')

RS2.Close

idConn2.Close

%>

<font align='left' color='<% = color %>' size='+1' family='Comic Sans MS'>

<table><tr><td background='../images/stylesbg.jpg'><% = RS('nameArtikel') %></td></tr></table>

</font>

</td>

<td valign=center><font color='white'>

<input size='3' name='Stueckzahl' value='1'> St&uuml;ck

</font>

</td>

<td><font color='white'>

Preis/Stk.: &nbsp; <% = RS('euroPriceArtikel') %> &nbsp; Euro

</font>

</td>

</tr>

<tr>

<td valign=top><font color='white'>

Autor(en):

</font>

</td>

<td valign=top colspan='2'><font color='white'>

<% = RS('Autor') %>

</font>

</td>

<td>

</td>

<td><font color='white'>

<% atsPreis = RS('euroPriceArtikel')*13.7603 %>

Preis/Stk.: &nbsp; <% = Round(atsPreis, 2) %> &nbsp; ATS

</font>

</td>

</tr>

<tr>

<td><font color='white'>

ISBN:

</font>

</td>

<td colspan='2'><font color='white'>

<% = RS('ISBN') %>

</font>

</td>

<td colspan='2'><font color='white'>

<input type='submit' size='3' value='auf die Shoppingliste'>

</font>

</td>

</tr>

<tr>

<td colspan='3'><font color='white'>

<% = RS('Cover') %>

</font>

</td>

<td width='45%' colspan='2' rowspan='3'><font color='white'>

Wenn Sie hier auf den Knopf 'auf die Shoppingliste'

dr&uuml;cken, wird dieser Artikel in der gew&uuml;schten

St&uuml;ckzahl in den Warenkorb gelegt :-)

</font>

</td>

</tr>

<tr>

<td><font color='white'>

Erschienen:

</font>

</td>

<td colspan='2'><font color='white'>

<% = RS('Erscheinung') %>

</font>

</td>

</tr>

<tr>

<td colspan='3'><font color='white'>

<% = RS('Umfang') %>

</font>

</td>

</tr>

<tr>

<td colspan='6'><font color='white'>

<br>

<u>

Eine Kurzbeschreibung des Artikels:

</u>

<br>

<i>

<% = RS('descrArtikel') %>

</i>

</font>

</td>

</tr>

<tr>

<td colspan='6'><font color='white'>

<a href='<% = RS('mehrInfo') %>' ><i>Weitere Informationen</i></a>

finden Sie bei

<a href='https://www.amazon.at'><i>Amazon</i></a>

</font>

</td>

</tr>

</table>

</center>

</form>

Was wir hier sehen ist nichts weiter als eine Tabelle - die Struktur sieht nicht nur kompliziert aus, sie ist es auch und man programmiert das wohl einfacher mit einem Tool (zB Frontpage) als von Hand. Die Tabelle ist eigentlich nur für das Aussehen der Site zuständig, die Funktion wird im Formular verpackt (form-tag). Dort wird die Artikel# und die gewünschte Stückzahl weitergegeben.

</body>

</html>

<%

RS.Close

idConn.Close

%>

warenkorb.asp

<!-- #include file='../universalskripts/idConnection.inc' -->

<link rel='stylesheet' type='text/css' href='../universalskripts/default.css'>

<% const conimgNotFound='../images/imgNotFound.gif' %>

<% command = Request.QueryString('command') %>

<% Artikel = Request.QueryString('Artikel') %>

<% nameSparte = Request.QueryString('nameSparte') %>

<% Stueckzahl = Request.Form('Stueckzahl') %>

<% IF IsNull(idUser2) or idUser2='' THEN idUser2='0' END IF %>

<!-- #include file='../styles.inc' -->

Es werden auch hier verschiedene Daten aus dem QueryString bzw. aus einem Formular geholt. Um aus einem Formular Daten holen zu können muß die 'Vorgängerseite' mit einem Formular und der Method Post genau diese Daten übergeben haben.

<html>

<head>

<title>

Warenkorb

</title>

</head>

<body><hr width='100%'>

<%

IF command = 'insert' THEN

RS.Open 'SELECT * FROM Artikel WHERE idArtikel=' & Artikel, idConn

Einzelpreis = RS('euroPriceArtikel')

Bestellsumme2 = Replace(RS('euroPriceArtikel')*Stueckzahl,',','.')

Bestellsumme2 = Replace(Bestellsumme2,'.',',')

Replace ersetzt zB ein bestimmtes Zeichen wie einen Beistrich durch ein anderes hier ist das zur Berechnung des Gesamtpreises notwendig, da der Computer Englisch spricht und rechnet und im englischsprachigen Raum steht ein Punkt für ein Komma - würd ich nichts umwandeln käme am Ende ein etwas seltsamer Preis raus.

Autor2 = RS('Autor')

nameArtikel2 = RS('nameArtikel')

RS.Close

idConn.Execute 'INSERT INTO Bestellung (idSession, idArtikel, idUser, nameArtikel, Autor, euroPriceArtikel, Bestelldatum, Bestellmenge, Bestellsumme) Values ('&'''&idSession2&'''&','&'''&Artikel&'''&','&'''&idUser2&'''&','&'''&nameArtikel2&'''&','&'''&Autor2&'''&','&'''&Einzelpreis&'''&','&'''&DATE()&'''&','&'''&Stueckzahl&'''&','&'''&Bestellsumme2&'''&')'

Die Bestellung wird in eine Tabelle geschrieben, damit der Warenkorb später auch noch alle Waren enthält - von selbst merkt sich der Computer nichts.

RS.Open 'Select * From Bestellung Where idSession=' & ''' & idSession2 & ''', idConn

ZaehlerA=0

ZaehlerC=0

%>

<% ZaehlerD=0 %>

<%

DO While Not RS.EOF

%>

<%

IF ZaehlerD='0'  THEN

color1='black'

color2='white'

ELSEIF ZaehlerD='1' THEN

color1='white'

color2='black'

END IF %>

Diese Color-Spielerei bewirkt, daß bei Bestellung von mehreren Daten die einzelnen Artikel im Warenkorb gut unterschieden werden können - es wird immer eine Zeile schwarz angezeigt, die nächste weiß, die nächste wieder schwarz

<table bgcolor='<% = color1 %>' width='100%'>

<tr>

<td width='20%'><font color='<% = color2 %>'><% = RS('nameArtikel') %></font></td>

<td width='20%'><font color='<% = color2 %>'><% = RS('Autor') %></font></td>

<td width='20%'><font color='<% = color2 %>'>Anzahl: <% = RS('Bestellmenge') %> St&uuml;ck</font></td>

<td width='20%'><font color='<% = color2 %>'>Neue St&uuml;ckzahl:</font></td>

<td width='20%'><font color='<% = color2 %>'>

<form action='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel')%>&idUser2=<% = idUser2%>&command=change&nameSparte=<% = nameSparte%>' METHOD='Post'>

Hier kann man die Bestellmenge eines Artikels ändern - bei Büchern mag dies unsinnig erscheinen weil man wohl kaum 2 mal dasselbe Buch bestellt, bei anderen Artikeln würde dies aber durchaus Sinn machen. (zB: 100 CD-Rohlinge)

<input name='Stueckzahl' size='3' value='1'>

<input type='submit' size='3' value='&Auml;ndern'>

</form>

</font>

</td>

</tr>

<tr>

<td width='20%'><font color='<% = color2 %>'>Einzelpreis: <% = RS('euroPriceArtikel') %> Euro</font></td>

<td width='20%'><font color='<% = color2 %>'><% = RS('Bestellsumme') %> Euro gesamt</font></td>

<td width='20%'><a href='details.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel')%>&idUser2=<% = idUser2%>&nameSparte=<% = nameSparte %>' target='_blank'><font color='<% = color2 %>'>Mehr Info</font></a></td>

<td width='20%'></td>

<td width='20%'><font color='<% = color2 %>'>

<form action='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel')%>&idUser2=<% = idUser2%>&command=delete&nameSparte=<% = nameSparte%>' METHOD='Post'>

<input type='submit' size='2' value='Artikel streichen'>

Eine Funktion zum Streichen eines bestimmten Artikels.

</form>

</font>

</td>

</tr>

</font>

</table>

<% IF ZaehlerD='0' THEN

ZaehlerD='1'

ELSEIF ZaehlerD='1' THEN

ZaehlerD='0'

END IF %>

Um die oben erwähnte Farbfunktion durchführen zu können ist natürlich ein Zähler in der Schleife nötig, der wiederum von Bedingungen abhängt.

<% ZaehlerB=RS('Bestellsumme') %>

<% ZaehlerA=ZaehlerA+ZaehlerB %>

Hier wird eine Variable immer mit der Bestellsumme belegt, die andere wird verwendet um sich die Summe zu merken und bei Anzeige von mehreren Artikeln und damit bei mehreren Schleifendurchläufen die Summe immer zu aktualisieren.

<% ZaehlerC=ZaehlerC+1 %>

<% RS.MoveNext %>

<% Loop %>

<table width='100%' background='../images/stylesbg.jpg'>

<tr>

<td width='20%'><font color='white'><strong><% = ZaehlerC %> Artikel</strong></font></td>

<td width='20%'><font color='white'><strong><% = ZaehlerA %> Euro gesamt</strong></font></td>

<td width='20%'><font color='white'><strong><% = Round(ZaehlerA*13.7603,2) %> ATS gesamt</strong></font></td>

<td width='20%'><font color='navy'><strong>

<form action='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=alle&idUser2=<% = idUser2%>&command=delete&nameSparte=<% = nameSparte%>' METHOD='Post'>

<input type='submit' size='3' value='Liste l&ouml;schen'>

</form>

Auch eine Funktion zum Löschen des Warenkorbs darf nicht fehlen.

</strong></font>

</td>

<td width='20%'><font color='white'><strong>

<form action='bestellen.asp?idSession2=<% = idSession2%>&idUser2=<% = idUser2%>' METHOD='Post'>

<input type='hidden' name='command' value='bestellen'>

<input type='submit' size='3' value='Bestellen!'>

</form>

Diese Funktion leitet schließlich zur nächsten Datei auf der man dann seine persönlichen Daten bekanntgibt.

</strong></font>

</td>

</tr>

</table>

<% RS.Close %>

Hier wiederholt sich derselbe Code mehrmals - nur um zu unterscheiden ob ein Artikel hinzugefügt, gelöscht, upgedated oder bloß der Warenkorb angeschaut werden soll. Das könnte man sicherlich ganz einfach mit einer Variablen lösen, in die man alle diese Befehle packt - es sei jedem überlassen es so bzw. besser zu machen.

<%

ELSEIF command = 'change' THEN

IF Stueckzahl='0' THEN RS.Open 'DELETE from Bestellung WHERE idArtikel=' & Artikel, idConn ELSE RS.Open 'UPDATE Bestellung SET Bestellmenge=' & Stueckzahl & ' WHERE idArtikel =' & Artikel, idConn END IF

RS.Open 'Select euroPriceArtikel From Artikel Where idArtikel=' & Artikel, idConn

Bestellsumme2 = Replace(RS('euroPriceArtikel')*Stueckzahl,',','.')

Bestellsumme2 = Replace(Bestellsumme2,'.',',')

RS.Close

RS.Open 'UPDATE Bestellung SET Bestellsumme=' & ''' & Bestellsumme2 & ''' & ' WHERE idArtikel =' & Artikel, idConn

RS.Open 'Select * From Bestellung Where idSession=' & ''' & idSession2 & ''', idConn

ZaehlerA=0

ZaehlerC=0

ZaehlerD='0'

%><%

DO While Not RS.EOF

%>

<%

IF ZaehlerD='0'  THEN

color1='black'

color2='white'

ELSEIF ZaehlerD='1' THEN

color1='white'

color2='black'

END IF %>

<table bgcolor='<% = color1 %>' width='100%'>

<tr>

<td width='20%'><font color='<% = color2 %>'><% = RS('nameArtikel') %></font></td>

<td width='20%'><font color='<% = color2 %>'><% = RS('Autor') %></font></td>

<td width='20%'><font color='<% = color2 %>'>Anzahl: <% = RS('Bestellmenge') %> St&uuml;ck</font></td>

<td width='20%'><font color='<% = color2 %>'>Neue St&uuml;ckzahl:</font></td>

<td width='20%'><font color='<% = color2 %>'>

<form action='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel')%>&idUser2=<% = idUser2%>&command=change&nameSparte=<% = nameSparte%>' METHOD='Post'>

<input name='Stueckzahl' size='3' value='1'>

<input type='submit' size='3' value='&Auml;ndern'>

</form>

</font>

</td>

</tr>

<tr>

<td width='20%'><font color='<% = color2 %>'>Einzelpreis: <% = RS('euroPriceArtikel') %> Euro</font></td>

<td width='20%'><font color='<% = color2 %>'><% = RS('Bestellsumme') %> Euro gesamt</font></td>

<td width='20%'><a href='details.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel')%>&idUser2=<% = idUser2%>&nameSparte=<% = nameSparte %>' target='_blank'><font color='<% = color2 %>'>Mehr Info</font></a></td>

<td width='20%'></td>

<td width='20%'><font color='<% = color2 %>'>

<form action='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel')%>&idUser2=<% = idUser2%>&command=delete&nameSparte=<% = nameSparte%>' METHOD='Post'>

<input type='submit' size='2' value='Artikel streichen'>

</form>

</font>

</td>

</tr>

</font>

</table>

<% IF ZaehlerD='0' THEN

ZaehlerD='1'

ELSEIF ZaehlerD='1' THEN

ZaehlerD='0'

END IF %>

<% ZaehlerB=RS('Bestellsumme') %>

<% ZaehlerA=ZaehlerA+ZaehlerB %>

<% ZaehlerC=ZaehlerC+1 %>

<% RS.MoveNext %>

<% Loop %>

<table width='100%' bgcolor='../images/stylesbg.jpg'>

<tr>

<td width='20%'><font color='white'><strong><% = ZaehlerC %> Artikel</strong></font></td>

<td width='20%'><font color='white'><strong><% = ZaehlerA %> Euro gesamt</strong></font></td>

<td width='20%'><font color='white'><strong><% = Round(ZaehlerA*13.7603,2) %> ATS gesamt</strong></font></td>

<td width='20%'><font color='white'><strong>

<form action='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=alle&idUser2=<% = idUser2%>&command=delete&nameSparte=<% = nameSparte%>' METHOD='Post'>

<input type='submit' size='3' value='Liste l&ouml;schen'>

</form>

</strong></font>

</td>

<td width='20%'><font color='white'><strong>

<form action='bestellen.asp?idSession2=<% = idSession2%>&idUser2=<% = idUser2%>' METHOD='Post'>

<input type='hidden' name='command' value='bestellen'>

<input type='submit' size='3' value='Bestellen!'>

</form>

</strong></font>

</td>

</tr>

</table>

<% RS.Close %>

<%

ELSEIF command = 'delete' THEN %>

<% IF Artikel='alle' THEN RS.Open 'DELETE From Bestellung Where idSession=' & ''' & idSession2 & ''', idConn ELSE RS.Open 'DELETE From Bestellung Where idArtikel=' & Artikel, idConn END IF %>

<% RS.Open 'Select * From Bestellung Where idSession=' & ''' & idSession2 & ''', idConn

ZaehlerA=0

ZaehlerC=0

ZaehlerD='0'

%>

<%

DO While Not RS.EOF

%>

<%

IF ZaehlerD='0'  THEN

color1='black'

color2='white'

ELSEIF ZaehlerD='1' THEN

color1='white'

color2='black'

END IF %>

<table bgcolor='<% = color1 %>' width='100%'>

<tr>

<td width='20%'><font color='<% = color2 %>'><% = RS('nameArtikel') %></font></td>

<td width='20%'><font color='<% = color2 %>'><% = RS('Autor') %></font></td>

<td width='20%'><font color='<% = color2 %>'>Anzahl: <% = RS('Bestellmenge') %> St&uuml;ck</font></td>

<td width='20%'><font color='<% = color2 %>'>Neue St&uuml;ckzahl:</font></td>

<td width='20%'><font color='<% = color2 %>'>

<form action='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel')%>&idUser2=<% = idUser2%>&command=change&nameSparte=<% = nameSparte%>' METHOD='Post'>

<input name='Stueckzahl' size='3' value='1'>

<input type='submit' size='3' value='&Auml;ndern'>

</form>

</font>

</td>

</tr>

<tr>

<td width='20%'><font color='<% = color2 %>'>Einzelpreis: <% = RS('euroPriceArtikel') %> Euro</font></td>

<td width='20%'><font color='<% = color2 %>'><% = RS('Bestellsumme') %> Euro gesamt</font></td>

<td width='20%'><a href='details.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel')%>&idUser2=<% = idUser2%>&nameSparte=<% = nameSparte %>' target='_blank'><font color='<% = color2 %>'>Mehr Info</font></a></td>

<td width='20%'></td>

<td width='20%'><font color='<% = color2 %>'>

<form action='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel')%>&idUser2=<% = idUser2%>&command=delete&nameSparte=<% = nameSparte%>' METHOD='Post'>

<input type='submit' size='2' value='Artikel streichen'>

</form>

</font>

</td>

</tr>

</font>

</table>

<% IF ZaehlerD='0' THEN

ZaehlerD='1'

ELSEIF ZaehlerD='1' THEN

ZaehlerD='0'

END IF %>

<% ZaehlerB=RS('Bestellsumme') %>

<% ZaehlerA=ZaehlerA+ZaehlerB %>

<% ZaehlerC=ZaehlerC+1 %>

<% RS.MoveNext %>

<% Loop %>

<table width='100%' background='../images/stylesbg.jpg'>

<tr>

<td width='20%'><font color='white'><strong><% = ZaehlerC %> Artikel</strong></font></td>

<td width='20%'><font color='white'><strong><% = ZaehlerA %> Euro gesamt</strong></font></td>

<td width='20%'><font color='white'><strong><% = Round(ZaehlerA*13.7603,2) %> ATS gesamt</strong></font></td>

<td width='20%'><font color='white'><strong><form action='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=alle&idUser2=<% = idUser2%>&command=delete&nameSparte=<% = nameSparte%>' METHOD='Post'>

<input type='submit' size='3' value='Liste l&ouml;schen'>

</form>

</strong></font>

</td>

<td width='20%'><font color='white'><strong>

<form action='bestellen.asp?idSession2=<% = idSession2%>&idUser2=<% = idUser2%>' METHOD='Post'>

<input type='hidden' name='command' value='bestellen'>

<input type='submit' size='3' value='Bestellen!'>

</form>

</strong></font>

</td>

</tr>

</table>

<% RS.Close %>

<% ELSEIF command = 'ansehen' THEN %>

<% RS.Open 'Select * From Bestellung Where idSession=' & ''' & idSession2 & ''', idConn

ZaehlerA=0

ZaehlerC=0

ZaehlerD='0'

%>

<table width='100%'>

<%

DO While Not RS.EOF

%>

<%

IF ZaehlerD='0'  THEN

color1='black'

color2='white'

ELSEIF ZaehlerD='1' THEN

color1='white'

color2='black'

END IF %>

<table bgcolor='<% = color1 %>' width='100%'>

<tr>

<td width='20%'><font color='<% = color2 %>'><% = RS('nameArtikel') %></font></td>

<td width='20%'><font color='<% = color2 %>'><% = RS('Autor') %></font></td>

<td width='20%'><font color='<% = color2 %>'>Anzahl: <% = RS('Bestellmenge') %> St&uuml;ck</font></td>

<td width='20%'><font color='<% = color2 %>'>Neue St&uuml;ckzahl:</font></td>

<td width='20%'><font color='<% = color2 %>'>

<form action='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel')%>&idUser2=<% = idUser2%>&command=change&nameSparte=<% = nameSparte%>' METHOD='Post'>

<input name='Stueckzahl' size='3' value='1'>

<input type='submit' size='3' value='&Auml;ndern'>

</form>

</font>

</td>

</tr>

<tr>

<td width='20%'><font color='<% = color2 %>'>Einzelpreis: <% = RS('euroPriceArtikel') %> Euro</font></td>

<td width='20%'><font color='<% = color2 %>'><% = RS('Bestellsumme') %> Euro gesamt</font></td>

<td width='20%'><a href='details.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel')%>&idUser2=<% = idUser2%>&nameSparte=<% = nameSparte %>' target='_blank'><font color='<% = color2 %>'>Mehr Info</font></a></td>

<td width='20%'></td>

<td width='20%'><font color='<% = color2 %>'>

<form action='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=<% = RS('idArtikel')%>&idUser2=<% = idUser2%>&command=delete&nameSparte=<% = nameSparte%>' METHOD='Post'>

<input type='submit' size='2' value='Artikel streichen'>

</form>

</font>

</td>

</tr>

</font>

</table>

<% IF ZaehlerD='0' THEN

ZaehlerD='1'

ELSEIF ZaehlerD='1' THEN

ZaehlerD='0'

END IF %>

<% ZaehlerB=RS('Bestellsumme') %>

<% ZaehlerA=ZaehlerA+ZaehlerB %>

<% ZaehlerC=ZaehlerC+1 %>

<% RS.MoveNext %>

<% Loop %>

<table width='100%' background='../images/stylesbg.jpg'>

<tr>

<td width='20%'><font color='white'><strong><% = ZaehlerC %> Artikel</strong></font></td>

<td width='20%'><font color='white'><strong><% = ZaehlerA %> Euro gesamt</strong></font></td>

<td width='20%'><font color='white'><strong><% = Round(ZaehlerA*13.7603,2) %> ATS gesamt</strong></font></td>

<td width='20%'><font color='white'><strong>

<form action='warenkorb.asp?idSession2=<% = idSession2%>&Artikel=alle&idUser2=<% = idUser2%>&command=delete&nameSparte=<% = nameSparte%>' METHOD='Post'>

<input type='submit' size='3' value='Liste l&ouml;schen'>

</form>

</strong></font>

</td>

<td width='20%'><font color='white'><strong>

<form action='bestellen.asp?idSession2=<% = idSession2%>&idUser2=<% = idUser2%>' METHOD='Post'>

<input type='hidden' name='command' value='bestellen'>

<input type='submit' size='3' value='Bestellen!'>

</form>

</strong></font>

</td>

</tr>

</table>

<% RS.Close %>

<% END IF %>

</body>

</html>

<%

idConn.Close

%>

bestellen.asp

<!-- #include file='../universalskripts/idConnection.inc' -->

<link rel='stylesheet' type='text/css' href='../universalskripts/default.css'>

<!-- #include file='../styles.inc' -->

<% command = Request.Form('command') %>

<% IF command='' OR IsNull(command) THEN command = Request.QueryString('command') END IF %>

<% Anmeldung = Request.Form('anmeldung') %>

<% IF Anmeldung='' OR IsNull('Anmeldung') THEN Anmeldung = Request.QueryString('Anmeldung') %>

<% EName = Request.Form('EName') %>

<% IF EName='' OR IsNull(EName) THEN EName = Request.QueryString('EName') END IF %>

<% Passwort = Request.Form('Passwort') %>

Hier werden bereits ziemlich viele Daten abgefragt, sogar auf 2 verschiedene Arten - da die Seite eigentlich verschiedene Seiten in sich vereint und daher immer wieder neu unter anderen Bedingungen geladen werden muß, kommt es vor, daß Daten auf verschiedene Arten übergeben werden - eben entweder per QueryString oder per Formular.

<html>

<head>

<title>

Anmelden/Bestellen

</title>

Hier dieselbe Funktion (Reload der Seite) mit verschiedenen Parametern. Sie werden von den unterschiedlichsten Stellen der Seite her aufgerufen und sind je nach Bedarf bezüglich der zu übergebenden Parameter abgestimmt. Der Name nonameorpass rührt daher, daß wir am Anfang auf das Problem stießen, daß falls der Anwender keinen Namen oder Paßwort angibt die Seite erneut geladen wird und der Anwender so quasi zur Eingabe gezwungen wird, da er sonst nie zu einer anderen Seite kommt. Daß wir diese Funktion später so intensiv anwenden würden ahnten wir hier noch nicht.

<script language='javascript'>

function nonameorpass()


function nonameorpass2()


function nonameorpass3()


function nonameorpass4()


function nonameorpass5()


function nonameorpass6()


</script>

</head>

<body><font color='white'>

<%

Dies ist eine Select-Case-Struktur - eigentlich nichts anderes als eine bessere Struktur für einen vielverzweigten IF-Befehl. Syntax: Select Case Variable | Case Variableninhalt | Case Variableninhalt2 | Case .. | End Select

SELECT CASE command

CASE 'bestellen' %>

Der CASE bestellen ist true wenn man direkt von der warenkorb.asp kommt, dann wird genau jener Teil angezeigt, der in der Struktur an dieser Stelle steht.

<br><br><br><br><br>

<form action='bestellen.asp?idSession2=<% = idSession2 %>&idUser2=<% = idUser2 %>' METHOD='POST'>

Man beachte: Hier wird die Reload-Funktion nonameorpass noch nicht benötigt, da ein Neuladen vom User angefordert werden muß - die Funktion wird notwendig wenn selbständig ein neuer Teil der Seite aufgerufen werden soll.

<input type='hidden' name='command' value='bestellen2'>

<table align='left' border bgcolor='forestgreen' border='5' bordercolor='yellow' borderlightcolor='#FFFF11' borderdarkcolor='gray' cellpadding='5' width=' '>

<tr><td>Name:</td><td><input type='text' name='EName' value=''></td></tr>

<tr><td>Passwort:</td><td><input type='password' name='passwort' value=''></td></tr>

<tr><td><input type='radio' name='anmeldung' value='neu' checked>Neu anmelden</td><td valign='middle' align='center' rowspan='3'><input type='submit' value='Anmelden'></td></tr>

<tr><td><input type='radio' name='anmeldung' value='bestehend'>Bestehendes Konto</td></tr>

<tr><td><input type='radio' name='anmeldung' value='aendern'>Konto &auml;ndern</td></tr>

</table>

</form>

<table width='50%' border='0'><tr><td width='10%'></td><td width='80%'>

Diese Textarea verursacht mit Netscape grafische Probleme, sie wird nicht als solche erkannt. Überhaupt ist diese Seite vom grafischen Aufbau her besser für den IE geeignet.

<textarea cols=30 rows=11>

s +++++ HILFE +++++ ?

Bevor Sie wirklich endg&uuml;ltig bestellen k&ouml;nnen m&uuml;ssen Sie sich noch authentifizieren.

Wenn Sie ein neuer Kunde sind geben Sie bitte einfach den gew&uuml;nschten Usernamen und das gew&uuml;nschte Pa&szlig;wort ein und w&auml;hlen Sie die Option 'Neu anmelden'.

Wenn Sie bereits ein Konto bei uns besitzen, so loggen Sie sich einfach mit dem &uuml;blichen Namen und Pa&szlig;wort ein und w&auml;hlen Sie die Option 'Bestehendes Konto'.

Wenn Sie bereits ein Konto haben, aber etwas um&auml;ndern m&ouml;chten, so geben Sie bitte Ihren &uuml;blichen Namen und Pa&szlig;wort ein und w&auml;hlen Sie die Option 'Konto &auml;ndern'.

</textarea>

</td><td width='10%'></td></tr></table>

<br clear=all>



<% CASE 'bestellen2' %>

<% IF EName='' or IsNull(EName) or Passwort='' or IsNull(Passwort) THEN %>

<script language='JavaScript'>

alert('Sie müssen sowohl einen Namen als auch ein Paßwort eingeben')

nonameorpass4()

</script>

<% END IF %>

Hier sehen wir erstmals die Notwendigkeit der Funktion - wenn der User Namen oder Passwort nicht eingibt soll die Seite automatisch neu geladen werden, und zwar der erste Teil der Seite, damit der User die Daten nochmals eingeben kann.

<%

Hier finden wir einen weiteren interessanten Punkt: Eine Select-Case-Struktur innerhalb einer Select-Case-Struktur - nicht verwirren lassen!

Diese Struktur zeigt entweder die Daten eines bereits erstellten Kontos, oder nur ein leeres Formular an - das hängt davon ab welche Option der User im ersten Teil der Seite gewählt hat. Natürlich gibt es auch hier wieder Bedingungen - etwa wenn der User einen Namen auswählt der bereits vergeben ist, oder ein falsches Passwort eingibt.

Geht alles gut so kann der User entweder seine Daten eingeben, überprüfen, oder ändern.

SELECT CASE Anmeldung

CASE 'neu'

%>

<%

RS.Open 'SELECT * From Kunden WHERE nameKunde=' & ''' & EName & ''', idConn

IF NOT RS.EOF THEN

RS.Close %>

<script language='JavaScript'>

alert('Bitte wählen Sie einen anderen Namen - Ihr Name ist bereits vergeben')

nonameorpass4()

</script>

<% END IF

RS.Close

RS.Open 'INSERT INTO Kunden (nameKunde,passKunde) Values (' & ''' & EName & ''' & ',' & ''' & Passwort & ''' & ')', idConn

%>

<br><br>

<font size='+2'>

Vielen Dank f&uuml;r Ihre Anmeldung <b><% = EName %></b> :-)) <br>

Wir bitten Sie noch folgende Details anzugeben bevor die Bestellung durchgef&uuml;hrt werden kann.

</font>

<form action='bestellen.asp?idSession2=<% = idSession2 %>&idUser2=<% = idUser2 %>' METHOD='POST'>

<input type='hidden' name='command' value='bestellen22'>

<input type='hidden' name='EName' value='<%=EName%>'>

<table width='70%'>

<tr><td><font size='+1' color='white'>Ihre Firma:</font></td><td><input size='20' type='text' name='Firma' value=''></td></tr>

<tr><td><font size='+1' color='white'>Stra&szlig;e</font></td><td><input size='20' type='text' name='Street' value=''></td></tr>

<tr><td><font size='+1' color='white'>PLZ/Ort</font></td><td><input size='5' type='text' name='PLZ' value=''>&nbsp;&nbsp;<input size='12' type='text' name='Ort' value=''></td></tr>

<tr><td><font size='+1' color='white'>Staat</font></td><td><input size='20' type='text' name='Staat' value=''></td></tr>

<tr><td><font size='+1' color='white'>Telefon:</font></td><td><input size='20' type='text' name='Telefon' value=''></td></tr>

<tr><td><font size='+1' color='white'>Fax:</font></td><td><input size='20' type='text' name='Fax' value=''></td></tr>

<tr><td><font size='+1' color='white'>E-mail Addy:</font></td><td><input size='20' type='text' name='Addy' value=''></td></tr>

</table>

<br>

<table>

<tr><td colspan='2' align='left'><input type='submit' size='30' value='Info absenden'></td></tr>

</table>

</form>

<%

CASE 'bestehend'

RS.Open 'SELECT * From Kunden WHERE nameKunde=' & ''' & EName & ''', idConn

IF RS.EOF  THEN %>

<script language='JavaScript'>

alert('Sie haben sich entweder vertippt, oder zuvor noch nicht angemeldet - bitte überprüfen Sie Ihre Eingaben')

nonameorpass4()

</script>

<% END IF %>

<%

RS.Close

RS.Open 'Select * From Kunden WHERE nameKunde=' & ''' & EName & ''', idConn %>

<% Firma = RS('compKunde')

Street = RS('streetKunde')

PLZ = RS('zipKunde')

Ort = RS('cityKunde')

Staat = RS('countryKunde')

Telefon = RS('phoneKunde')

Fax = RS('faxKunde')

Addy = RS('emailKunde')

%>

<br><br>

<font size='+2'>

&Uuml;berpr&uuml;fen Sie bitte Ihre Einstellungen - falls alles stimmt dr&uuml;cken Sie bitte weiter.

</font>

<br><br>

<form action='bestellen.asp?idSession2=<% = idSession2 %>&idUser2=<% = idUser2 %>' METHOD='POST'>

<input type='hidden' name='command' value='bestellen23'>

<input type='hidden' name='EName' value='<% = EName %>'>

<table width='70%'>

<tr><td><font size='+1' color='white'>Ihre Firma:</font></td><td><input size='20' type='text' name='Firma' value='<% = Firma %>'></td></tr>

<tr><td><font size='+1' color='white'>Stra&szlig;e</font></td><td><input size='20' type='text' name='Street' value='<% =Street%>'></td></tr>

<tr><td><font size='+1' color='white'>PLZ/Ort</font></td><td><input size='5' type='text' name='PLZ' value='<%=PLZ%>'>&nbsp;&nbsp;<input size='12' type='text' name='Ort' value='<%=Ort%>'></td></tr>

<tr><td><font size='+1' color='white'>Staat</font></td><td><input size='20' type='text' name='Staat' value='<%=Staat%>'></td></tr>

<tr><td><font size='+1' color='white'>Telefon:</font></td><td><input size='20' type='text' name='Telefon' value='<%=Telefon%>'></td></tr>

<tr><td><font size='+1' color='white'>Fax:</font></td><td><input size='20' type='text' name='Fax' value='<%=Fax%>'></td></tr>

<tr><td><font size='+1' color='white'>E-mail Addy:</font></td><td><input size='20' type='text' name='Addy' value='<%=Addy%>'></td></tr>

</table>

<br>

<table width='70%'>

<tr><td width='1%'><input type='submit' size='30' value='&Auml;ndern!'></td>

</form>

<form action='bestellen.asp?idSession2=<% = idSession2 %>&idUser2=<% = idUser2 %>' Method='Post'>

<input type='hidden' name='command' value='bestellen4'>

<input type='hidden' name='EName' value='<% = EName %>'>

<td><input type='submit' size='30' value='Weiter'></td></tr>

</table>

</form>

<%

CASE 'aendern'

RS.Open 'SELECT * From Kunden WHERE nameKunde=' & ''' & EName & ''' & 'AND passKunde=' & ''' & Passwort & ''', idConn

IF RS.EOF  THEN %>

<% RS.Close %>

<script language='JavaScript'>

alert('Sie haben sich entweder vertippt, oder zuvor noch nicht angemeldet - bitte überprüfen Sie Ihre Eingaben')

nonameorpass4()

</script>

<% END IF %>

<% Firma = RS('compKunde')

Street = RS('streetKunde')

PLZ = RS('zipKunde')

Ort = RS('cityKunde')

Staat = RS('countryKunde')

Telefon = RS('phoneKunde')

Fax = RS('faxKunde')

Addy = RS('emailKunde')

%>

<br><br>

<font size='+2'>Hier k&ouml;nnen Sie Ihre pers&ouml;nlichen Daten beliebig um&auml;ndern. Falls Sie es sich doch noch anders &uuml;berlegt haben dr&uuml;cken Sie einfach weiter. </font>

<form action='bestellen.asp?idSession2=<% = idSession2 %>&idUser2=<% = idUser2 %>' METHOD='POST'>

<input type='hidden' name='command' value='bestellen23'>

<input type='hidden' name='EName' value='<% = EName %>'>

<table width='70%'>

<tr><td><font size='+1' color='white'>Ihre Firma:</font></td><td><input size='20' type='text' name='Firma' value='<% = Firma %>'></td></tr>

<tr><td><font size='+1' color='white'>Stra&szlig;e</font></td><td><input size='20' type='text' name='Street' value='<% =Street%>'></td></tr>

<tr><td><font size='+1' color='white'>PLZ/Ort</font></td><td><input size='5' type='text' name='PLZ' value='<%=PLZ%>'>&nbsp;&nbsp;<input size='12' type='text' name='Ort' value='<%=Ort%>'></td></tr>

<tr><td><font size='+1' color='white'>Staat</font></td><td><input size='20' type='text' name='Staat' value='<%=Staat%>'></td></tr>

<tr><td><font size='+1' color='white'>Telefon:</font></td><td><input size='20' type='text' name='Telefon' value='<%=Telefon%>'></td></tr>

<tr><td><font size='+1' color='white'>Fax:</font></td><td><input size='20' type='text' name='Fax' value='<%=Fax%>'></td></tr>

<tr><td><font size='+1' color='white'>E-mail Addy:</font></td><td><input size='20' type='text' name='Addy' value='<%=Addy%>'></td></tr>

</table>

<br>

<table width='70%'>

<tr><td width='1%'><input type='submit' size='30' value='&Auml;ndern!'></td>

</form>

<form action='bestellen.asp?idSession2=<% = idSession2 %>&idUser2=<% = idUser2 %>' Method='Post'>

<input type='hidden' name='command' value='bestellen4'>

<input type='hidden' name='EName' value='<% = EName %>'>

<td><input type='submit' size='30' value='Weiter'></td></tr>

</table>

</form>

<% RS.Close

END SELECT %>

CASE bestellen22 bzw 23 unterscheiden sich nur dadurch, daß im Falle einer Fehleingabe der User zu verschiedenen Seiten zurückgeleitet wird.

Andert der User seine Daten werden sie aktualisiert und zur Überprüfung erneut angezeigt - dieser Kreislauf währt so lange bis der User mit seinen Daten zufrieden ist und auf 'weiter' klickt.

Hier findet sich auch leider das letzte Problem dieser Applikation - beim MS IE werden die Daten bei einer Anderung zwar in die Tabelle eingetragen, aber dann falsch angezeigt. Dies geschieht obwohl die Daten richtig in der Tabelle stehen und der Browser die Daten eigentlich aus der Tabelle holen sollte - das tut er leider nicht, der Browser merkt sich die alten Daten, bemerkt nicht daß sich etwas verändert hat und zeigt die alten Daten an um Zeit zu sparen - klickt man auf 'Aktualisieren' zeigt der Browser die richtigen Daten an.

Der Netscape Navigator (getestet mit Version 4.7) macht hier keine Probleme, es werden alle Daten richtig zur Anzeige gebracht.



Referate über:


Datenschutz




Copyright © 2024 - Alle Rechte vorbehalten
AZreferate.com
Verwenden sie diese referate ihre eigene arbeit zu schaffen. Kopieren oder herunterladen nicht einfach diese
# Hauptseite # Kontact / Impressum