Lars Sørensen wrote:
> ** Indsaetboede-indsaet.asp **
Det er lidt svært at gennemskue om du har en asp-fil hvor du enter, og een
hvor du indsætter.
Hvis du vil lave det i samme fil, eks. Indsaetboede-indsaet.asp skal du dele
den op i en GET del, og en POST del.
Dvs. en struktur a la.
....
noget-kode
if Request.Servervariables("REQUEST_METHOD") = "POST" then
gør.noget.med.insæt.af.bøde.
end if
...kode..
if Request.Servervariables("REQUEST_METHOD") = "GET" then
gør.noget.med.visning af spillere/.bøde.
end if
> <form id="boede" action="Indsaetboede-indsaet.asp">
Her vil jeg foreslå du bruger method="post" i din form.
> ' Databaseforbindelse - husk at angive sti til din database
> Set Conn = Server.CreateObject("ADODB.Connection")
> DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
> DSN = DSN & "DBQ=" & Server.MapPath("../db/oh77.mdb")
> Conn.Open DSN
Den her stump vil jeg foreslå dig at lægge ud i en include fil, så du ikke
skal skrive/rette det samme alle steder.
> ' SQL forespørgsel
> strSQL = "Select * from SPILLERE"
Lidt afhængig af hvor mange felter der er i tabellen spillere, er det god
latin kun at udtage de felter der skal bruges, f.eks.
SELECT Id,Fornavn,Efternavn FROM Spillere ORDER BY Id
> Når jeg så submit'ter kommer der bare en fejlside op.
Det ville være rart hvis du fortalte hvad der stod/står på den fejlside.
> ' SQL sætning opbygges
> strSQL = "Insert into BOEDER ("
>
> strSQL = strSQL & "SpillerID, "
> strSQL = strSQL & "Boedetype, "
> strSQL = strSQL & "Foedselsdato) "
>
> strSQL = strSQL & "values( "
>
> strSQL = strSQL & "'HVORDAN skal der stå her?', "
> strSQL = strSQL & "'HVORDAN skal der stå her?', "
> strSQL = strSQL & "'HVORDAN skal der stå her?')"
Jeg har lavet en funktion her:
<
http://w-o-p-r.dk/tips/asp/sql.inc.asp.txt>
Hvis du lægger den som en includefil, f.eks. sql.inc.asp, så ska du bruge:
(Hvis du bruger method="post")
.....
Rowsaffected = query(conn,_
"INSERT INTO Boeder (SpillerId,Boedetype,Foedselsdato) VALUES (?,?,?)",_
Array(Request.Form("spiller"),Request.Form("boedetype"),Request.Form("Dato"),-1)
If rowsaffected <> 1 then <skriv en eller anden fejlmelding>
.....
Hvis du i stedet bruger method="get", skal du erstatte Request.Form med
Request.Querystring.
Den bruger parameterized queries, som sikrer mod SQL injection.
I en anden tråd snakkede Leif lidt om, at det kan blive nødvendigt at angive
parametertyperne til hver enkelt parameter i stedet for variant.
Hvis det bliver nødvendigt, så udvider jeg funktionen, men det vil give
noget ekstra arbejde at benytte funktionen, så indtil videre ser vi om ikke
det virker med variant.
NB: Du bruger Foedselsdato i din SQL, er du sikker på den er rigtig ?
Boededato - måske ?
--
Med venlig hilsen
Stig Johansen