Till Petter
Lathunden
är ett hastverk för att klara en tentamen. Den är inte fullständig, helt
korrekt eller
vidare pedagogisk. Så sålla informationen en smula :)
Innehållsförteckning Senast uppdaterad: 00-10-28 klockan 02.05 J Kommentera gärna! webmaster@finnjolle.nu
|
Inledning, avgränsare, script-kod |
Mer dokumentation: ---------------------- Microsofts kompletta handledning samt uttömande uppslagsdel om varje kommando, funktion och argument. |
|
|
Koppling, Läsning, Skrivning, Uppdatering |
||
|
Day, Month, Year,
Time |
||
|
Dictionary | ||
|
Hämta formulärvärden | ||
|
Kul kombination | ||
|
Do, For | ||
|
Randomize | ||
|
Instr, Len, Lcase, Trim, Space, Left, Mid mfl | ||
|
Egna Subrutiner och egna funktioner | ||
|
Jobba med filer, mappar och enheter | ||
|
Heltal, Modulus, Avrundning | ||
|
Skapa och tilldela | ||
|
Skapa, ge värden, sortera | ||
|
If, Then, Else, Jämförelser, Select |
Allmänt
|
Active Server Pages är en teknik för att köra Script-kod på webbservrar. Script-kod på server-sidan körs av webbservern innan den skickas till webbläsaren. Detta innebär att alla kan se de
sidorna. Script-kod på klientsidan körs av webbläsaren när sidan tagits emot av webbservern. Detta innebär att bara vissa kan se dina sidor då olika webbläsare stödjer olika Script. ------------------------------------------------------- T ex: VBScript, JavaScript eller Jscript. Man skall ange det/dem scriptspråk man använder. Köra Scriptspråket på klientsidan: <HEAD><Script
Language="JavaScript"></Script</HEAD> Köra Scriptet på Server-sidan: <HEAD><%@
Language=VBScript %></HEAD> <% ASP-KOD
%> Text + <HTML> <% ASP-KOD %> --------------------------------------------------------- VBScript
@Du kan blanda stora och små bokstäver som du vill men… det är lättare att följa koden om du är konsekvent. @Vill du skriva kod på flera rader använder du: _ Kodrad1_ kodrad2 @<% Options Explicit %> tvingar dig att definiera dina variabler. VBScript returnerar ett felmeddelande om du stavat fel på variabeln istälet för att anta att du vill skapa en ny variabel. @ Man måste inte deklarera variablerna men det rekomenderas. Kommentarer skrivs i HTML med avgränsarna: <!—Kommentarà I VBScript kan man också använda gamla hederliga REM eller en apostrof: ’ |
Databaser |
Två kopplings-sätt: ODBC-koppling på webbservern eller Kodrader MED ODBC
För att skapa en ODBC-koppling med Personal Webbserver: Starta kontrollpanelen. Klicka på 32-bitars ODBC-datakällor. Välj fliken system-DNS. Klicka på lägg till… Nu kommer du att få upp en ny ruta där det står Skapa ny datakälla. Välj nu i listan det alternativ som motsvarar det databasformat som du tänker använda. Klicka på Slutför. Skriv nu ett logiskt och kort namn på källan med gemener och utan mellanslag. Exempelvis mindatabas. Klicka därefter på Markera. Bläddra till den fil som utgör databasen, markera och välj OK. Därefter klickar du återigen på den OK-ruta som finns i den första rutan. Nu bör du i listan för system-DNS:er se en rad med den koppling som du nyss lagt till. Kryssa i alternativen ”Tillåt katalogbläddring” och ”Aktivera standard-dokument” under avancerat i PWS. -------------------------------------- MED KODRADER
EX1:
Recordset direkt mot en tabell Set
koppla=Server.CreateObject("ADODB.Connection") 'koppla.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:\Databas\Telefon.mdb" koppla.Open
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Databas\Telefon.mdb;
Persist Security Info=False" Set
poster=Server.CreateObject("ADODB.Recordset") poster.Open "Telefontabell", koppla ’Jobba med posterna ‘Döda kopplingsobjekten poster.Close koppla.Close set
poster=Nothing set
koppla=Nothing ------------------------------------ EX2: Recordset mot SQL-vy
Dim koppla, poster, sqlString ’deklarera kopplingsvariabler och SQL-variabel Set
koppla=Server.CreateObject("ADODB.Connection") 'koppla.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:\Databas\Telefon.mdb" koppla.Open
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Databas\Telefon.mdb;
Persist Security Info=False" Set
poster=Server.CreateObject("ADODB.Recordset") sqlString="SELECT * FROM Telefontabell" poster.Open sqlString, koppla jobba med data ’Döda kopplingsobjekten poster.Close koppla.Close set
poster=Nothing set koppla=Nothing Kommentar: Raden som har ett ’ framför sig är en äldre typ av koppling som allt mindre används SQL eller Recordset? --SQL!
SQL är rekomendabelt av flera anledningar: SQl är ett enkelt språk som innehåller många kraftfulla funktioner. SQL är ett standardiserat språk som gäller för många databaser. SQL kan sortera ut vissa poster direkt från databasen. Detta ökar prestanda. SQL ger en ofta en enkel hantering av problem: För jämförelser kan du t ex skapa två frågor som körs mot varandra. Skapa inkluderingsfil (SSI) Smidigt om du vill använda samma värden för flera sidor. Ex: Ropa på SSI från fil: <!-- #INCLUDE
FILE = "Access_conn_telefon.asp" --> Filen: <% Set
koppla=Server.CreateObject("ADODB.Connection") 'koppla.Open "Driver={Microsoft Access Driver
(*.mdb)}; DBQ=C:\Databas\Telefon.mdb" koppla.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=C:\Databas\Telefon.mdb; Persist Security Info=False" Set poster=Server.CreateObject("ADODB.Recordset") %> Så
fort du vill använda dig av inkluderingsfilen måste du deklarera
variablerna koppla och poster i filen du ropar från. Skriva ut från databas med response
Do Until
poster.EOF Response.Write poster("Fnamn") & " " & poster("Enamn") & " " & poster("Telefon") & "<BR>" poster.MoveNext Loop Skrivning till databas
Kompletteras senare Tilläggningtill databas
Kompletteras senare
|
Datum
|
Datum och tids-funktioner
Date: 2000-10-26 Now: 2000-10-26
16:20:34
Time: 16:21:12 Beteckningar yyyy = år q = kvartal m = månad d = dag
DateAdd --Lägger till år, kvartal, månad el dag Ex: DateAdd("d",5,Date) ger: dagens datum + fem dagar DateDiff --Beräknar skillnad mellan två datum Ex: <% Dim Idag, Jul Jul= DateDiff("d",
Date, "2001-01-01") Idag= Date %> Dagens datum är: <% =Idag %> <br> Till julafton är det: <% =Jul %> dagar Day, Month, Year
Tar ett datum och returnerar de tal som motsvarar Dag, Månad och År Monthname
Tar ett tal mellan 1 och 12 och returnerar månadsnamnet |
|
Funktioner |
En subrutin fungerar som ett
VBScript-kommando. Den utför något men returnerar inte något värde. Vid anrop
får man inte använda paranteser, även om subrutinen behöver argument.
Subrutiner och funktioner
kan betraktas som avskilda enheter. De kan inte förstå variabler som är
deklarerade utanför dem. Man brukar säga att man deklarerar varaibler
”lokalt” i subrutiner och variabler. Subrutiner Ex1: Sub SkrivUt Response.Write ”Testar Subritiner” End Sub Ropa: Call SkrivUt Ex2: Sub Rakna(Variabel1,
Variabel2)
MinSub=Variabel1 + Variabel2
Response.Write MinSub End Sub Ropa: Call MinSub Värde1,
Värde2 -------------------------------- Funktioner Function MinFunktion (ßAutomatisk variabeldeklaration) ’ händelse MinFunktion = Det värde som funktionen skall lämna ifrån sig. End Function Ropa: MinFunktion
Ex1: (Returnera ett värde) Function Lyckonummer Randomize Lyckonumer=Int(Rnd*9) End Function Lyckonummret är: <%=Lyckonummer%>
Ex2: (Mottaga och returnera två värden) Function Rakna(Varde1, Varde2) Rakna = Varde1 * Varde2 End Function <% =Rakna(7,8)%> Kommentar: Man måste naturligtvis inte skriva ut värdet utan kan t ex lika gärna skicka det till en variable för ytterligare beräkningar. |
|
(Dictionary) |
ARBETA MED LISTOR SOM OBJEKT
Generella principer: Dim Objektnamn,Nyckel,Varde Set Objektnamn =
CreateObject("Scripting.Dictionary") Nyckel =
Objektnamn.Keys Varde =
Objektnamn.Items Skapande av lista: Dim bilar, nyckel, varde Set bilar =
CreateObject("Scripting.Dictionary") land =
bilar.Keys biltyp =
bilar.Items Lägga till: bilar.Add "Sverige", "Saab" bilar.Add "Tyskland", "BMW" bilar.Add "Frankrike", "Renault" bilar.Add "USA", "Jeep" bilar.Add "Italien", "Ferrari"
Skriva ut: <%=bilar.Item("USA")%><br> Stega: Dim sista, i sista=bilar.Count-1 For i = 0 To
sista %> Länder:<%=land(i)%><br> <%Next%> Leta: bilar.Exists("Sverige") Ta bort: bilar.Remove("Sverige") Tömma hela listan: bilar.RemoveAll Ändra värdet hos en nyckel: bilar.Item("Sverige")="Volvo" 'Finns inte nyckeln skapas den automatiskt! Ändra namn på nyckel: bilar.Key("Sverige")="Sweden" |
Request
Se även |
Request är lämpligt för att hämta värden som skall bearbetas. (T ex från ett formulär) EXEMPEL1: (Från HTML-sida skickas värden till ASP-fil) <FORM
Action="skicka.asp" Method="post" Name="Frm1"> Tal 1: <INPUT
TYPE=Text Name="1"><BR> Tal 2: <INPUT
TYPE=Text Name="2"><BR> <INPUT TYPE="Submit" Value="Skicka siffror" </FORM> 'Formulärdata till filen "skicka.asp": <%Dim ett,tva,storst,summa ett=Int(Request.Form("1")) tva=Int(Request.Form("2")) If tva > ett Then
storst=tva summa=ett + tva End if%> Summan av talen är: <%= summa %><br> Det största talet är: <%= storst%><br> EXEMPEL2: (ASP-fil skickar till sig själv) <% dim txt
%> <% If
Request.form="" Then %> <Form
action="skicka.asp" method="post"> <input
type="text" name="Textruta"><br> <INPUT Type="Submit" Value="Skicka" Name="Skicka"> </form> <% else
txt=Request.Form("Textruta") %> <% =txt %> <% end if
%> -------------------------------------- Kommentarer till exemplen: Eftersom det första exemplet använder sig av två olika dokument ”försvinner” formuläret när värdena returneras i webbläsaren. För att få samma effekt i exempel två får man använda en IF-sats som kollar om användaren fyllt i formuläret. Om så ej är fallet återskapas det tills det blir ifyllt och då returneras värdena. Vill man att formuläret skall finnas kvar i exempel 2 tar man bara bort IF-satsen. --------------------------------------- Om request skall synas i
adressfönstret: Byt ut post mot get i formuläret och Request.Form mot Reguest.QueryString i ASP-filen OBS! I Netscape syns variabler i adressfönstret i båda fallen Skriva ut direkt från Request: If
Request.Form("Checkbox1") = "hemma" Then Response.Write "Du bor hemma fortfarande" IF-sats för att kolla om textruta är tom: If
IsEmpty(Request.Form("txt1")and Request.Form("txt2")) Then… IF-sats för att kolla om formulär är tomt: If Request.Form=""
Then… |
|
Request |
REQUEST KOMBINERAT MED VEKTOR
Man kan ifrågasätta användningen av detta men det är bra träning för att förstå vektorer och Request… Dim vektor(4),i,j, temp <!--Skapa
formulär--> <Form
action="test.asp" method="post"> <input
type="text" name="1"><br> <input
type="text" name="2"><br> <input
type="text" name="3"><br> <input
type="text" name="4"><br> <INPUT Type="Submit" Value="Skicka"> </form> <!--Ladda värden i vektor--> For i =1 to 4
vektor(i)=Int(Request.Form(i)) Next %> <!--Skriv ut vektorn--> <% For i =1 to 4
%> <%=vektor(i)%><br> <%Next%> |
Slingor
|
FOR
For Slinga = startvärde to slutvärde ’händelse Next Slinga i slinga (kapslade slingor) For ytterslinga = 1
To 5 For
innerslinga = 1 To 3 Next Next Exempel på FOR med utskrift: <% Dim Slinga For Slinga = 1 To 10 %> Tjatigt<BR> <%Next%> DO
Do While
Do While Variabel
< visst värde ’händelse Loop DO UNTIL Do Until Summa >
10 Summa = Summa
+ 1 Loop DO WHILE Do While Summa <
10 Summa = Summa + 1 Loop EXIT DO (lämnar slingan om visst villkor uppfylls) Do While Summa <
20 Summa = Summa
+ 1
If Summa = 15 Then Exit Do
End If Loop Exempel på Do med utskrift
<% Dim slinga Do while slinga < 11 %> <% =slinga %> <% slinga=slinga +1 Loop %> Slingan Slutade på: <%=slinga%>
|
|
Slumptal |
Ett enda decimaltal: Dim Slumptal Randomize Slumptal=Rnd*10 Olika decimaltal: Dim Slump Randomize Slump=Rnd*50 Olika heltal: Dim slump Randomize Slump=Int(Rnd * 6)+1 ’+1 för att få tal från 1till 6 Exempel på slumptalsprogram: <% Dim i, tarning Randomize For i = 1 to 6 tarning=Int(Rnd*6)+1 %> Slag <%=i%> blev: <%=tarning%><br> <%Next%> |
System-
|
Man måste skapa ett FileSystemObject varje gång man vill använda det! Generell princip: Dim variabelnamn Set Filsystem =
CreateObject("Scripting.FileSystemObject") variabelnamn.ValfrittKommando("c:\sökväg till objektet") ' ibland använder man inte paranteser! Skapa textfil: texten.CreateTextFile("c:\temp\test.txt") Skapa mapp: mapp.CreateFolder("c:\temp\test") Kopiera fil: kopiera.CopyFile "c:\temp\*.*", "c:\backup\" Kopiera mapp: kopiera.CopyFolder "c:\temp\test", "c:\backup\" Ta bort fil eller mapp: DeleteFile, DeleteFolder Kontrollera om fil finns: koll.FileExists("c:\temp\test.txt") Finns också: FolderExists och DriveExists Hämta Fil,Enhet el Mapp Get File, Drive,
Folder |
|
och mattematik |
Talomvandling och andra matematiska funktioner
Från decimal till Hexadecimal
Ex: Dim Hexan Hexan = Hex(221) Till heltal med Int Ex: Slump=Int(Rnd * 6)+1 Till heltal + avrundning Ex: Tal1=Round(Tal2) Modulus (Mod) Reslutatet av en modulus är den rest som blir över när två tal divideras. Ex: If tal1 Mod 2 =0 Then… (Om tal1 / 2 blir 0 Gör följande…) Används ofta för att ta ut jämna tal som detta exempel visar. Användbart vid t ex utskrifter. |
Variabler
Se även: Se även: |
@<% Options Explicit %> tvingar dig att definiera dina variabler. VBScript returnerar ett felmeddelande om du stavat fel på variabeln istälet för att anta att du vill skapa en ny variabel. @ Man måste inte deklarera variablerna men det rekomenderas. Skapa variabel och tilldela värde Dim Siffra Siffra = 20 Skapa variabel med strängvärde Dim slut Slut=”Finito” Skapa Konstant (KAN EJ ÄNDRAS) Const frukt="apelsin" Const siffra = 5 Utskrift av flera tecken
Dim Tecken Tecken=String(10,"O") |
Vektorer
Se även: Se även: |
Endimensionell vektor (Även kallat array eller lista) Dim vektor(5) Tvådimensionell vektor Dim vektor(5,5) Fylla vektor med sträng-värden Dim bilar bilar="Array("SAAB","Volvo","BMW","Skoda") Skapa ”dynamisk” vektor Dim pengar() Ändra storlek på vektor i efterhand ReDim pengar(300) EX på att fylla vektor med värden: Dim i, vektor(5) Randomize For i = 1 To 5 vektor(i)=Int(Rnd * 100)+1 Next Sortera vektor stigande: (fallande: byt > mot <) <% For i = 1 to
4
For j = 1 to 4 If vektor(i)>vektor(j) Then temp=vektor(i) vektor(i)=vektor(j)
vektor(j)=temp End if Next Next %> Skriv ut vektor <% For i =1 to 4
%> <%=vektor(i)%><br> <%Next%>
|
Villkor
|
IF
If villlkor = sant
Then ‘Programsats End If Många villkor med ElseIF
Smidigt om man använder flera variabler. Ger överskodlig kod. Ex: If Ålder > 70 Then Gammal getabock ElseIf Ålder > 50 Gyllene medelåldern
ElseIF Ålder > 30 En riktig goding ElseIf Ålder > 18 En ungdomlig skönhet Else Livet har just börjat End IF Många villkor med Select Case
Smidigt om man endast använder samma varaibel. Ger överskodlig kod. Select Case
Varaibelnamn Case 1
‘programsats Case 2
‘programsats End Select Ex: <% Dim Kaffe %> <Form
method="post" action="datum.asp"> <input
type="radio" name="val" value="varmt" Checked> Varmt<br> <input
type="radio" name="val" value="ljummet"> Ljummet<br> <input type="radio" name="val" value="kallt"> Kallt<br><br> <input type="submit" value="Hur är kaffet?"> </form> <% Kaffe =
Request.Form("val") Select Case
Kaffe Case "varmt" Response.Write "Varmt kaffe är riktigt gott" Case "ljummet" Response.Write "Fesljummet är bra trist" Case "kallt" Response.Write "USCH! -- Odrickbart" End Select %>> Inkapsling av villkor
Om villkor1 = Sant Kör villkor2 Om villkor2 = Sant
’gör detta
Slut villkor2 Om villkor1 = falskt ’Gör detta Slut villkor1 Ex:
<% Dim Kaffe, Varme Varme = "varmt" Kaffe = "svart" If Varme = "hett"
Then If Kaffe = "svart" Then Response.Write "Tillsätt mjölk" %><br> <%
Else
Response.Write "Bon apetit!" %><br>
<%
End If Else Response.Write "Koka upp kaffet" %><br> <% End if %> Prova att ändra värdena på ”kaffe” och ”varme” och se vad resultatet blir. Kolla sedan igenom programmet. Jämförelser
Fem Myror > Fyra elefanter (numeriskt sett…) 5 < 10 (såvitt jag vet…) <= mindre eller lika med >= större eller lika med <> inte lika med (skild från) Booleska variabler tillsammans med IF If Hungrig = True
Then Response.Write “Ät en smörgås” Skall kompletteras |
Strängar
Se även: |
Skapa variabel med strängvärde
Dim slut Slut = ”Finito” String
Skapar sträng av valfri längd, fylld med valfria tecken Slut = String(3,”@”) ger: ”@@@” Space
Skapar strängar med många mellanslag i. Skicka med ett tal som anger hur många mellanslag som önskas. Space(5) skickar tillbaka: ” ” Instr
Söker igenom strängar för att hitta delsträngar. Exempel som letar en sökt delsträng: <% Dim String String = "En meningslös mening" If (Instr(String,
"mening")) Then Response.write "Det finns en mening med livet" Else Response.Write "Dags för Nirvana?" End IF %> Exempel som returnerar den sökta strängens position <% Dim Strang, Leta, Position Strang = "Jag vill ha dig." Leta = "vill" Position = InStr(Strang, Leta) %> Positionen har värdet <% =Position %> ’ Position returnerar värdet 5 därför att strängen ”vill” påträffas 5 tecken från början på ”stor”. ---------------------------------------------- Len
Returnerar ett tal som visar stränglängden. Ex: <% Dim Str, Langd Str = "Himla tråkig mening det här" Langd = Len(Str) %> Meningen bestod av <%= Langd %> bokstäver. ’Langd returnerar talet 27 Lcase, Ucase
Tar båda emot en sträng som argument. Returnerar strängens tecken omvandlade till små respektive stora bokstäver. Variabel = Lcase(Strang) Variabel = Ucase(Strang) Ltrim
tar bort alla mellanslag till vänster om strängen (från början) Rtrim
tar bort alla mellanslag till höger om strängen (från slutet) Trim
tar bort alla mellanslag på båda sidor om strängen Left och Right
Plockar ut strängdelar från vänster eller höger Variabel = Left(Strang, nummer) Variabel = Right(Strang, nummer) Ex: Left(”En vacker dag”, 4) returnerar: ”En v” Mid
tar tecken inne i en sträng och returnerar dem. Variabel = Mid(”Strang”, Startpunkt, Antal) ”Startpunkt” anger var någonstans i ”Strang” som utplockningen skall börja. ”Antal” bestämmer hur många tecken som skall tas. Ex: Mid(”Den spanska räven”, 5, 7) returnerar: ”spanska” |