webForumDet fria alternativet

skriver inte till db, varför?

ASP

6 svar · 260 visningar · startad av timedia

Medlem sedan maj 2001420 inlägg
Frågan#1
If Request.Form("meld") = "yes" Then
Set RecSet = Server.CreateObject("ADODB.Recordset")
recipientcheck = "SELECT * FROM email"
RecSet.Open recipientcheck, DatabaseConnection, adOpenStatic, adLockOptimistic
On Error Resume Next

RecSet.Find "email LIKE '"& mailadd &"'"
If RecSet.EOF Then
	RecSet.AddNew
	RecSet("email") = addemail
	RecSet("date") = date()
	RecSet("ip") = Request.ServerVariables("REMOTE_ADDR")
		RecSet.Update
    		RecSet.Close
    	Set	RecSet = Nothing
   Response.Write "<center><p>(Du har nu lagts till som nyhetsbrevsprenumerant.)</p></center>"
	Else
   Response.Write "Tack för ditt svar."
End If

	End If

Har ett tävlingsformulär där man samtidigt kan välja att prenumerera på ett nyhetsbrev. Mailet går iväg som det ska, men den vill inte lägga till epostadressen i db :q

Medlem sedan juni 200032 967 inlägg
#2

Till att börja med tar du bort On error resume next och ser om det blir något felmeddelande när du kör koden.

On error resume next bör bannlysas från all kod under utveckling.

Medlem sedan dec. 200012 464 inlägg
#3
  1. Om du har on error resume next så måste du också kontrollera felkoden efter varje anrop.
  2. Använd inte filter, lägg villkoret i SQL-satsen
  3. Använd inte recordset för att updatera, använd SQL istället.
Medlem sedan maj 2001420 inlägg
#4

Ok (har bannlyst on error resume next nu) :r
Den skriver ut (Du har nu lagts till som nyhetsbrevsprenumerant.) alltså utan error, men det händer ändå inget i db.

Medlem sedan juni 200032 967 inlägg
#5

Dessutom:
* När du lägger till data i en tabell, rekommenderar jag att du använder rena SQL-frågor, dvs INSERT.
* Varför använder du LIKE i din SQL-fråga när du gör exakt jämförelse (dvs utan wildcards)? Använd =.
* Date är inget bra namn på en kolumn, ordet är reserverat. Klamra (enligt nedan), eller helst av allt; byt namn på fältet.

Jag hade skrivit koden så här:

If Request.Form("meld") = "yes" Then
	recipientcheck = "SELECT * FROM email where email = '"& Replace(mailadd, "'", "''") &"'"
	set RecSet = DatabaseConnection.Execute(recipientcheck)
	If RecSet.EOF Then
		strSQL = "INSERT INTO email (email, [date], ip) VALUES ('" & replace(mailadd, "'", "''") & "', date(), '" & Request.ServerVariables("REMOTE_ADDR") & "')"
		DatabaseConnection.Execute strSQL,,128
		Response.Write "<center><p>(Du har nu lagts till som nyhetsbrevsprenumerant.)</p></center>"
	Else
		Response.Write "Tack för ditt svar."
	End If
End If

Edit: hoppsan, här händer det grejer medans man skriver. ;)

Mvh

Medlem sedan maj 2001420 inlägg
#6

Och självklart funkar det nu :)
...men du gör ju fel ibland du också ser jag -hehe :e

Replace(mailadd, "'", "'')
Medlem sedan juni 200032 967 inlägg
#7

timedia skrev:

...men du gör ju fel ibland du också ser jag -hehe :e

Oh ja. Du skulle bara veta. :)

Jag redigerar dock.

Mvh

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