webForumDet fria alternativet

Upptagen användarnamn

ASP

19 svar · 287 visningar · startad av jboy_87

Medlem sedan aug. 20011 099 inlägg
Frågan#1

Så här ser min kod ut:
hur gör jag så att man inte kan registrera medlemmar med samma användarnamn???

<%

IF Request.Form("losen") = Request.Form("losen2") THEN

Set connection = server.createObject("adodb.connection")
connection.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db.mdb") & ";"
SQL = "INSERT INTO anvandare (Namn, Losen) VALUES ('" & Request.Form("ID") &"','" & Request.Form("losen") &"')"
set RS = Connection.Execute(SQL)
Response.Redirect("loggain.asp")

ELSE
session("galet") = "Du måste skriva lika lösen i båda fälten!"
Response.Redirect("blimedlem.asp")
END IF
%>

Medlem sedan juni 20019 024 inlägg
#2

Välkommen till webForum!

Det fixar du enklast genom att sätta fältet "Namn" i databasen till indexerat, och att inga dubletter får förekomma.

När du sedan kollar

On Error Resume Next
SQL = "INSERT INTO anvandare (Namn, Losen) VALUES ('" & Request.Form("ID") &"','" & Request.Form("losen") &"')"

Connection.Execute(SQL)
If Err.Number Then
   Response.Write "Ojsan, det finns redan en sådan användare!"
Else
   Response.Redirect("loggain.asp")
End If

------------------
Peter D

Medlem sedan aug. 20011 099 inlägg
#3

asså ska koden se ut så här:
men den funkar inte :-(

<%
IF Request.Form("losen") = Request.Form("losen2") THEN

Set connection = server.createObject("adodb.connection")
connection.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db.mdb") & ";"
SQL = "INSERT INTO anvandare (Namn, Losen) VALUES ('" & Request.Form("ID") &"','" & Request.Form("losen") &"')"
Connection.Execute(SQL)
If Err.Number Then
Response.Write "Ojsan, det finns redan en sådan användare!"
Else
Response.Redirect("loggain.asp")
End If
ELSE
session("galet") = "Du måste skriva lika lösen i båda fälten!"
Response.Redirect("blimedlem.asp")
END IF
%>

Medlem sedan juni 20019 024 inlägg
#4

Har du ställt in databasen till indexerad, lagt till "On Error Resume Next"? I så fall, visa felmeddelandet du fick... eller vad som händer.

------------------
Peter D

Medlem sedan aug. 20011 099 inlägg
#5

det händer inget den registrer medlemem men går och registrera samma användarnamn ähh kolla in sidan: www.websamba.com/suryoyofun/blimedlem.asp

Medlem sedan aug. 20011 099 inlägg
#6

vad betyder indexerat???
hehe jag e nybörjare på asp

Medlem sedan juni 20019 024 inlägg
#7

Ställ in fältet "Namn" på följande vis:
Indexed: Yes (no duplicates) i designläget i Access.

Red: Indexerat innebär att man förhindrar att ett värde förekommer mer än en gång. Dvs man kan inte registrera samma användare flera gånger.

------------------
Peter D

[Redigerat av Pace den 06 aug 2001]

Medlem sedan aug. 20011 099 inlägg
#8

nu blev det fel i scriptet:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.

/suryoyofun/regga.asp, line 9

Medlem sedan juni 20019 024 inlägg
#9

Lugn! Så ska funktionen yttra sig när man gör på detta viset.

Lägg nu till följande:

[b]On Error Resume Next[/b]
SQL = "INSERT INTO anvandare (Namn, Losen) VALUES ('" & Request.Form("ID") &"','" & Request.Form("losen") &"')"
Connection.Execute(SQL)

[b]If Err.Number Then

Connection.Close
Set Connection = nothing
Response.Write "Ojsan, det finns redan en sådan användare!"
response.end

Else

Connection.Close
Set Connection = nothing
Response.Redirect("loggain.asp")

End If[/b]

------------------
Peter D

[Redigerat av Pace den 06 aug 2001]

Medlem sedan juni 20019 024 inlägg
#10

Vad som händer är att "On Error Resume Next" bara fortsätter med nästa rad om ett fel uppstår.

Och när vi kommer till "If Err.Numb..." kollar vi om det har uppstått något fel (dvs användaren har försökt registrera ett användarnamn som redan finns).

------------------
Peter D

Medlem sedan aug. 20011 099 inlägg
#11

fan asså nu är det problem med mess hehe
användaren som registrera sig syns inte..

Medlem sedan juni 20019 024 inlägg
#12

Hur menar du?

------------------
Peter D

Medlem sedan aug. 20011 099 inlägg
#13

har du msn messenger:
mitt e jboy_87@hotmail.com
så kan vi prata

Medlem sedan aug. 20011 099 inlägg
#14

asså när man loggar in och ska välja användare från listan som man ska messa då finns syns inte användaren där??

Medlem sedan juni 20019 024 inlägg
#15

Du får visa lite kod annars är det omöjligt att veta vad som är fel.

------------------
Peter D

Medlem sedan dec. 20003 563 inlägg
#16

Jag tycker personligen inte att du ska använda det indexerade sättet då det är en del krångligare.
JAg skulle gjort så här i stället.

<%
namn = Request.Form("ID")
SET koll = connection.execute("SELECT namn FROM anvandare WHERE namn = '"&namn&"' ")
if check.eof
' Här kör du Registreringen av den nya användaren
else
' Det användarnamnet finns redan
end if
%>

------------------
MVH // Cyprys
Cyprys
Synd att du inte kan köpa en voodoojordglob och sedan snurra på den fort som fan och skrämma skiten ur alla.

[Redigerat av cyprys den 06 aug 2001]

Medlem sedan juni 20019 024 inlägg
#17

Ska det vara "koll" eller "check" cyprys? :e

Att använda indexering är ju snabbare och förhindrar fel. Sedan kan man ju kontrollera via den metod du visar också om man vill det.

------------------
Peter D

Medlem sedan dec. 20003 563 inlägg
#18

Ska man koda på svenska eller engelska ?? Den eviga frågan
Vi kör nått mitt emellan. :r
[r] Vi låter förra inlägget stå kvar som avskräckande exempel :) [/r]

Men är det så mycket snabbare?
Jag försöker alltid att förutspå alla fel i koden i den utsträckning att man slipper använda error.number eller likn.

------------------
MVH // Cyprys
Cyprys
Synd att du inte kan köpa en voodoojordglob och sedan snurra på den fort som fan och skrämma skiten ur alla.

[Redigerat av cyprys den 06 aug 2001]

Medlem sedan juni 20019 024 inlägg
#19

Ska man koda på svenska eller engelska ?? Den eviga frågan
Vi kör nått mitt emellan.

Låter bra det! ;)

Men är det så mycket snabbare?
Jag försöker alltid att förutspå alla fel i koden i den utsträckning att man slipper använda error.number eller likn.

Det är ju snabbare på så vis att det snabbar upp åtkomsttiden (när man väl hittat användarnamnent "Pace" avslutas hämtningen)

Och man är ju inte tvungen att använda "Err" - det går ju lika bra att använda den metoden som du visar!

Men om du använder "Err" så kan det vara bra att stänga av den igen med "On Error Goto 0"... så det så! :e ;)

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

------------------
Peter D

Medlem sedan mars 2001309 inlägg
#20

*Och vad tycker vi om Goto sattser.....*
Illa hur illa jätte illa usch usch usch... :e

------------------
Är man medlem på WF så behöver man inga vänner !

[Redigerat av Tobbster den 06 aug 2001]

275 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)