Avatar billede frank74 Nybegynder
27. januar 2005 - 18:44 Der er 8 kommentarer og
2 løsninger

Stadig begynder problemer med ASP

Hej Eksperter.
Nu har jeg fået lavet et script hvor man skal give nogle bruger oplysninger som bliver gemt i en database. Det består af en ASP fil med en masse forms som sender dataene videre til dette script:

---------------------------------------------------------------<html>
<title>Indsætte data i databasen</title>
<head>
<meta name="Generator" content="Stone's WebWriter 4">
</head>
<body>
<%
' 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("login_2000.mdb")
Conn.Open DSN

' SQL sætning opCitygges
strSQL = "Insert into Users (FirstName, LastName, Adress1, Adress2, PostalCode, City, Mail, Day, Month, Year, Username, Password) values('"                        & Request.Form("FirstName") & "','"                    & Request.Form("LastName") & "','"                    & Request.Form("Adress1") & "','"                    & Request.Form("Adress2") & "','"                    & Request.Form("PostalCode") & "','"                    & Request.Form("City") & "','"                        & Request.Form("Mail") & "','"                        & Request.Form("Day") & "','"                        & Request.Form("Month") & "','"                        & Request.Form("Year") & "','"                        & Request.Form("Username") & "','"                    & Request.Form("Password") & "')"

' SQL sætning eksekveres
Conn.Execute(strSQL)

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
<h1>Databasen er opdateret!</h1>
<p><a href="index.asp">Login</a></p>
</body>
</html>

---------------------------------------------------------------

Det hele virker fint. Men jeg kunne godt tænke mig at det samme "Username" IKKE kan oprettes 2 gange. At man f.eks. får at vide at Brugernavnet allerede findes og at man skal vælge et andet. Kan det lade sig gøre og hvordan?? :-)
Avatar billede frank74 Nybegynder
27. januar 2005 - 18:45 #1
Undskyld rodet i scriptet. Det så ellers så fint ud da jeg kopierede det ind. :-)
Avatar billede apocalyptica_apo Nybegynder
27. januar 2005 - 18:58 #2
lav en søgning i databasen efter navnet/username og derefter hvis ingen fundet opret brugeren
Avatar billede frank74 Nybegynder
27. januar 2005 - 19:03 #3
Kan du uddybe lidt hvordan scriptet skal se ud. Jeg er trods alt ikke nybegynder for ingenting. ;-)
Avatar billede hooh Nybegynder
27. januar 2005 - 19:09 #4
<%
' 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("login_2000.mdb")
Conn.Open DSN


strSQL = "select count(*) as antal where username='" & Request.Form("Username") & "'"
set rs = Conn.Execute(strSQL)

if rs("antal")>0 then
Response.write "USERNAME FINDES"
Response.end
else
'------------ INSERT---
' SQL sætning opCitygges
strSQL = "Insert into Users (FirstName, LastName, Adress1, Adress2, PostalCode, City, Mail, Day, Month, Year, Username, Password) values('"                        & Request.Form("FirstName") & "','"                    & Request.Form("LastName") & "','"                    & Request.Form("Adress1") & "','"                    & Request.Form("Adress2") & "','"                    & Request.Form("PostalCode") & "','"                    & Request.Form("City") & "','"                        & Request.Form("Mail") & "','"                        & Request.Form("Day") & "','"                        & Request.Form("Month") & "','"                        & Request.Form("Year") & "','"                        & Request.Form("Username") & "','"                    & Request.Form("Password") & "')"

' SQL sætning eksekveres
Conn.Execute(strSQL)
'---------------------
end if

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
<h1>Databasen er opdateret!</h1>
<p><a href="index.asp">Login</a></p>
</body>
</html>
Avatar billede apocalyptica_apo Nybegynder
27. januar 2005 - 19:12 #5
Username = trim(replace(request.Form("Username"),"'","''"))

set rs_L = Conn.Execute("SELECT * FROM Users Where Username='" & Username & "';")
       
If not rs_L.eof then
           
Besked = "Username er taget"
   
else

strSQL = "Insert into Users (FirstName, LastName, Adress1, Adress2, PostalCode, City, Mail, Day, Month, Year, Username, Password) values('" & Request.Form("FirstName") & "','" & Request.Form("LastName") & "','" & Request.Form("Adress1") & "','" & Request.Form("Adress2") & "','" & Request.Form("PostalCode") & "','"  & Request.Form("City") & "','" & Request.Form("Mail") & "','" & Request.Form("Day") & "','" & Request.Form("Month") & "','" & Request.Form("Year") & "','" & Request.Form("Username") & "','" & Request.Form("Password") & "')"

' SQL sætning eksekveres
Conn.Execute(strSQL)

Besked = "Databasen er opdateret!"

end if
Conn.Close
Set rs_L = Nothing
Set Conn = Nothing
Avatar billede frank74 Nybegynder
27. januar 2005 - 20:02 #6
hooh -> Jeg får følgende fejlmelding :
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

/test/put.asp, line 16

Line 16 er - set rs = Conn.Execute(strSQL)

apo -> Hvis jeg skriver et navn der IKKE findes i forvejen virker det godt nok. Skriver jeg derimod et der findes, får jeg at vide at "Databasen er opdateret!". Men det er den bare ikke når jeg går ind i den...
Avatar billede hooh Nybegynder
27. januar 2005 - 20:45 #7
hvordan ser dit select-statement ud??
Avatar billede hooh Nybegynder
27. januar 2005 - 20:46 #8
hov på min skulle der stå:

strSQL = "select count(*) as antal FROM Users where username='" & Request.Form("Username") & "'"


havde lige glemt: From Users
Avatar billede frank74 Nybegynder
27. januar 2005 - 21:19 #9
Ja så begynder det at ligne noget. Tak for hjælpen. ;-)
Håber at det er ok hvis jeg deler pointene lidt. apo gjorde jo alligevel et forsøg men du var hurtigst.
PS. Jeg kommer sikkert med flere spørgsmål om ASP senere. Så hold øje... :-)
Avatar billede hooh Nybegynder
28. januar 2005 - 09:13 #10
Takker :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester