Übliche
Position für ASP-Aufrufe im HTML-Dokument |
<html>
<head>
...
</head>
<body>
<%
Response.Write( "Hallo 1!" )
%>
<%
="Hallo 2!"
%>
...
</body>
</html>
|
<html> schließt
das gesamte HTML-Dokument ein.
<head> schließt den Header ein.
<body> schließt den Hauptteil ein.
ASP-Kommandos sind in <% ... %> eingeschlossen und befinden sich
meistens im Hauptteil.
Sie können auch in einer externen Datei enthalten sein, die per SSI-Include
eingebunden wird:
<!--#include file=incl.asp"-->
oder
<!--#include virtual=/inc/incl.asp"-->
file bezeichnet einen Pfad relativ zur aktuellen Datei, virtual einen virtuellen
Pfad. |
Einige
Konventionen und Operatoren |
'KommentarText |
Kommentare werden mit Hochkomma
begonnen. |
Response.Write(
_
"Hallo !" ) |
Der
Unterstrich '_' verbindet Zeilen (und darf
nicht in Namen benutzt werden). |
Dim
VariablenName
Dim ArrayName(11) |
Dim
deklariert Variablen (kann aber weggelassen
werden).
Arrays werden mit runden Klammern deklariert. Die Zählung beginnt
bei 0, der angegebene Index bezeichnet den höchstmöglichen Index,
es gibt also ein Element mehr als den angegebenen Wert. |
|
OPTION
EXPLICIT |
Damit
müssen Variablen mit Dim deklariert
werden. |
Set
objInstName = ...
Set objInstName = Nothing |
Set
deklariert Objekt-Instanzen (kann aber weggelassen
werden). Z.B.
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Mit Nothing wird die Objekt-Instanz wieder aus dem Speicher entfernt. Z.B.
Set fso = Nothing |
Function
funktionsname( parm )
...funktionsname = ...
|
End
Function Funktionen returnieren ein Ergebnis.
Der Rückgabewert muss dem Funktionsnamen zugewiesen werden. Die Parameter
werden in Klammern eingeschlossen. |
Sub
prozedurname1( parm )
...
End Sub
Sub prozedurname2 parm1 parm2
...
End Sub |
Prozeduren
returnieren kein Ergebnis.
Mehrere Parameter dürfen nicht in Klammern eingeschlossen werden.
Ein einzelner Parameter kann mit oder ohne Klammern übergeben werden. |
"",
vbTab |
Sonderzeichen: "" für ",
vbTab für Tabulator. Z.B.
Response.Write( vbTab & "--""--" ) |
& |
Addition
zweier Strings (+ geht auch). |
+,
-, *, /, \, Mod, ^ |
Arithmetische
Operatoren (\ = ganzzahlige Division, Mod
= Modulo, ^ = Exponent). |
=, <>, <, >, <=, >= |
Vergleichs-Operatoren
(= für Gleichheit, <> für
Ungleichheit). |
And,
Or, Xor, Not |
Logische
Operatoren. |
Verzweigungen und Schleifen
|
If
... Then ... Elseif ... Then ... Else ...
End If |
If
Else. |
Select
Case ...
Case ...
...
Case ...
...
...
Case Else
...
End Select |
Select
Case. |
|
For
Each ...
...
Next |
For
Each. |
For
x=1 To 10 ... Next For |
(ohne
Step wird um 1 erhöht). |
For
x=1 To 10 Step 2 ... Next |
For. |
While
...
...
Wend |
While. |
Do
While ...
...
Loop |
Do
While. |
Do
Until ...
...
Loop |
Do
Until. |
Einige
Daten und Funktionen |
len(
str ) |
Returniert
Länge des Strings str. |
InStr(
str, subStr )
InStrRev( str, subStr ) |
Returniert
Position des subStr in str.
InStrRev beginnt von hinten. |
Left( str, nAnzahl )
Mid( str, nStart, nAnzahl )
Mid( str, nStart )
Right( str, nAnzahl ) |
Returniert Teilstrings. |
Now,
Date, Time |
Datum
+ Uhrzeit, nur Datum, nur Uhrzeit (auf dem
Server).
Now+30 bedeutet: in 30 Tagen. |
Year(),
Month(), Day(), Weekday(),
Hour(), Minute(), Second() |
Einzelne
Zeitangaben eines Datumswertes, z.B.
Day(Now). |
|
DateDiff(
format, datum1, datum2 ) |
Differenz
zweier Datumwerte. Mit format wird die Rückgabe-Einheit
definiert: yyyy=Jahre, q=Quartale, m=Monate,
d=Tage, h=Stunden, m=Minuten, s=Sekunden.
Z.B.
DateDiff( "d", #01/01/2000#, Now ) |
Request...
Response... |
Request:
Anfrage-Daten vom Client.
Response: Ausgabe in HTML-Seite für Client. |
Request.ServerVariable( "..." )
Request.ServerVariable("SCRIPT_NAME")
Request.ServerVariable("HTTP_USER_AGENT") |
ServerVariable: Eine die Umgebungsvariablen beinhaltende Kollektion.
SCRIPT_NAME: Pfad + Name der aktuellen ASP-Datei.
HTTP_USER_AGENT: Client-Browser. |
Request.Form( "..." )
Request.QueryString( "..." ) |
Form:
Per POST (per HTTP) übergebene Formulareingaben
lesen.
QueryString: Per GET (per URL) übergebene Formulareingaben lesen. |
Response.Write( "..." )
="..." |
Textausgabe.
Die Kurzform (="...") funktioniert nur, wenn keine anderen ASP-Anweisungen
im <%...%>-Block sind. |
Response.Redirect( "andereseite.asp" ) |
Umleitung. Vorher darf es keine HTML-Ausgaben geben. |
Session( "..." )
= "..."
Request.Cookies...
Response.Cookies... |
In
der Kollektion Session können zu einem
bestimmten Benutzer gehörenden Daten
gespeichert werden (IDs, Name, Warenkorb,
...) (verwendet Cookies).
Z.B. Benutzername speichern:
Session("Benutzername") = Request.Form("Benutzername")
Z.B. Benutzername prüfen:
If Session("Benutzername") = "" Then ...
Die Kollectionen Request.Cookies und Response.Cookies bieten weitergehende
Möglichkeiten (Expires, Domain, Path). |
|
Set
fso = Server.CreateObject( _
"Scripting.FileSystemObject" )
Set dat = fso.OpenTextFile( _
Server.MapPath( _
"/dateiname.txt" ), _
opt, erstell )
dat.ReadAll
dat.ReadLine
dat.WriteLine
dat.Write
dat.Close
Set dat = Nothing
Set fso = Nothing |
Dateizugriff.
OpenTextFile erwartet den physikalischen Pfad (z.B. c:\INetPub\WwwRoot\Datei.txt).
Ein virtueller kann mit Server.MapPath umgewandelt werden.
Als zweiter Parameter wird der Öffnungs-Modus übergeben: 1=Lesen,
2=Schreiben, 8=Anhängen.
Fehlt der dritte Parameter und soll in die Datei geschrieben werden, gibt
es eine Fehlermeldung, wenn sie noch nicht existiert. Ist der dritte Parameter
True wird in diesem Fall eine neue Datei erstellt. |
Alle Formulardaten anzeigen |
<html><body><table>
<tr><td>Name</td><td>Wert</td></tr>
<%
For Each element in Request.Form
%>
<tr>
<td><% =element %></td>
<td><% =Request.Form(element) %></td>
</tr>
<%
Next
%>
</table></body></html> |
Diese
ASP-Datei muss von der das Formular enthaltenden
HTML-Seite aufgerufen werden mit:
<form action="formulardatenanzeige.asp" method="post"> |
Formulardaten überprüfen |
<%
name = True
sprache = True
If Request.Form("Versand") = _
"Abschicken" Then
If Request.Form("Vorname") = "" Then _
name = False End If
If Request.Form("Sprache") = "" Then _
sprache = False End If
If (name AND sprache) = True Then
Response.Redirect("danke.asp")
End If
End If
%>
<html>
<body>
<%
If (name AND sprache) = False Then
%>
<p>Bitte füllen Sie alle Felder aus !</p>
<%
End If
%>
<form method="post">
<% If name=False Then %>
<font color="#FF0000"><% End If %>
Name
<% If name=False Then %>
</font><% End If %>
<input type="text" size="20"
name="Vorname" value=
"<% =Request.Form("Vorname") %>">
<br>
<% If sprache=False Then %>
<font color="#FF0000"><% End If %>
Lieblingssprache
<% If sprache=False Then %>
</font><% End If %>
<select name="Sprache" size="3">
<option value="ASP"
<% If Request.Form("Sprache")="ASP" Then %>
selected
<% End If %>>ASP</option>
<option value="PHP"
<% If Request.Form("Sprache")="PHP" Then %>
selected
<% End If %>>PHP</option>
<option value="JSP"
<% If Request.Form("Sprache")="JSP" Then %>
selected
<% End If %>>JSP</option>
</select>
<br>
<input type="submit" name="Versand"
value="Abschicken">
</form>
</body>
</html> |
In
diesem ASP-Dokument stehen das Formular
und der die Ergebnisse auswertende ASP-Code
zusammen in einer Datei.
Deshalb wird das action-Attribut im <form>-Tag nicht gesetzt, wodurch
die eingegebenen Formulardaten an die gleiche Seite zurückgesand
werden.
Um den ersten Aufruf (ohne Formulardaten) vom zweiten Aufruf (mit eventuell
nur teilweise ausgefüllten Formulardaten) unterscheiden zu können,
bekommt der Submit-Button einen Namen:
<input type="submit" name="Versand" value="Abschicken">
Dann kann der erste vom zweiten Aufruf unterschieden werden mit:
If Request.Form("Versand") = "Abschicken"
Bei vollständig ausgefüllten Daten wird auf eine Bestätigungsseite
umgeschaltet:
Response.Redirect("danke.asp")
Davor darf es keine HTML-Ausgaben geben.
Bei fehlenden Angaben wird das Formular erneut versand und die Felder
mit fehlenden Einträgen rot gefärbt:
<font color="#FF0000"> |
|
Datenbankzugriff |
Für
Microsoft-Access-Datenbankdateien (.mdb)
genügt als Eröffnungskommando:
cn.Open "DSN=meinDsnName"
Soll eine Datenbank per ODBC angesprochen werden, wird "ODBC;" vorangestellt:
cn.Open "ODBC;DSN=meinDsnName"
Ist die Datenbank passwortgeschützt, müssen Benutzername und
Passwort mit angegeben werden:
cn.Open "ODBC;DSN=meinDsnName;UID=meinName;PWD=geheim"
Source-Code-Beispiele sind funktionsfähig, aber ohne Fehlerbehandlung. |
<%
Set cn = Server.CreateObject( _
"ADODB.Connection" )
cn.Open "dsn=meinDsnName"
cn.Execute( strSql )
cn.Close
Set cn = Nothing
%> |
SQL-Kommando
(z.B. "INSERT ...") ausführen. |
<html><body>
<%
Dim dsnName
Dim tabName
if Request.Form( "submit" ) = _
"Datenbank lesen" Then
dsnName = Request.Form( "dsn" )
tabName = Request.Form( "tab" )
Else
dsnName = "Test-Datenbank"
tabName = "Test-Tabelle"
End If
%>
<form method="post"><pre>
DSN-Name <input type="text" _
name="dsn" value="<%= dsnName %>"><br>
Tabellenname <input type="text" _
name="tab" value="<%= tabName %>"><br>
<input type="submit" name="submit" _
value="Datenbank lesen">
</pre></form>
<table border=1 cellspacing=0>
<%
if Request.Form( "submit" ) = _
"Datenbank lesen" Then
Set cn = Server.CreateObject( _
"ADODB.Connection" )
Set cmd = Server.CreateObject( _
"ADODB.Command" )
Set rs = Server.CreateObject( _
"ADODB.Recordset" )
cn.Open "dsn=" & dsnName
strSql = "SELECT * FROM " & _
tabName
cmd.CommandText = strSql
cmd.CommandType = 1
Set cmd.ActiveConnection = cn
rs.Open cmd, , 0, 1
While Not rs.EOF
Response.Write( "<tr>" )
For Each feldelement in rs.Fields
Response.Write( "<td>" & _
feldelement & "</td>" )
Next
Response.Write( "</tr>" )
rs.MoveNext
Wend
rs.Close
cn.Close
Set rs = Nothing
Set cmd = Nothing
Set cn = Nothing
End If
%>
</table>
</body></html> |
SQL-Recordset
einlesen und anzeigen mit VBScript. |
<%@
LANGUAGE="JSCRIPT" %>
<html><body>
<%
var dsnName = "Test-Datenbank";
var tabName = "Test-Tabelle";
if( Request.Form( "submit" ) ==
"Datenbank lesen" )
{
dsnName = Request.Form( "dsn" );
tabName = Request.Form( "tab" );
}
%>
<form method="post"><pre>
DSN-Name <input type="text" name="dsn"
value="<%= dsnName %>"><br>
Tabellenname <input type="text" name="tab"
value="<%= tabName %>"><br>
<input type="submit" name="submit"
value="Datenbank lesen">
</pre></form>
<table border=1 cellspacing=0>
<%
if( Request.Form( "submit" ) ==
"Datenbank lesen" )
{
var db = Server.CreateObject(
"ADODB.Connection" );
db.Open( dsnName );
var rs = db.Execute( "SELECT * FROM " +
tabName );
while( !rs.EOF ) { %>
<tr>
<% for( i=0; i<rs.Fields.Count;
i++ ) { %>
<td><%= rs(i) %></td>
<% } %>
</tr>
<%
rs.MoveNext();
}
db.Close();
}
%>
</table>
</body></html>
|
SQL-Recordset
einlesen und anzeigen mit JScript. |
|
|