webForumDet fria alternativet

Kolla om mailen redan finns i databasen vid registrering

ASP

36 svar · 822 visningar · startad av Sico

Medlem sedan maj 20002 597 inlägg
Frågan#1
Set RSUser = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT f_Mail FROM t_Administrators"

If Request.Form("txtmail") = RSConn("f_Mail") Then
Response.Write "Du har redan registrerat dig med den mailen förut. "

ElseIf RSConn.Addnew
RSConn("f_Mail") = Request.Form("txtmail")
RSConn.Update
RSConn.Close

End If

skrev på fri hand så jag har inte testat den än, men stämmer det?

Medlem sedan feb. 20022 594 inlägg
#2

Du måste väl loopa ut det, annars kollar den ju bara på den översta posten. Eller har jag fel?

Medlem sedan dec. 200012 464 inlägg
#3

Nu förutsätter jag att ditt connection-objekt heter connect.

SQL = "SELECT f_Mail FROM t_Administrators where f_mail = '" & _
 Request.Form("txtmail") & "'"

set rsconn = connect.execute(sql)

If not Rsconn.eof Then
Response.Write "Du har redan registrerat dig med den mailen förut. "

Else
RSConn.Addnew
RSConn("f_Mail") = Request.Form("txtmail")
RSConn.Update
RSConn.Close

End If
Medlem sedan feb. 20012 412 inlägg
#4

Svarade på det härom dagen:

http://www.webforum.nu/showthread.php?s=&threadid=40659

Medlem sedan maj 20002 597 inlägg
#5

ok, tackar... jag har läst en del om asp men har inte hittat nåt som förklarar vad alla små finurliga tecken gör. vad gör ' igentligen?

Sen vet jag ju att RSConn.addnew suger, hur ska jag göra för att lägga till genom sql satsen?

namn = Request.Form( "txtnamn" )
mail = Request.Form( "txtmail" )

strSQL = "INSERT INTO t_Administrator "
strSQL = strSQL & "( f_Namn, f_Mail ) "
strSQL = strSQL & "VALUES( '" & namn & "', " & mail & " )"

Databas.Execute( strSQL )

har jag fel? jag chansar lite

Medlem sedan feb. 20012 412 inlägg
#6

Det ser rätt ut :D

Minemal förenkling och optimering:

sql ="INSERT INTO t_Administrator (f_namn, f_Mail) VALUES('" & Request.Form( "txtnamn" ) & "', '" & Request.Form( "txtmail" ) & "')"

Databas.Execute sql,,128
Medlem sedan maj 20002 597 inlägg
#7

mjo tänkte så först men det är inte kul å titta på den koden :h
Lust å förklara innebörden med ' ? vill vara säker, annars kommer man ju aldrig att lära sig asp ordentligt om man inte fattar exakt när å varför man ska använda fnutten.

Medlem sedan apr. 20012 427 inlägg
#8

Det låter som om en grundläggande kurs/bok i ASP skulle göra dig nytta. "Beginning Active Server Pages 3.0" från "Wrox" är riktigt bra.

Medlem sedan maj 20002 597 inlägg
#9
SQL = "SELECT f_Mail FROM t_Administrators where f_mail = '" & Request.Form("txtmail") & "' OR f_User = '" & Request.Form("txtAnvandare") & "'"

	set RSConn = Connect.Execute(SQL)

If not Rsconn.eof Then
Response.Write "Mail adressen är upptagen, var god välj en annan.<br><a href=""login.asp?registrera"">Tillbaka</a> "

Else
'lägger till andänvaren osv osv här nedan...

där är en kontroll av både mail och användarnamnet.. hur ska jag göra så att den ska välja rätt felmeddelande vid rätt tilfälle? (har inte skrivigt in felmeddelandet för användaren än) eller måste man göra 2st skillda sql satser?

Medlem sedan feb. 20012 412 inlägg
#10

Så som det är nu kollar den antingen om det ena eller andra är upptaget. Vill du kolla båda så byta ut OR mot AND i din SQL-fråga. Menar du fnuttarna runt variablerna?

I så fall kommer här en förklaring:

Variabel av texttyp i access eller variabel av texttyp eller datumtyp i mysql och sql-server.

'" & variable &"'

Variabel av datumtyp i access

#" & variable &"#

Variabel av numerisk typ i samtliga tre

" & variable &"
Medlem sedan maj 20002 597 inlägg
#11

ok, jag byter ut OR mot AND. men hur ska jag kunna specificera vilket felmess den ska visa?

Medlem sedan feb. 20012 412 inlägg
#12

Med nedanstående bör du ha OR i din sql-fråga


SQL = "SELECT f_Mail, f_namn FROM t_Administrators where f_mail = '" & Request.Form("txtmail") & "' OR f_User = '" & Request.Form("txtAnvandare") & "'"

set rsconn = connect.execute(sql)

If not Rsconn.eof Then

if rsconn("f_mail") =  " & Request.Form("txtmail") & " then

response.write "mailen var upptagen"

elseif rsconn("f_namn") =  " & Request.Form("txtAnvandare") & " then

response.write "namnet var upptagen"

elseif rsconn("f_namn") =  " & Request.Form("txtAnvandare") & " and rsconn("f_mail") =  " & Request.Form("txtmail") & " then

response.write "båda var upptagna"

else

response.write "ett fel uppstod"

end if

Else
'#-- gör inserten --
End If
Medlem sedan maj 20002 597 inlägg
#13

Funkar nästan...

SQL = "SELECT f_Mail, f_User FROM t_Administrators where f_mail = '" & Request.Form("txtmail") & "' OR f_User = '" & Request.Form("txtAnvandare") & "'"

	set rsconn = connect.execute(sql)

If not rsconn.eof Then

	If RSConn("f_mail") = Request.Form("txtmail") Then

	Response.Write "mailen var upptagen"

	ElseIf RSConn("f_user") = Request.Form("txtAnvandare") Then

	Response.Write "namnet var upptagen"

	Else

	Response.Write "båda var upptagna"

	End If

Else
	anvandare = Request.Form( "txtAnvandare" )
	losenord = Request.Form("txtLosen")
	mail = Request.Form( "txtMail" )

	strSQL = "INSERT INTO t_Administrators "
	strSQL = strSQL & "( f_User, f_Mail, f_Password ) "
	strSQL = strSQL & "VALUES( '" & anvandare & "', '" & mail & "', '" & losenord & "' )"

	Connect.Execute( strSQL )

	Response.Redirect "login.asp?registrera=tack"
End If
End If

If Request.QueryString("registrera") = "tack" Then

Response.Write "<font class=smallheader>Tack för din registrering.</font><br>" &_
	"<a href=login.asp?login>Logga in här</a>"
End If

Skriver jag in en mail som redan finns så säger den rätt fel mess men när användarnamnet redan finns så säger den att båda är fel fast det bara är användarnamnet..

Sätter jag tillbaka " & runt If RSConn("f_mail") = Request.Form("txtmail") Then och för användarna så klagar den på att Then väntas....Utan blir det inga felmeddelande men som sagt, den klarar inte läsa att användarnamnet är upptaget utan går ner till att båda är upptagna.

Medlem sedan feb. 20012 412 inlägg
#14

Liten hjärnblödning av mig, klade till en extra koll samt rättade till mina misstag, du såg nog inte in senaste redigering i förra svaret:


if not isnull(Request.Form("txtmail")) then

strmail = Cstr(Request.Form("txtmail"))

elseif not isnull(Request.Form("txtAnvandarel")) then

strAnvandare = Cstr(Request.Form("txtAnvandare"))

end if

SQL = "SELECT f_Mail, f_namn FROM t_Administrators where f_mail = '" & strmail & "' OR f_User = '" & strAnvandare & "'"

set rsconn = connect.execute(sql)

If not Rsconn.eof Then

if rsconn("f_mail") =  strmail then

response.write "mailen var upptagen"

elseif rsconn("f_namn") = strAnvandare then

response.write "namnet var upptagen"

elseif rsconn("f_namn") =  strAnvandare and rsconn("f_mail") =  strmail then

response.write "båda var upptagna"

else

response.write "ett fel uppstod"

end if

Else
'#-- gör inserten --
End If
Medlem sedan maj 20002 597 inlägg
#15

samma fel som innan, har du gjort nån redigering denna gången? :)

Medlem sedan feb. 20012 412 inlägg
#16

Du har två namn på ett fält, vilket gäller f_namn eller f_user?

Medlem sedan maj 20002 597 inlägg
#17

jag har ändrat.. jag postar koden så du får se om det e nån fjantig fnutt lr nåt jag missat :(

if not isnull(Request.Form("txtmail")) then

strmail = Cstr(Request.Form("txtmail"))

elseif not isnull(Request.Form("txtAnvandare")) then

strAnvandare = Cstr(Request.Form("txtAnvandare"))

end if

SQL = "SELECT f_Mail, f_User FROM t_Administrators where f_mail = '" & strmail & "' OR f_User = '" & strAnvandare & "'"

set rsconn = connect.execute(sql)

If not Rsconn.eof Then

if rsconn("f_mail") =  strmail then

response.write "mailen var upptagen"

elseif rsconn("f_User") = strAnvandare then

response.write "namnet var upptagen"

elseif rsconn("f_User") =  strAnvandare and rsconn("f_mail") =  strmail then

response.write "båda var upptagna"

else

response.write "ett fel uppstod"

end if

Else
	anvandare = Request.Form( "txtAnvandare" )
	losenord = Request.Form("txtLosen")
	mail = Request.Form( "txtMail" )

	strSQL = "INSERT INTO t_Administrators "
	strSQL = strSQL & "( f_User, f_Mail, f_Password ) "
	strSQL = strSQL & "VALUES( '" & anvandare & "', '" & mail & "', '" & losenord & "' )"

	Connect.Execute( strSQL )

	Response.Redirect "login.asp?registrera=tack"
End If
Medlem sedan feb. 20012 412 inlägg
#18

Visserligen är jag rätt trött i hönshjärnan nu, men jag hittar tyvärr inget fel i min senaste kod, förutom de fältnamnen du ändrade. :(

Medlem sedan maj 20002 597 inlägg
#19

Jag tror jag läst koderna du skickat typ 500ggr så jag lär ju se i syne. Fasen åxå då!!

Medlem sedan maj 20002 597 inlägg
#20

Hmm, jag ljög nog lite, det är inte samma fel denna gången utan det spelar ingen roll om användarnamnet redan finns utan den skapar en ny med samma ändå :(
men det går inte att skapa en ny användare om mailen redan finns.

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