15. februar 2003 - 20:45Der er
15 kommentarer og 3 løsninger
Slette fra flere tabeller
Hej med jer...
Jeg har lavet et system hvor en bruger selv kan melde sig fra. Hvis han gør det bliver hans info fra tabellen "brugere" slettet. Jeg ønsker imidlertid samtidig at alle de indlæg vedkommende har lavet også bliver slettet - de ligger i tabellen beskeder.
Skal du slette hvor frabrugerid=brugerid fra de to tabeller er ens eller?
Synes godt om
Slettet bruger
15. februar 2003 - 22:48#6
Jeg skal slette brugerens info i tabellen "brugere" + alle hans indlæg i tabellen "beskeder". RS Beskederne har alle tilknyttet brugerens id.
Men den skal naturligvis kunne slette brugerinfo + de beskeder som vedkommende selv har skrevet som ønsker at slette sin egen bruger-profil. Derfor spurgte jeg også til hvorvidt det ikke skal angives HVILKET brugerid den skal gå efter i SQL'en?
Umiddelbart ville jeg mene det leteste så er at lave 2 SQL som sletter når du kender ID på den som skal slettes.:
userid = Request.QueryString("userid")
SQL = "DELETE FROM brugere WHERE brugerid = " & userid RS.open SQL, ConnString, adOpenStatic, adLockOptimistic RS.Close SQL = "DELETE FROM beskeder WHERE frabrugerid = " & userid RS.open SQL, ConnString, adOpenStatic, adLockOptimistic RS.Close
Synes godt om
Slettet bruger
15. februar 2003 - 22:56#9
Hossein >>
SQL = "DELETE * FROM beskeder, brugere WHERE frabrugerid=brugerid" = [Microsoft][ODBC Microsoft Access Driver] Specify the table containing the records you want to delete.
SQL = "DELETE FROM beskeder,brugere WHERE beskeder.frabrugerid=brugere.brugerid"
Så vil du tømme hele din database da den vil sltte alle reocrd hvor denne betingelse er opfyldt og det er den ligemeget hvilket ID en bruger har: WHERE beskeder.frabrugerid=brugere.brugerid
Synes godt om
Slettet bruger
15. februar 2003 - 23:02#11
eagleeye >> ja det er jo ret vigtigt. Men får en underlig fejl med din: Operation is not allowed when the object is closed.
'--- Tjek om random-nummer fra mail passer til brugerens i database Set RS = server.CreateObject("ADODB.connection") ConnString= "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb") RS.open ConnString SQL = "SELECT brugerid,randomnrdel FROM brugere WHERE brugerid=" & userid & "" Set RS = RS.Execute(SQL) if rs.EOF then response.write "Der opstod desværre en fejl!" else randomnrdel=RS("randomnrdel")
SQL = "DELETE FROM brugere WHERE brugerid = " & userid RS.open SQL, ConnString, adOpenStatic, adLockOptimistic RS.Close SQL = "DELETE FROM beskeder WHERE frabrugerid = " & userid RS.open SQL, ConnString, adOpenStatic, adLockOptimistic RS.Close
RS = null
session("login") = false %> Bruger-profil slettet.<br><br> <meta http-equiv="refresh" content="2;URL=default.asp"> <% else response.write "Der opstod desværre en fejl!" end if end if %>
Det for du har både kaldt dit recordset og din coinnection for RS så går der lidt ged i det, kald Connection for Conn or Recordset for rs så tager man ikke fejl.:
Set Conn = server.CreateObject("ADODB.connection") ConnString= "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb") Conn.open ConnString SQL = "SELECT brugerid,randomnrdel FROM brugere WHERE brugerid=" & userid & "" Set RS = Conn.Execute(SQL) if rs.EOF then response.write "Der opstod desværre en fejl!" else randomnrdel=RS("randomnrdel")
Conn.Open ConnString SQL = "DELETE FROM brugere WHERE brugerid = " & userid Conn.Execute(SQL) SQL = "DELETE FROM beskeder WHERE frabrugerid = " & userid Conn.Execute(SQL) Conn.Close Set Conn = Nothing
Synes godt om
Ny brugerNybegynder
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.