webForumDet fria alternativet

skriver inte till db, varför?

ASPur ASP

6 svar · 260 visningar · startad av timedia

timediaMedlem sedan maj 2001420 inlägg
#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

@ndersMedlem sedan juni 200032 969 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.

LarsGMedlem 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.
timediaMedlem 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.

@ndersMedlem sedan juni 200032 969 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

timediaMedlem 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, "'", "'')
@ndersMedlem sedan juni 200032 969 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

130 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)