Avatar billede tblaster Nybegynder
26. juni 2002 - 15:24 Der 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!
Avatar billede eagleeye Praktikant
26. juni 2002 - 16:01 #1
Her er lige første bud ud fra din beskrivelse:

<%
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

con.close
%>
Avatar billede tblaster Nybegynder
26. juni 2002 - 16:05 #2
Det giver følgende:

Expected end of statement
Avatar billede eagleeye Praktikant
26. juni 2002 - 16:09 #3
hvilken linie?
Avatar billede eagleeye Praktikant
26. juni 2002 - 16:10 #4
det kan være der skal () omkring SQL i execute linien:
set rs = con.execute (SQL)
Avatar billede tblaster Nybegynder
26. juni 2002 - 16:16 #5
Alt virker på nær når man angiver et ugyldigt brugernavn. Det giver følgende fejl:

error '80020009'
Exception occurred.

/admin/oprettet.asp, line 275

Linje 275 er denne:
if LCase(Session("auth_Gruppenavn")) = LCase(rs("Gruppenavn")) OR (LCase(Session("auth_Gruppenavn")) = "admin") then
Avatar billede eagleeye Praktikant
26. juni 2002 - 16:19 #6
Prøv lige denne If:

if Session("auth_Gruppenavn") = rs("Gruppenavn") OR Session("auth_Gruppenavn") = "Admin" then

Du skal lige tjekke/ændre "Admin" til det der skal stå nå admin er logget ind.. Husk at "admin" er ikke = "Admin".
Avatar billede eagleeye Praktikant
26. juni 2002 - 16:21 #7
sorry glem det det... jeg overså lige din besrivesle...
Avatar billede tblaster Nybegynder
26. juni 2002 - 16:22 #8
Det giver samme fejl! Problemet er jo at den bruger man ønsker at slette, den findes ikke ... er det ikke det du mangler at definer?
Avatar billede eagleeye Praktikant
26. juni 2002 - 16:22 #9
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
Avatar billede tblaster Nybegynder
26. juni 2002 - 16:39 #10
Nu melder den ved forkert brugernavn men nu kan alle andre end admin ikke slette selvom det er fra deres gruppe!
Avatar billede eagleeye Praktikant
26. juni 2002 - 17:06 #11
har du brugt den sidste?
Avatar billede tblaster Nybegynder
26. juni 2002 - 17:09 #12
Den aller sidste du smed ... yep ... den med forkert brugernavn!
Avatar billede eagleeye Praktikant
26. juni 2002 - 17:13 #13
og auth_Gruppenavn er det samme som Gruppenavn ?
Avatar billede tblaster Nybegynder
26. juni 2002 - 17:15 #14
yep!
Avatar billede eagleeye Praktikant
26. juni 2002 - 17:19 #15
jeg kan ikke helt forstå hvis det virkede før og ikke nu?? for det er samme if..hvis man nu sætte ( ) omkring inden OR:

if (LCase(Session("auth_Gruppenavn")) = LCase(rs("Gruppenavn"))) OR (LCase(Session("auth_Gruppenavn")) = "admin") then
Avatar billede tblaster Nybegynder
26. juni 2002 - 17:19 #16
Min fejl ... jeg havde lavet rod der hvor jeg defineret Session("auth_Gruppenavn")
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