webForumDet fria alternativet

Problem (stora/små bokstäver)

ASP

5 svar · 268 visningar · startad av Icebreaker

Medlem sedan juni 2000516 inlägg
Frågan#1

Håller på och bygger en liten community bara för skojs skull.
Har ett litet problem och det är när man ska registrera sitt användarnamn. Jag vill inte ha så att 2 st personer ska kunna ha samma användarnamn.
Jag kontrollerar detta med denna lilla kod:

Username = TRUE
Do Until Username = FALSE OR rs.EOF

If rs("User") = Request.Form("User") Then
Username = FALSE
Response.Write "Användarnamnet är upptaget!"
Exit Do
End If

rs.MoveNext
Loop

Denna kod funkar bra ifall man väljer ett namn som är EXAKT lika som det som redan finns. Den skiljer på stora och små bokstäver.
Jag vill ha så att det INTE skiljer på stora och små bokstäver.
Har jag exempelvis en person men namn "nisse" vill jag inte att någon ska kunna registrera "NISSE".
Kan man fixxa till koden på nått sätt så att detta löser sig eller måste jag skriva en ny kod-lösning?

Hoppas ni fattar.. ?

Medlem sedan juni 200032 967 inlägg
#2

Det där borde du lösa direkt i SQL-frågan med en WHERE-sats, då behöver du bara göra en EOF-koll, du slipper loopa, och allt går mycket smidigare. Exempel på SQL-fråga:

strSQL = "SELECT * FROM tblUsers WHERE UCase(UserName) = '" & UCase(Replace(Request.Form("UserName"), "'", "''")) & "'"

Jag utgår ifrån att du använder Access.

Mvh

Medlem sedan juni 2000516 inlägg
#3

Ja, det låter ju smidigt. Synd bara att jag är så dum och inte fattar :(

Här är koden i sin helhet. Om nån orkar ändra om den och lägga in @nders lösning kanske...

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("data/members.mdb") & ";pwd=;" 

Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM login" 
	
rs.Open SQL, Connect, adOpenStatic, adLockOptimistic

Username = TRUE
Do Until Username = FALSE OR rs.EOF

If rs("User") = Request.Form("User") Then
Username = FALSE
Response.Write "Användarnamnet är upptaget!"
Exit Do
End If

rs.MoveNext
Loop
		
If Username = TRUE THEN

rs.AddNew 
rs("User") = Request.Form("User")

rs.Update
rs.Close
Connect.Close

End If
Medlem sedan maj 200010 687 inlägg
#4
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("data/members.mdb") & ";pwd=;" 

Set rs = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM login UCase(UserName) = '" & UCase(Replace(Request.Form("User"), "'", "''")) & "'"

rs.Open SQL, Connect, adOpenStatic, adLockOptimistic

Set Connect = Nothing

Username = rs.EOF

If Username = True Then
	
	rs.AddNew 
	rs("User") = Request.Form("User")
	
	rs.Update
	
End If

Set rs = Nothing
Medlem sedan juni 2000516 inlägg
#5

Japp, funkar fin fint nu :)
Fick bara lägga till ett litet "WHERE" i SQL-strängen i Eriks kod. ;)

Medlem sedan maj 200010 687 inlägg
#6

Lite får du göra själv! ;)

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