Benutzung der InputBox-Funktion
Das Benutzen von HTML-Formularen
3
Nahezu alle Web-Applikationen kommunizieren und interagieren mit Anwendern, die eine Web-Site besuchen. Manchmal ist diese Form der Interaktion indirekt. Dies ist beispielsweise so, wenn Sie eine Web-Site in Abhängigkeit von der Tageszeit mit »Good Morning« oder »Good Evening« begrüßt. Die dynamische und interaktive Natur von Web-Seiten ist nicht immer auf den ersten Blick erkennbar und offenkundig, da der Anwender keine speziellen Web-Applikationen ausführen muß. Auf der anderen Seite kann die Interaktion zwischen einer Web-Applikation und dem Anwender sehr direkte und erkennbare Formen annehmen - bestes Beispiel dafür sind elektronische Zahlungssysteme im Internet.
In diesem Kapitel lernen Sie, wie ASP-Applikationen mit Anwendern via ActiveX-Steuerungen, Nachrichten-Boxen, Eingabe-Boxen, HTML-Formularen und natürlich HTML-Text kommunizieren. Am Ende des Kapitels sind Sie in der Lage, interaktive ASP-Applikationen zu erstellen, die Ihnen eine neue Qualität in Sachen Web-Seite ermöglichen.
Es besteht jedoch kein Grund zur Panik, wenn Sie einen derartigen Web-Browser haben sollten, da ASP-Applikationen auch über HTML-Formulare mit Anwendern agieren können.
Es gibt verschiedene Wege, wie ASP-Applikationen einen User-Input erzielen können. In Abhängigkeit von den entsprechenden Applikationen und Umständen stehen folgende Methoden zur Verfügung:
Die Funktion InputBox wird von einer Client-seitigen VBScript-Subroutine angezeigt. Dies resultiert aus der Tatsache, daß diese Funktion ein Feature von VBScript ist. Deshalb sollten Sie darauf achten, daß Ihr Web-Browser VBScript unterstützt, bevor Sie die Funktion verwenden. Die InputBox-Funktion verlangt vom Anwender eine Eingabe über eine Dialog-Box mit einem Daten-Eingabefeld. Die Syntax lautet wie folgt:
InputBox (<Prompt>,<Title>,<Default>,<X>,<Y>)
Die Argument in den Klammern haben folgende Funktionen:
Benutzung der InputBox-Funktion
Listing 3.1 demonstriert, wie eine ASP-Applikation eine Eingabe mittels der InputBox-Funktion verlangt. Im folgenden Beispiel verlangt diese Funktion die Eingabe eine User-Namens und die Höhe eines zu zeichnenden Baumes.
Listing 3.1: Die InputBox-Funktion verlangt vom Anwender eine Eingabe
1: <%@ LANGUAGE="VBSCRIPT" %>
2: <SCRIPT LANGUAGE="VBSCRIPT" RUNAT=SERVER>
3: Sub DrawTree ()
4:
5: TreeHeight = Request.QueryString("TreeHeight")
6: UserInput = Request.QueryString("Name")
7:
8: Response.Write "<PRE>"
9: For LoopCountVariable = 0 To (TreeHeight - 1)
10: Response.Write "Hello " & UserInput & "!"
11: For AsterisksCountVariable = 0 To
(TreeHeight-LoopCountVariable)
12: Response.Write " "
13: Next
14: For AsterisksCountVariable = 0 To (LoopCountVariable*2)
15: Response.Write "*"
16: Next
17: Response.Write "<BR>"
18: Next
19: For LineCountVariable = 0 To ((TreeHeight / 3) - 1)
20: For SpaceCountVariable = 0 To ( 7 + Len(UserInput) +
(TreeHeight))
21: Response.Write " "
22: Next
23: Response.Write "***<BR>"
24: Next
25: Response.Write "</PRE><HR>"
26: Response.Write "<A HREF=InputBox.asp>Click here to start over.
</A>"
27:
28: End Sub
29: </SCRIPT>
30: <HTML>
31: <HEAD>
32: <META NAME="GENERATOR" Content="Microsoft Visual InterDev 1.0">
33: <META HTTP-EQUIV="Content-Type" content="text/html;
charset=iso-8859-1">
34: <TITLE>Using The InputBox Function For User Input</TITLE>
35: </HEAD>
36: <BODY BGCOLOR="FFFFFF">
37: <B>
38:
39: <%
40: If NOT (IsEmpty(Request.QueryString("TreeHeight"))) Then
41: Call DrawTree
42: Else %>
43: <FORM ACTION="InputBox.asp" METHOD="GET" NAME="DataForm">
44: <INPUT TYPE=HIDDEN NAME="Name">
45: <INPUT TYPE=HIDDEN NAME="TreeHeight">
46: </FORM>
47: <SCRIPT LANGUAGE="VBScript">
48: <!--
49:
50: Sub window_onLoad()
51:
52: Name = InputBox ("Please enter your name and press enter", _
53: "The InputBox function is used to obtain your name", _
54: "Please type your name here", 300, 200)
55: Do
56: TreeHeight = InputBox ("Please enter the height of your tree", _
57: "Please enter the height of your tree (1-20)", _
58: "Please type the height of your tree
here",200,200)
59: If NOT((TreeHeight>=1) AND (TreeHeight<=20)) Then
60: MsgBox "Please enter a height between 1 and 20."
61: End If
62: Loop Until ((TreeHeight>=1) AND (TreeHeight<=20))
63:
64: DataForm.Name.value=Name
65: DataForm.TreeHeight.value=TreeHeight
66: DataForm.Submit
67:
68: end sub
69: -->
70: </SCRIPT>
71: <%
72: End If
73: %>
74:
75: </B>
76: </BODY>
77: </HTML>
Die VBScript-Subroutine windows_onLoad wird immer ausgeführt, bevor der Anwender die Elemente einer Web-Seite manipulieren kann. Deshalb sollte InputBox innerhalb dieser Subroutine plaziert werden, wie aus Zeile 50 des Listings 3.1 zu ersehen ist. Dies hat den Effekt, daß sämtliche Input-Boxen angezeigt werden, sobald die Web-Seite geladen wird. |
Sobald die Web-Seite aus Listing 3.1 aufgerufen wurde, zeigt diese die Eingabe-Box aus Abbildung 3.1 an und fragt nach dem Namen des Users. Die Eingabe-Box wird in den Zeilen 52 bis 54 in Listing 3.1 erstellt.
Abbildung 3.1: |
Nachdem Sie den Namen eingegeben und OK betätigt haben, erscheint die Eingabebox aus Abbildung 3.2. Diese fragt Sie nach der Höhe des zu erstellenden Baumes. Die Zeilen 56 bis 58 übernehmen diese Aufgabe.
Abbildung 3.2: |
Die Do...Loop Until-Struktur (Zeilen 55 bis 62) stellt sicher, daß der Wert zwischen 1 und 20 liegt. Sobald ein ungültiger Wert eingegeben wird, warnt Sie eine Message-Box (siehe Abbildung 3.3), und der Anwender muß einen neuen Wert eingeben.
Abbildung 3.3: |
Nachdem alle Eingaben getätigt wurden, generiert die ASP-Applikation die Web-Seite (siehe Abbildung 3.4).
Die ASP-Applikation aus Listing 3.1 demonstriert die Benutzung der InputBox-Funktion zur Eingabe von Werten. Die Zeilen 64 bis 66 aus Listing 3.1 füllen die Variablen mit Werten, die im Anschluß daran an die ASP-Applikation übergeben werden. Die beiden HTML-Form-Variablen, welche den Benutzernamen und die Baumhöhe transferieren, definieren die Zeilen 44 und 45 als verdeckte Variablen. Dieser Trick wird dazu benutzt, um Informationen an die ASP-Applikation zu übertragen, wenn die Informationen nicht direkt aus einer HTML-Form kommen. Sie haben dann die Möglichkeit, versteckte Variablen zu deklarieren und diese zur ASP-Applikation zu senden.
Abbildung 3.4: |
Obwohl der Einsatz der MsgBox-Funktion auf den ersten Blick etwas kompliziert erscheint, verleiht Sie Ihren ASP-Applikationen doch einen professionellen Touch. Der Sinn dieser Funktion ist es, eine Message-Box anzuzeigen. Die Syntax lautet wie folgt:
MsgBox <MessageBoxPrompt>,<ButtonStyle>,<Title>
Ersetzen Sie <MessageBoxPrompt> durch den Prompt der Message-Box und <Title> durch den Titel der Message-Box. Indem Sie <ButtonStyle> durch die Werte aus Tabelle 3.1 ersetzen, können Sie die Message-Box Ihren Gegebenheiten anpassen. So können Sie beispielsweise eine OK-Dialogbox mit einem Warnhinweis-Symbol versehen, indem Sie <ButtonStyle> den Wert 48 zuweisen. Beide Parameter - <ButtonStyle> und <Title> - sind optionale Argumente.
Die MsgBox-Funktion ist ein Feature von VBScript, das nur funktioniert, wenn Ihr Browser VBScript unterstützt. |
Tabelle 3.1: Die Message-Box-Codes
Schaltflächen-Typ |
Schaltflächen-Beschreibung |
0 |
OK |
1 |
OK und Cancel |
2 |
Abort, Retry und Ignore |
3 |
Yes, No und Cancel |
4 |
Yes und No |
5 |
Retry und Cancel |
16 |
Symbol für Critical Message (Abbildung 3.5) |
32 |
Symbol für Warning Query (Abbildung 3.6) |
48 |
Symbol für Warning Message (Abbildung 3.7) |
64 |
Symbol für Information Message (Abbildung 3.8) |
256 |
Die zweite Schaltfläche ist Default-Einstellung |
512 |
Die dritte Schaltfläche ist Default-Einstellung |
4096 |
Die Message-Box erscheint immer im Vordergrund, bis der Anwender auf die Message-Box reagiert |
Die Abbildungen 3.5 bis 3.8 zeigen die verschiedenen Typen von Message-Boxen an, die Sie mittels der MsgBox-Funktion erstellen können.
Abbildung 3.5: |
Abbildung 3.6: |
Abbildung 3.7: |
Abbildung 3.8: |
Die Applikation aus Listing 3.2 demonstriert, wie eine ASP-Applikation eine Message-Box auf dem Desktop des Anwenders ausgibt. ASP-Applikationen benutzen die MsgBox-Funktion, um dem Anwender systemkritische Informationen anzuzeigen. Die Applikation aus dem folgenden Beispiel zeigt Ihnen, wie Sie dem Web-Surfer mitteilen können, daß die Informationen, die er sieht, vertraulich sind (siehe Abbildung 3.9).
Listing 3.2: Die MsgBox-Funktion wird von einer ASP-Applikation benutzt
1: <%@ LANGUAGE="VBSCRIPT" %>
2:
3: <SCRIPT LANGUAGE="VBScript">
4: <!--
5:
6: Sub window_onLoad()
7:
8: MsgBox "The information you are about to see is confidential!", _
9: 16 ,"Confidential information - keep it private!"
10:
11: end sub
12: -->
13: </SCRIPT>
14:
15: <HTML>
16: <HEAD>
17: <META NAME="GENERATOR" Content="Microsoft Visual InterDev 1.0">
18: <META HTTP-EQUIV="Content-Type" content="text/html;
charset=iso-8859-1">
19: <TITLE>Using The MsgBox Function</TITLE>
20: </HEAD>
21: <BODY BGCOLOR="FFFFFF">
22:
23: <H1>Confidential information goes here!</H1>
24:
25: </BODY>
26: </HTML>
Es gibt eine Vielzahl praktischer Applikationen, die auf der MsgBox-Funktion basieren. Die allseits bekannten Abort-, Retry-, oder Ignore-Message-Boxen basieren allesamt auf dieser Funktion.
Abbildung 3.9: |
Das Benutzen von HTML-Formularen
Sämtliche am Markt verfügbaren Web-Browser unterstützen HTML-Formulare, so daß ASP-Applikationen HTML-Formulare benutzen können, um mit den verschiedensten Anwendern zu kommunizieren, welche die entsprechenden Web-Sites besuchen. Die Applikation aus Listing 3.3 demonstriert, wie eine ASP-Applikation mittels HTML-Formularen mit Anwendern zu kommunizieren in der Lage ist. Eine ASP-Applikation ist in der Lage, durch den Einsatz der Methode Request.QueryString festzustellen, welchen Wert eine Variable eines HTML-Formulars hat. Ein kleines Beispiel: Reuest.QueryString("name") gibt den Wert der Variablen "name" zurück.
Listing 3.3: Eine ASP-Applikation, die ein HTML-Formular zur Dateneingabe benutzt
1: <%@ LANGUAGE="VBSCRIPT" %>
2:
3: <HTML>
4: <HEAD>
5: <META NAME="GENERATOR" Content="Microsoft Visual InterDev 1.0">
6: <META HTTP-EQUIV="Content-Type" content="text/html;
charset=iso-8859-1">
7: <TITLE>Using An HTML Form For Data Entry</TITLE>
8: </HEAD>
9: <BODY>
10:
11: <H1>
12: <%
13: If NOT (IsEmpty(Request.QueryString("Name"))) Then
14: Response.Write ("Hi " & Request.QueryString("Name") )
15: Else %>
16: Please enter your name <BR>
17: <FORM ACTION="HTMLFormInput.asp" METHOD="GET" NAME="DataForm">
18: <INPUT TYPE=Text NAME="Name" Size="35"
19: VALUE="Please enter your name here">
20: <INPUT TYPE="SUBMIT" VALUE="Submit name to ASP
application">
21: </FORM>
22: <%
23: End If
24: %>
25: </H1>
26:
27: </BODY>
28: </HTML>
Es zeugt von gutem Programmierstil, wenn Sie dem Anwender Default-Werte zur Verfügung stellen. |
Sobald die Applikation aus Listing 3.3 gestartet wird, wird die Web-Seite aus Abbildung 3.10 angezeigt. Das Formular innerhalb dieser Web-Seite ist mit einer ASP-Applikation verbunden, die das HTML-Formular generiert. Nachdem die Schaltfläche Submit name to ASP application betätigt wird, überträgt die Applikation den Namen in der Textbox zur ASP-Applikation.
Anschließend generiert die ASP-Applikation die folgende Web-Seite (siehe Abbildung 3.11).
Abbildung 3.10: |
Abbildung 3.11: |
ActiveX-Controls im Einsatz
Web-Browser, die ActiveX unterstützen (und das sind die meisten), können ActiveX-Steuerungen (Controls) benutzen, um Eingaben vom Anwender an eine ASP-Applikation zu übergeben. Die Applikation aus Listing 3.4 demonstriert, wie ActiveX-Steuerungen und ASP-Applikationen miteinander arbeiten. Da ActiveX-Steuerungen nicht direkt von HTML-Formularen unterstützt werden, bedarf es eines kleinen Tricks, um eine Datenübergabe an die ASP-Applikation zu initiieren. Sobald die Information aus dem Eingabefeld zum Versand an die ASP-Applikation bereit ist, kopiert eine VBScript-Subroutine die Werte der ActiveX-Steuerung zu einer versteckten HTML-Formular-Variablen. Ist dies geschehen, so ist das HTML-Formular mit der ASP-Applikation verbunden.
Listing 3.4: Eine ASP-Applikation, die ActiveX-Controls zur Dateneingabe benutzt
1: <%@ LANGUAGE="VBSCRIPT" %>
2:
3: <SCRIPT LANGUAGE="VBScript">
4: <!--
5: Sub SubmitButton_onClick()
6:
7: DataForm.Name.value=UserName.Value
8: DataForm.Submit
9:
10: end sub
11: -->
12: </SCRIPT>
13:
14: <HTML>
15: <HEAD>
16: <META NAME="GENERATOR" Content="Microsoft Visual InterDev 1.0">
17: <META HTTP-EQUIV="Content-Type" content="text/html;
charset=iso-8859-1">
18: <TITLE>Using ActiveX Controls For Data Entry</TITLE>
19: </HEAD>
20: <BODY BGCOLOR=FFFFFF>
21:
22: <H1>
23: <%
24: If NOT (IsEmpty(Request.QueryString("Name"))) Then
25: Response.Write ("Hi " & Request.QueryString("Name") )
26: Else %>
27: Please enter your name <BR>
28: <OBJECT ID="UserName" WIDTH=300 HEIGHT=37
29: CLASSID="CLSID:8BD21D10-EC42-11CE-9E0D-00AA006002F3">
30: <PARAM NAME="VariousPropertyBits" VALUE="746604571">
31: <PARAM NAME="BackColor" VALUE="8454143">
32: <PARAM NAME="Size" VALUE="7938;979">
33: <PARAM NAME="Value" VALUE="Please type your name here">
34: <PARAM NAME="BorderColor" VALUE="0">
35: <PARAM NAME="FontName" VALUE="Comic Sans MS">
36: <PARAM NAME="FontHeight" VALUE="315">
37: <PARAM NAME="FontCharSet" VALUE="0">
38: <PARAM NAME="FontPitchAndFamily" VALUE="2">
39: </OBJECT>
40: <FORM ACTION="ActiveXInput.asp" METHOD="GET"
41: NAME="DataForm">
42: <INPUT TYPE=HIDDEN NAME="Name">
43: <INPUT TYPE=Button Name=SubmitButton
44: VALUE="Submit name to ASP application">
45: </FORM>
46: <%
47: End If
48: %>
49: </H1>
50:
51: </BODY>
52: </HTML>
Sobald die Applikation aus Listing 3.4 gestartet wurde, erscheint die Web-Seite aus Abbildung 3.12. Die ASP-Applikation fordert den Anwender auf, seinen Namen einzugeben.
Die TextBox-Steuerung ist eine ActiveX-Steuerung, die im Internet Explorer enthalten ist. |
Abbildung 3.12: |
Nachdem die Schaltfläche Submit name to ASP application betätigt wurde, überträgt die Routine die Dateneingabe zur ASP-Applikation. Die Zeile 7 des Listing 3.4 kopiert den Wert, welcher vom Anwender eingegeben wurde, zu einem verdeckten HTML-Formularfeld. Die ASP-Applikation generiert im Anschluß daran die in Abbildung 3.13 gezeigte Bildschirmausgabe.
Abbildung 3.13: |
Zusammenfassung
Nahezu alle Web-Applikationen kommunizieren mit Anwendern, um Informationen anzuzeigen bzw. weiterzuverarbeiten. In diesem Kapitel lernten Sie, wie Sie HTML, Message- und Input-Boxen, ActiveX-Steuerungen sowie HTML-Formularelemente benutzen, um mit Web-Reisenden zu kommunizieren. Verwenden Sie ActiveX-Steuerelemente dann, wenn die Internet-Besucher Web-Browser benutzen, die ActiveX und ActiveX-Steuerungen unterstützen.
Was kommt als nächstes?
Die Built-In-Objekte, die zusammen mit den Active Server Pages ausgeliefert werden, sind sehr hilfreich bei der Entwicklung von ASP-Applikationen. Im nächsten Kapitel lernen Sie die Objekte Application, Request, Response, Server und Session kennen, um ASP-Applikationen zu entwickeln.
Fragen und Antworten
Frage:
Wie kann eine ASP-Applikation Daten von einer User-Eingabe erhalten?
Antwort:
ASP-Applikationen sind in der Lage, User-Eingaben über Message-Boxen, Eingabe-Boxen, ActiveX-Steuerungen und HTML-Formularen zu bekommen.
Frage:
Ich bin nicht sicher, ob mein Web-Browser ActiveX oder VBScript unterstützt. Wie kann meine ASP-Applikation in diesem Fall Daten aus Anwender-Eingaben erhalten?
Antwort:
Alle Web-Browser sind in der Lage, HTML-Formulare zu verarbeiten. Ihre ASP-Applikation kann HTML-Formulare benutzen, um Daten an die ASP-Applikation zu senden.
Frage:
Wie kann ich Werte aus einer Input-Box an eine ASP-Applikation übergeben?
Antwort:
Eine VBScript-Subroutine ist in der Lage, Werte einer verdeckten HTML-Formular-Variablen zuzuweisen, um diese im Anschluß daran an die ASP-Applikation zu übergeben.
Aufgaben
1. Erstellen Sie eine ASP-Applikation, die zwei Message-Boxen benutzt, um zwei Zahlenwerte zu erhalten. Benutzen Sie die MsgBox-Funktion, um die Summe beider Zahlen anzuzeigen.
2. Fügen Sie ein ActiveX-Control der ASP-Applikation aus Aufgabe 1 hinzu, um den Namen des Users zu erfahren und ihn entsprechend zu begrüßen.
Ein Imprint des Markt&Technik Buch- und Software-Verlag GmbH.