26. juni 2002 - 15:24Der er
15 kommentarer og 1 løsning
Sletning af oplysninger i databasen
Hejsa
Jeg har følgende kode til at slette en bruger i en database:
<%
Set Con = Server.CreateObject("ADODB.Connection") DBPath = "DBQ=" & server.mappath("../Login/Login.mdb") Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
sql = "DELETE * From Bruger Where Brugernavn = '" & Request.Form("Brugernavn") & "'" Set rs = Con.Execute(Sql)
response.write "Brugeren er nu slettet" %>
Det virker også fint nok. Det jeg bare gerne skal have lidt hjælp til er at få den til at checke for brugerens gruppenavn.
Jeg har lavet denne sql streng:
SQL = "SELECT Grupper.Gruppenavn, Bruger.Brugernavn FROM Bruger INNER JOIN Grupper ON Bruger.Gruppenavn = Grupper.GruppeId WHERE Brugernavn = '" & Request.Form("Brugernavn") & "'"
Det jeg så gerne vil have er at en eller anden lige gider smide koderne sammen. Det der skal gøres er at følgende skal checkes:
Inden noget udføres skal der checkes om: Session("auth_Gruppenavn") = Admin Hvis den er det så skal følgende køres og ikke andet:
<%
Set Con = Server.CreateObject("ADODB.Connection") DBPath = "DBQ=" & server.mappath("../Login/Login.mdb") Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
sql = "DELETE * From Bruger Where Brugernavn = '" & Request.Form("Brugernavn") & "'" Set rs = Con.Execute(Sql)
response.write "Brugeren er nu slettet" %>
Er Session("auth_Gruppenavn") >< Admin så skal vi hente gruppenavnet på ham vi ønsker at slette fra databasen: SQL = "SELECT Grupper.Gruppenavn, Bruger.Brugernavn FROM Bruger INNER JOIN Grupper ON Bruger.Gruppenavn = Grupper.GruppeId WHERE Brugernavn = '" & Request.Form("Brugernavn") & "'"
Derefter skal hans gruppenavn sammenlignes med Session("auth_Gruppenavn"). Hvis disse 2 er ens så skal brugeres bare slettes vha:
<%
Set Con = Server.CreateObject("ADODB.Connection") DBPath = "DBQ=" & server.mappath("../Login/Login.mdb") Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
sql = "DELETE * From Bruger Where Brugernavn = '" & Request.Form("Brugernavn") & "'" Set rs = Con.Execute(Sql)
response.write "Brugeren er nu slettet" %>
Er Session("auth_Gruppenavn") derimod ikke lig med gruppenavnet på ham vi ønsker at slette så skal han få en besked om at han ikke har adgang til at slette denne brugere.
Håber der er til at forstå! Rækkefølgen af hvordan det hele skal komme er underordnet!
<% Set Con = Server.CreateObject("ADODB.Connection") DBPath = "DBQ=" & server.mappath("../Login/Login.mdb") Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
'Find GruppeID for den bruger som slettes SQL = "SELECT Bruger.Gruppenavn FROM Bruger WHERE Brugernavn = '" & Request.Form("Brugernavn") & "'" set rs = con.execute SQL
'Test om sletter er i samme gruppe som den som bliver slette eller sletteren er admin if LCase(Session("auth_Gruppenavn")) = LCase(rs("Gruppenavn")) OR (LCase(Session("auth_Gruppenavn")) = "admin") then sql = "DELETE * From Bruger Where Brugernavn = '" & Request.Form("Brugernavn") & "'" Con.Execute(Sql) response.write "Brugeren er nu slettet" else response.write "Du har ikke har adgang til at slette denne brugere" end if
så udvider du og tjekke på om rs er tomt sådan her:
set rs = con.execute SQL
if NOT rs.EOF then 'Test om sletter er i samme gruppe som den som bliver slette eller sletteren er admin if LCase(Session("auth_Gruppenavn")) = LCase(rs("Gruppenavn")) OR (LCase(Session("auth_Gruppenavn")) = "admin") then sql = "DELETE * From Bruger Where Brugernavn = '" & Request.Form("Brugernavn") & "'" Con.Execute(Sql) response.write "Brugeren er nu slettet" else response.write "Du har ikke har adgang til at slette denne brugere" end if else response.write "Forkert brugernavn angivet" end if
Min fejl ... jeg havde lavet rod der hvor jeg defineret Session("auth_Gruppenavn")
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.