27. december 2001 - 17:25Der er
22 kommentarer og 1 løsning
undersøg om værdi findes i database
Hej eksperter. Jeg har et forum, som virker ved hjælp af en access database. Jeg har lavet en tabel som hedder forummail, hvor jeg gemmer oplysninger om hvilke email adresser som skal modtage en mail når der svares på et givent indlæg, ligesom på eksperten. Jeg bruger følgende kode til at indsætte oplysninger i tabellen:
if Request.form(\"email\") <> \"\" then strSQL = \"Insert into forummail (\" strSQL = strSQL & \"mail, \" strSQL = strSQL & \"indlaegid) \" strSQL = strSQL & \"values( \" strSQL = strSQL & \"\'\" & strCorrect(Request.form(\"email\")) & \"\', \" strSQL = strSQL & \"\'\" & strCorrect(Request.form(\"indlaegid\")) & \"\')\" objConn.Execute(strSQL) objconn.close set objconn = nothing end if
Og det virker fint, men der dog et problem med overstående, nemlig hvis den samme person svarer flere gange på et indlæg, så tilføjes denne person til mail tabellen igen, og modtager nu to mails når nogen svarer efter ham.
Det må kunne undgås hvis man undersøgte om en given emailadresse er tilføjet til tabellen med et givent indlaegid. Men hvordan man kan gøre dette, ved jeg ikke.
Det jeg ønsker der derfor en metode til, at undersøge om en emailadresse allerede er tilføjet, og derfor modtager mails fra, et bestemt indlaegid.
Det er lidt svært at forklare, så hvis i har spørgsmål, så stil dem roligt
noget med at du chekke om den findes ved at lave et udtræk med noget i stil select ... where mail (den adresse som står i db) = mail (den som personen har indtastet og som du nu har gemt i en variabel)...
hvis du så bruger en if løkke.. if mail <> mail then...
Okay, jeg er først ved at forstå den kode nu. Og jeg tror faktisk den virker, men jeg kan ikke selv få den til det. Jeg tror der er bedst at finde alle de rs som har indlaegid = det id som vi har Eks:
SQL = \"Select * FROM forummail WHERE indlaeg = \'\" & Request.form(\"indlaeg\") & \"\'\" Set RS = Conn.Execute(strSQL)
Og hvis man så undersøget om der findes et rs som indeholder den emailadresse som vi vil tilføje, måske noget ala:
Do If rs(“mail”) <> Request.form(\"mail\") then Mail_ok = 1 End if Loop
Og hvis mail_ok = 1 tilføjes personen til db’en:
If Mail_ok = 1 then
Kode til indsættelse I database…
Kan man ikke gøre det sådan, eller måske lettere???
“ det var fordi jeg skrev det i word, det betyder bare \' eller \"
Jeg har selv lavet følgende kode, men det virker ikke, så hvis du gidder at kigge på det vil jeg blive meget glad:
if Request.form(\"email\") <> \"\" then
strSQL = \"Select * FROM forummail WHERE indlaegid = \" & Request.form(\"indlaegid\") & \"\" Set rs = objConn.Execute(strSQL) if rs(\"id\") <> \"\" then response.write \"\" & rs(\"id\") else mail_ok = 1 end if
Do While Not rs.EOF or rs.BOF If rs(\"mail\") <> Request.form(\"mail\") then Mail_ok = 1 End if rs.MoveNext Loop
If Mail_ok = 1 then strSQL = \"Insert into forummail (\" strSQL = strSQL & \"mail, \" strSQL = strSQL & \"indlaegid) \" strSQL = strSQL & \"values( \" strSQL = strSQL & \"\'\" & strCorrect(Request.form(\"email\")) & \"\', \" strSQL = strSQL & \"\'\" & strCorrect(Request.form(\"indlaegid\")) & \"\')\" objConn.Execute(strSQL) objconn.close set objconn = nothing end if end if Response.Redirect \"show.asp?id=\" & Request.form(\"indlaegid\") %>
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.