Avatar billede krab Praktikant
16. juli 2003 - 22:38 Der er 43 kommentarer og
1 løsning

en lille mailliste!!

Hej..

jeg sidder og leger med noget meget simpel asp kode!!

Kan nogle fortælle mig, hvordan jeg får den til at tjække om mailen allerede er tilføjet engang inden den tilføjer den???

koden ser sådan ud!:

<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
email = Request("email")

if email = "" then
response.write("Du skal lige huske at skrive din E-Mail!!!")
end if

if email <> "" then
rs.AddNew
rs("email") = email
rs.update
response.write("Din E-Mail er nu tilføjet til krazz.6x.to mailinglist!!")
end if
end if
%>
Avatar billede bootie Nybegynder
16. juli 2003 - 22:45 #1
Der er sikkert noget smart SQL der kan gøre det men en nem måde er at lave et resultset indeholde emailen hvis den eksistere:

SQL = "SELECT * FROM mailliste WHERE email = "&email

Set result = conn.execute(SQL)

If result.EOF Then
  < emailen findes ikke og kan oprettes>
Else
  < emailen findes og noget andet kode laves >
End If
Avatar billede krab Praktikant
16. juli 2003 - 22:46 #2
hvor skal dette være??
SQL = "SELECT * FROM mailliste WHERE email = "&email
Avatar billede bootie Nybegynder
16. juli 2003 - 22:48 #3
Jeg går ud fra det er en database du har listen liggende i?
Og at du har lavet en connection til den?
Avatar billede krab Praktikant
16. juli 2003 - 22:49 #4
Nåå der!!

OK

prøver det lige,, Men er ikke helt sikker på at jeg forstår det!!
Avatar billede bootie Nybegynder
16. juli 2003 - 22:50 #5
Vi finder ud af det.

Kunne jeg få lov at se hele tid add new mail script?

Og hvilken db arbejder du på?
Avatar billede bootlab Nybegynder
16. juli 2003 - 22:52 #6
<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
strEmail = Request("email")

if strEmail = "" then
response.write("Du skal lige huske at skrive din E-Mail!!!")
end if

if strEmail <> "" then
sql = "SELECT * FROM din_tabel WHERE email=" & strEmail
rs.Execute(Sql)
If rs.EOF Then
    rs.AddNew
    rs("email") = strEmail
    rs.update
    response.write "Din E-Mail er nu tilføjet til krazz.6x.to mailinglist!!"
Else
    response.write "Din E-Mail er allerede på krazz.6x.to mailinglist!!"
End If
end if
end if
%>
Avatar billede krab Praktikant
16. juli 2003 - 22:55 #7
<<bootlab!! Den kommer med en fejl der siger..::

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6)
Objektet understøtter ikke denne egenskab eller metode: 'rs.Execute'
/krazz/maillist/add.asp, line 24
Avatar billede krab Praktikant
16. juli 2003 - 22:56 #8
hele koden ser således ud!:

    <%

Response.Buffer = True

'Åbner forbindelse til databsen
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("mailliste.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from mailliste order by id desc"

%>

<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
strEmail = Request("email")

if strEmail = "" then
response.write("Du skal lige huske at skrive din E-Mail!!!")
end if

if strEmail <> "" then
sql = "SELECT * FROM din_tabel WHERE email=" & strEmail
rs.Execute(Sql)
If rs.EOF Then
    rs.AddNew
    rs("email") = strEmail
    rs.update
    response.write "Din E-Mail er nu tilføjet til krazz.6x.to mailinglist!!"
Else
    response.write "Din E-Mail er allerede på krazz.6x.to mailinglist!!"
End If
end if
end if
%>
Avatar billede krab Praktikant
16. juli 2003 - 22:59 #9
nogle der ka hjælpe`?
Avatar billede bootie Nybegynder
16. juli 2003 - 23:01 #10
Yep.
Set rs = conn.Execute(Sql)
Avatar billede bootie Nybegynder
16. juli 2003 - 23:02 #11
Således det bliver:
...
if strEmail <> "" then
sql = "SELECT * FROM din_tabel WHERE email=" & strEmail
Set rs = conn.Execute(Sql)
If rs.EOF Then
...
Avatar billede krab Praktikant
16. juli 2003 - 23:06 #12
// Så kommer den med en fejl der hedder:::
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "email=krazzxpp@hotmail.com".
/krazz/maillist/add.asp, line 23
Avatar billede bootie Nybegynder
16. juli 2003 - 23:07 #13
Husker du at lave koden om til at reflektere din egen database?

Hedder din tabel din_tabel? og email  email?
Avatar billede bootie Nybegynder
16. juli 2003 - 23:08 #14
Den fortæller at det er linie 23 der fejler.
Kan du ikke lige skrive den linie herinde?
Avatar billede krab Praktikant
16. juli 2003 - 23:09 #15
Nej OK!!! Tabel... det ka jeg godt se.. :-)=!! Men hva mener du med email?
Avatar billede bootie Nybegynder
16. juli 2003 - 23:09 #16
Århh ja

String skkal i enkelt gnyf.
"SELECT * FROM din_tabel WHERE email= '"& strEmail &"'"

Så skulle den være der
Avatar billede krab Praktikant
16. juli 2003 - 23:09 #17
linje 23 : Set rs = conn.Execute(Sql)
Avatar billede bootlab Nybegynder
16. juli 2003 - 23:11 #18
<%

Response.Buffer = True

'Åbner forbindelse til databasen
Set rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("mailliste.mdb")
rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
strEmail = Request("email")

if strEmail = "" then
response.write("Du skal lige huske at skrive din E-Mail!!!")
end if

if strEmail <> "" then
sql = "SELECT * FROM mailliste WHERE email=" & strEmail
rs.Execute(Sql)
If Not rs.EOF Then
    response.write "Din E-Mail er allerede på krazz.6x.to mailinglist!!"
    rs.Close
Else
    sql = "Insert into mailliste (email) values('" & strEmail & "')
    rs.Execute(Sql)
    response.write "Din E-Mail er nu tilføjet til krazz.6x.to mailinglist!!"
    rs.Close
End If
end if
end if
%>
Avatar billede bootie Nybegynder
16. juli 2003 - 23:12 #19
Databasen indeholder nogle tabeller der igen indeholder nogle værdier.
din DB hedder mailinglisten, i den en tabel der hedder maillisten og i den tabel en række der hedder mail måske.

nummer  |  mail
---------------
1      |  my@email.dk
2      |  your@mail.dk

Og så videre
Avatar billede bootlab Nybegynder
16. juli 2003 - 23:12 #20
upss :)

sådan her:


<%

Response.Buffer = True

'Åbner forbindelse til databasen
Set rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("mailliste.mdb")
rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
strEmail = Request("email")

if strEmail = "" then
response.write("Du skal lige huske at skrive din E-Mail!!!")
end if

if strEmail <> "" then
sql = "SELECT * FROM mailliste WHERE email=" & strEmail
rs.Execute(Sql)
If Not rs.EOF Then
    response.write "Din E-Mail er allerede på krazz.6x.to mailinglist!!"
    rs.Close
Else
    sql = "Insert into mailliste (email) values('" & strEmail & "')"
    rs.Execute(Sql)
    response.write "Din E-Mail er nu tilføjet til krazz.6x.to mailinglist!!"
    rs.Close
End If
end if
end if
%>
Avatar billede krab Praktikant
16. juli 2003 - 23:13 #21
Nu virker det lidt mere men, nu kan den ikke tilføje!! Nu skriver den..:
Fejltype:
ADODB.Recordset (0x800A0CB3)
Det aktuelle postsæt understøtter ikke opdatering. Det kan skyldes en begrænsing af provideren eller den markerede låsetype.
/krazz/maillist/add.asp, line 25

Linje 25 :    rs.AddNew
Avatar billede bootlab Nybegynder
16. juli 2003 - 23:15 #22
det jeg har lavet?
Avatar billede krab Praktikant
16. juli 2003 - 23:15 #23
Ka ik helt få det til at virker... nu siger den igen:

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "email=krazzxpp@hotmail.com".
/krazz/maillist/add.asp, line 20
Avatar billede krab Praktikant
16. juli 2003 - 23:16 #24
linje 20 er: rs.Execute(Sql)
Avatar billede krab Praktikant
16. juli 2003 - 23:17 #25
Du kan selv se det på: http://www.krazz.6x.to  på forsiden!!
Avatar billede bootlab Nybegynder
16. juli 2003 - 23:17 #26
du skal prøve den sidste version jeg har lagt - den anden manglede en " til sidst i sql sætningen :)
Avatar billede krab Praktikant
16. juli 2003 - 23:18 #27
jeg har lige kopiret alt det sidste du skrev... det er der den kommer med fejl i linje 20!!
Avatar billede bootlab Nybegynder
16. juli 2003 - 23:25 #28
prøv det her så:

<%
Response.Buffer = True

'Åbner forbindelse til databasen
Set rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("mailliste.mdb")
rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
strEmail = Request("email")

if strEmail = "" then
response.write("Du skal lige huske at skrive din E-Mail!!!")
end if

if strEmail <> "" then
sql = "SELECT * FROM mailliste WHERE email=" & strEmail
Set Record = Rs.Execute(Sql)
if Not Record.EOF Then
    response.write "Din E-Mail er allerede på krazz.6x.to mailinglist!!"
    Record.Close
    rs.Close
else
    sql = "Insert into mailliste (email) values('" & strEmail & "')"
    rs.Execute(Sql)
    response.write "Din E-Mail er nu tilføjet til krazz.6x.to mailinglist!!"
    rs.Close
end If
end if
end if
%>
Avatar billede krab Praktikant
16. juli 2003 - 23:27 #29
Den kommer faktisk med den samme fejl!!

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "email=krazzxpp@hotmail.com".
/krazz/maillist/add.asp, line 19

Linje 19 er : Set Record = Rs.Execute(Sql)
Avatar billede bootie Nybegynder
16. juli 2003 - 23:28 #30
Hvor kommer man fra når man tager til halbal i Jelling?
Avatar billede bootlab Nybegynder
16. juli 2003 - 23:29 #31
ok så er her et sidste forsøg inden jeg skal i kassen:

<%
Response.Buffer = True

'Åbner forbindelse til databasen
Set rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("mailliste.mdb")
rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
strEmail = Request("email")

if strEmail = "" then
response.write("Du skal lige huske at skrive din E-Mail!!!")
end if

if strEmail <> "" then
sql = "SELECT * FROM mailliste WHERE email LIKE'" & strEmail & "'"
Set Record = rs.Execute(Sql)
if Not Record.EOF Then
    response.write "Din E-Mail er allerede på krazz.6x.to mailinglist!!"
    Record.Close
    rs.Close
else
    sql = "Insert into mailliste (email) values('" & strEmail & "')"
    rs.Execute(Sql)
    response.write "Din E-Mail er nu tilføjet til krazz.6x.to mailinglist!!"
    rs.Close
end If
end if
end if
%>
Avatar billede bootie Nybegynder
16. juli 2003 - 23:30 #32
Prøv lige at skriv
Set Record = Conn.Execute(Sql) istedet for
Set Record = Rs.Execute(Sql)
Avatar billede bootie Nybegynder
16. juli 2003 - 23:31 #33
eller nu er Conn jo fjernet... så lige meget med det!
Avatar billede squashguy Nybegynder
16. juli 2003 - 23:35 #34
prøv denne

<%
'Åbner forbindelse til databasen
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("mailliste.mdb")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

strEmail = Trim(Request.Form("email"))

if strEmail = "" then
    response.write("Du skal lige huske at skrive din E-Mail!!!")
else
    sql = "SELECT * FROM mailliste WHERE email='" & strEmail & "'"
    Set rs = conn.Execute(Sql)

    if Not (rs.EOF OR rs.BOF) Then
        response.write "Din E-Mail er allerede på krazz.6x.to mailinglist!!"
    else
        sql = "Insert into mailliste (email) values('" & strEmail & "')"
        conn.Execute(Sql)
        response.write "Din E-Mail er nu tilføjet til krazz.6x.to mailinglist!!"
    end if

    rs.close
end if

conn.close
%>
Avatar billede krab Praktikant
16. juli 2003 - 23:38 #35
<<squashguy !!  HEY FEDT DET VIRKER!!!! 1000 Takker!! :-)  OGSÅ MANGE TAK TIL ALLE ANDRE!!!
Avatar billede bootlab Nybegynder
16. juli 2003 - 23:44 #36
Endelig :)
Avatar billede bootie Nybegynder
16. juli 2003 - 23:47 #37
Ja, det var en hård nød at knække :)
Avatar billede nazaq Nybegynder
17. juli 2003 - 09:47 #38
Nej det var ikke :-)

Fejlmeddelelsen
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "email=krazzxpp@hotmail.com".
/krazz/maillist/add.asp, line 19

Betyder at når SQL skal eksekveres (sker i linie 19) er der en fejl i den SQL man vil eksekvere. I jeres tilfælde drejer det sig om at I søger efter om email=krazzxpp@hotmail.com men det kan den ikke finde ud af fordi email er af typen tekst så derfor skal det man sammenligner med også være. Der manglede ' rundt om emailadressen så der stod email='krazzxpp@hotmail.com' i SQL sætningen.

/T
Avatar billede squashguy Nybegynder
17. juli 2003 - 17:26 #39
nazaq... og så var der også lige de andre små skønhedsfejl...
Avatar billede krab Praktikant
17. juli 2003 - 17:38 #40
squashguy... Vi du ik oz ha point???
Avatar billede bootie Nybegynder
17. juli 2003 - 21:20 #41
nazaq>

Mente sådan set heller ikke at løsningen var en hård nød at knække..

Mente at der gik lang tid ingen vi fik ham sporet hen på det rigtige.
Jeg nævnte tidligere at der skulle '' uden om, men det var der ingen der fangede.

Thats all im saying.
Avatar billede bootlab Nybegynder
17. juli 2003 - 21:27 #42
Jeg vil også lige undskylde min "sloppy code" men den blev lavet "on the fly"
på vej i seng efter 3 glas rødvin :]
Og Bootie> Jeg fangede den godt ... hvis du kigger i de sidste script, så kom det oxo på..

Anyway -> Vi fik da vist at for mange "kokke" ikke fordærver maden :)
Avatar billede nazaq Nybegynder
18. juli 2003 - 07:27 #43
bootie->
Ja du har ret og det var også derfor at den ikke burde have været så hård :-) Desværre 'glemte' du den selv i din post lige efter ;-)

Men det er lige så meget for at påpeje at en meget almindelig fejl i forb. med SQL netop er at man glemmer hvilken typer man har sat feldterne til i databasen.

/T
Avatar billede bootie Nybegynder
18. juli 2003 - 14:35 #44
nazaq>
Yep. det glemmer man tit
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester