---
title: "upptaget användarnamn"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/10562-upptaget-användarnamn"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Hazze"
published: "2001-07-14T23:30:00.000Z"
updated: "2001-07-15T13:52:00.000Z"
replies: 20
views: 360
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/10562-upptaget-användarnamn"
---

# upptaget användarnamn

_Sida 1 av 2._

## #1 — Hazze, 2001-07-14T23:30Z

hur gör jag för att undvika att personer registrerar samma användarnamn?

min insert ser ut så här:

```
<%
Set connection = server.createObject("adodb.connection")
connection.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("falala.mdb") & ";"
SQL = "INSERT INTO members (Login, Password, Email, Lag, Position, Kommentar ) VALUES ('" & Request.Form("namn") &"','" & Request.Form("pass") &"','" & Request.Form("epost") &"','" & Request.Form("lag") &"','" & Request.Form("pos") &"','" & Request.Form("comment") &"')"
set RS = Connection.Execute(SQL)
Response.Redirect("registrerad.asp")
%>
```

tacksam för svar :)

Permalänk: https://www.webforum.nu/p/10562

## #2 — Pace, 2001-07-14T23:35Z

Själv gör jag så att jag först kör en SQL sats där jag kollar om användarnamnet redan finns - om det inte finns, dvs recordset:et blir EOF så är det fritt fram att lägga till med insert!

Permalänk: https://www.webforum.nu/p/277350

## #3 — Hazze, 2001-07-14T23:50Z

ok, har försökt med något sådant. får det dock inte att fungera. har du någon kod att visa? :)

Permalänk: https://www.webforum.nu/p/277351

## #4 — Pace, 2001-07-14T23:56Z

Hmm, det verkar konstigt. För mig funkar det utmärkt att använda det sättet, vilket jag gjort med följande:

```
'***************************************************************
'* Lägg till i databas.
'***************************************************************

  ' Öppna databas och skapa recordSet instans.
   databasFil = "login.mdb"
   losenord = "nej du, sånt skriver jag ju inte här förstås!"
   Set Connect = Server.CreateObject("ADODB.Connection")
   Connect.Open "driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath(databasFil) & ";pwd=" & losenord

   ' Kontrollera så att användaren inte finns redan.
   SQL = "SELECT * FROM Users WHERE username='" & Request.Form("username") & "'"
   SET rs = Connect.Execute(SQL)

   If rs.EOF Then
	'Fält att lägga till i databasen.
	SQL = "INSERT INTO Users (username, password, name, initials, email)"
	SQL = SQL & " VALUES('" & Request.Form("username") & "', "
	SQL = SQL & "'" & Request.Form("password") & "', "
	SQL = SQL & "'" & Request.Form("name") & "', "
	SQL = SQL & "'" & Request.Form("initials") & "', "
	SQL = SQL & "'" & Request.Form("email") & "'"
	SQL = SQL & ")"
	Connect.Execute(SQL)
	%>
	Användaren "<% =Request.Form("username") %>" har lagts till.<P>
	<A HREF="login.asp">Tillbaka</A>
	<%
   Else
	%>
	Användaren "<% =Request.Form("username") %>" finns redan.<P>
	<A HREF="javascript:history.back(-1)">Tillbaka till formuläret</A>
	<%
	   End If
```

Hoppas det funkar för dig!

Permalänk: https://www.webforum.nu/p/277352

## #5 — Pace, 2001-07-15T00:00Z

Fast jag ska nog uppdatera den koden och använda ADO istället... det blir så in i helvetes jobbigt att använda SQL för att skriva insert och sådant. Chanserna för att man gör fel är 110 % högre än om man använder ADO tycker jag.

Förresten så är den koden inte sådär optimerad.

```
Connect.Execute(SQL)
%>
[b]
Användaren "<% =Request.Form("username") %>" har lagts till.<P>
<A HREF="login.asp">Tillbaka</A>
[/b]
<%
Else
%>
[b]
Användaren "<% =Request.Form("username") %>" finns redan.<P>
<A HREF="javascript:history.back(-1)">Tillbaka till formuläret</A>
[/b]
<%
End If
```

De fetmarkerade områden bör skrivas med "Response.Write" istället, det är snabbare på sådana korta partier.

Permalänk: https://www.webforum.nu/p/277353

## #6 — PatrikB, 2001-07-15T00:20Z

Du kan oxå indexera fältet username och sätta att inga dubbletter är tillåtna.

Sedan kan du använda denna kod:

```
SQL = "INSERT INTO members (Login, Password, Email, Lag, Position, Kommentar ) " & _
	"VALUES ('" & Request.Form("namn") &"','" & Request.Form("pass") &"','" & _
	Request.Form("epost") &"','" & Request.Form("lag") &"','" & _
	Request.Form("pos") &"','" & Request.Form("comment") &"')"

On Error Resume Next

Set Connection = Server.CreateObject("ADODB.Connection")
	Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
		"Data Source=" & Server.MapPath("falala.mdb")

	Connection.Execute(SQL)

	If err.Number <> 0 Then
		Response.Write "Användarnamnet är upptaget. Försök med ett annat."
		err.Clear
	End If

	Connection.Close
Set Connection = Nothing
```

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/277354

## #7 — Pace, 2001-07-15T00:23Z

Bra idé PatrikB!

Du har banne mig svar på allt (nästan i alla fall)! :)

Permalänk: https://www.webforum.nu/p/277355

## #8 — Pace, 2001-07-15T00:25Z

Förresten, när jag ändå håller på... :)
Är det någon som använder DSN "nu förtiden"?

Permalänk: https://www.webforum.nu/p/277356

## #9 — Lukaspojken, 2001-07-15T08:10Z

Vad innebär att indexera fältet?

Permalänk: https://www.webforum.nu/p/277357

## #10 — nakoz, 2001-07-15T09:15Z

det innebär att du ställer in i Access/mySql/ms SQL att fältet 'username' eller vad det nu heter är indexerat. då kommer den använda användarnamnet som ett slags ID då detta är unikt.

vidare så saknar jag Trim() då vi inte vill att folk ska kunna regga "nakoz", " nakoz" och "nakoz " m.m.

mvh.

Permalänk: https://www.webforum.nu/p/277358

## #11 — Hazze, 2001-07-15T10:06Z

tackar för hjälpen alla :)

tyvärr är det något som inte riktigt stämmer. använder PatrikB´s kod just nu såhär:

```
<%
Set connection = server.createObject("adodb.connection")
connection.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("falala.mdb") & ";"

SQL = "INSERT INTO members (Login, Password, Email, Lag, Position, Kommentar, Goals, Matcher) " & _
"VALUES ('" & Request.Form("namn") &"','" & Request.Form("pass") &"','" & _
Request.Form("epost") &"','" & Request.Form("lag") &"','" & _
Request.Form("pos") &"','" & Request.Form("comment") &"','" & Request.Form("goal") &"','" & Request.Form("match") &"')" 
On Error Resume Next 

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("falala.mdb") 
Connection.Execute(SQL) 
If err.Number <> 0 Then
Response.Write "Användarnamnet är upptaget. Försök med ett annat."
err.Clear
End If 
Connection.Close
Set Connection = Nothing
%>
```

tyvärr visas meddelandet att användarnamnet är upptaget även om det är ledigt. någon som ar någon idé? :)

Permalänk: https://www.webforum.nu/p/277359

## #12 — icaaq, 2001-07-15T10:37Z

Jag skulle gjort så här..

1\. Lagt in alla Request.Form´s i variablar.

2\. Klammrat alla reserverade ord kolla här <http://www.webeye.nu/default2.asp?que=asp/default.asp&exec=asp/reserverade_ord_t-sql.asp> 

3\. Tagit bort det översta connectionobjektet.

4\. Skrivit ut SQL-satsen med response.wtite och slängt upp den här på wF.

Testa detta :)

Permalänk: https://www.webforum.nu/p/277360

## #13 — PatrikB, 2001-07-15T10:41Z

Om du avkommaterar On Error Resume Next vad får du för felmeddelande då??

När man använder sig av On Error Resume Next så kommer inga fel att visas och sidan fortsätter att processa dock ej på korrekt sätt.

Man kan även i if satsen kolla felen så här:

```
If err.Number <> 0
Response.Write "<P>" & err.Number & "<BR>" & err.Description & "</P>"
Response.Write "Användarnamnet upptaget."
End If
```

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/277361

## #14 — Hazze, 2001-07-15T10:50Z

PatrikB: använde mig av din senaste kod. fick följande fel:

\-2147217900
Syntax error in INSERT INTO statement.

Användarnamnet upptaget.

såhär ser det ut just nu:

```
<%
SQL = "INSERT INTO members (Login, Password, Email, Lag, Position, Kommentar, Goals, Matcher) " & _
"VALUES ('" & Request.Form("namn") &"','" & Request.Form("pass") &"','" & _
Request.Form("epost") &"','" & Request.Form("lag") &"','" & _
Request.Form("pos") &"','" & Request.Form("comment") &"','" & Request.Form("goal") &"','" & Request.Form("match") &"')" 
On Error Resume Next 

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("falala.mdb") 
Connection.Execute(SQL) 
If err.Number <> 0 Then
Response.Write "<P>" & err.Number & "<BR>" & err.Description & "</P>"
Response.Write "Användarnamnet upptaget."
End If
Connection.Close
Set Connection = Nothing
%>
```

Permalänk: https://www.webforum.nu/p/277362

## #15 — icaaq, 2001-07-15T10:52Z

```
<%
SQL = "INSERT INTO members ([Login], [Password], Email, Lag, Position, Kommentar, Goals, Matcher) " & _
"VALUES ('" & Request.Form("namn") &"','" & Request.Form("pass") &"','" & _
Request.Form("epost") &"','" & Request.Form("lag") &"','" & _
Request.Form("pos") &"','" & Request.Form("comment") &"','" & Request.Form("goal") &"','" & Request.Form("match") &"')" 
On Error Resume Next 
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("falala.mdb") 
Connection.Execute(SQL) 
If err.Number <> 0 Then
Response.Write "<P>" & err.Number & "<BR>" & err.Description & "</P>"
Response.Write "Användarnamnet upptaget."
End If
Connection.Close
Set Connection = Nothing
%>
```

testa att klammra dessa som jag har gjort :)

Permalänk: https://www.webforum.nu/p/277363

## #16 — Hazze, 2001-07-15T11:10Z

man tackar :D suveränt!

nu kan man inte längre registrera samma användarnamn. har dock ett par frågor till.

1) hur gör jag för att snygga till meddelandet om att använarnamnet är upptaget? just nu ser det lite skumt ut:

\-2147467259
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.

Användarnamnet upptaget. 

2) om registreringen går bra och använarnamnet är ledigt, var kan jag då lägga in en respone.redirect till en bekräftelse-sida?

Permalänk: https://www.webforum.nu/p/277364

## #17 — icaaq, 2001-07-15T11:29Z

```
<%
SQL = "INSERT INTO members ([Login], [Password], Email, Lag, Position, Kommentar, Goals, Matcher) " & _
"VALUES ('" & Request.Form("namn") &"','" & Request.Form("pass") &"','" & _
Request.Form("epost") &"','" & Request.Form("lag") &"','" & _
Request.Form("pos") &"','" & Request.Form("comment") &"','" & Request.Form("goal") &"','" & Request.Form("match") &"')" 
On Error Resume Next 
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("falala.mdb") 
Connection.Execute(SQL) 
If err.Number <> 0 Then
Response.Write "Användarnamnet upptaget."
Else
Response.redirect "sida2.asp"
End If
Connection.Close
Set Connection = Nothing
%>
```

tror jag, jag har aldrig använt denna kod själv :)

Permalänk: https://www.webforum.nu/p/277365

## #18 — Hazze, 2001-07-15T11:39Z

fungerar perfekt! stort tack :D

Permalänk: https://www.webforum.nu/p/277366

## #19 — icaaq, 2001-07-15T11:49Z

Är du :D \*lycklig\*, är jag :h \*lugn\*

Permalänk: https://www.webforum.nu/p/277367

## #20 — nakoz, 2001-07-15T13:19Z

```
SQL = "INSERT INTO members ([Login], [Password], Email, Lag, Position, Kommentar, Goals, Matcher) " & _
"VALUES ('" & [b]Trim(Request.Form("namn"))[/b] &"','" & Request.Form("pass") &"','" & _
Request.Form("epost") &"','" & Request.Form("lag") &"','" & _
Request.Form("pos") &"','" & Request.Form("comment") &"','" & Request.Form("goal") &"','" & Request.Form("match") &"')"
```

bara ett tips :)

Permalänk: https://www.webforum.nu/p/277368

---

Tråden på webben: https://www.webforum.nu/amne/asp/10562-upptaget-användarnamn  
Nästa sida: https://www.webforum.nu/amne/asp/10562-upptaget-användarnamn/page2.md
