Avatar billede goce Nybegynder
26. december 2003 - 13:52 Der er 11 kommentarer og
1 løsning

At slette sin bruger i DB'en

Jeg sidder og forsøger at hitte ud af noget ASP, og nu mangler jeg kun en sidste funktion før webstedet er færdigt... Mine brugere kan oprette sig, og man kan derefter søge på dem og læse deres profiler, osv., men nu mangler jeg bare en funktion: Når en bruger indtaster sit brugernavn og password i 2 bestemte felter og klikker "Slet", skal hele den brugers oprettelse (altså oprettede række i databasen) slettes, HVIS brugernavnet og password'et altså eksisterede og passede sammen.

-Nogen, som kan hjælpe?

Mvh
Goce
Avatar billede aner-intet Nybegynder
26. december 2003 - 13:55 #1
Er det et forum ?
Avatar billede goce Nybegynder
26. december 2003 - 13:57 #2
Nej, folk kan bare oprette annoncer... Lang historie...
Avatar billede eagleeye Praktikant
26. december 2003 - 14:11 #3
Hvis du vil sikre at det indtastede findes så kan man lave en select først og så slette profilen. Du skal havde en connection conn til din database og talel og kolonnenavne skal måske lige rettes til, så de passer mit din database:

brugernavn = replace(Request.Form("brugernavn"),"'","''")
password = replace(Request.Form("password"),"'","''")
sql = "select * from brugere where brugernavn = '" & brugernavn & "' AND password = '" & password & "'"
Set rs = Conn.Execute(SQL)
if not rs.EOF then
  Response.Write "Bruger slettet"
  sql = "delete from brugere where brugernavn = '" & brugernavn & "' AND password = '" & password & "'"
  conn.Execute(SQL)
else
  Response.Write "Bruger findes ikke"
end if
Avatar billede nmh Nybegynder
26. december 2003 - 14:17 #4
Hvis brugernavnet og passwordet er kendte vil følgende sql-ordre slette brugerens data.
SQL="Delete * from Test where brugernavn='" &  brugernavn &"'" &  " and password='" & password &"'"
Avatar billede eagleeye Praktikant
26. december 2003 - 14:22 #5
Der er i princippet ingen grund til at tjekke først for hvis man skriver noget forkert i brugernavn og password får man ikke en fejl nå man bare kun laver en delete sql:
brugernavn = replace(Request.Form("brugernavn"),"'","''")
password = replace(Request.Form("password"),"'","''")
sql = "delete from brugere where brugernavn = '" & brugernavn & "' AND password = '" & password & "'"

Problemet er bare at man så vil udskrive "Brugeren slettet" men hvis nu brugeren har skrevet enten sit brugernavn eller password forkert vil brugeren tror han var slettet, men det er han ikke. Så det et valg man kan gøre...
Avatar billede goce Nybegynder
26. december 2003 - 14:30 #6
Så er dette rigtigt?

<%
  Set rs = Server.CreateObject("ADODB.RecordSet")
  Set Conn = Server.CreateObject("ADODB.Connection")
  strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/ansogning.mdb")
 
brugernavn = replace(Request.Form("brugernavn"),"'","''")
password = replace(Request.Form("password"),"'","''")
sql = "select * from brugere where brugernavn = '" & brugernavn & "' AND password = '" & password & "'"
Set rs = Conn.Execute(SQL)
if not rs.EOF then
  Response.Write "<b>Annoncen er nu slettet!</b>"
  sql = "delete from annonce where brugernavn = '" & brugernavn & "' AND password = '" & password & "'"
  conn.Execute(SQL)
else
  Response.Write "Brugernavnet eller password'et er forkert... Prøv igen!"

  rs.Update

  'lukker pænt igen
  rs.Close
  set rs = Nothing

end if
%>
Avatar billede eagleeye Praktikant
26. december 2003 - 14:33 #7
Ja dog skal du hvade linjen med rs.Update slettet, og end if skal helt op lige efter Response.Write linjen:

Så if sætningen og de sidste linjer bliver:

if not rs.EOF then
  Response.Write "<b>Annoncen er nu slettet!</b>"
  sql = "delete from annonce where brugernavn = '" & brugernavn & "' AND password = '" & password & "'"
  conn.Execute(SQL)
else
  Response.Write "Brugernavnet eller password'et er forkert... Prøv igen!"
end if

'lukker pænt igen
rs.Close
set rs = Nothing

%>
Avatar billede eagleeye Praktikant
26. december 2003 - 14:34 #8
og så mangler dee lige en Conn.Open linje efter linjen med strDSN:

  Set Conn = Server.CreateObject("ADODB.Connection")
  strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/ansogning.mdb")
  Conn.Open strDSN
Avatar billede goce Nybegynder
26. december 2003 - 14:36 #9
ADODB.Connection error '800a0e78'

Operation is not allowed when the object is closed.

/slet_annonce_ok.asp, line 12
Avatar billede goce Nybegynder
26. december 2003 - 14:37 #10
Nok det, der er fejlen... Tjekker lige...
Avatar billede goce Nybegynder
26. december 2003 - 14:45 #11
Ja, det virker... Tak!
Avatar billede eagleeye Praktikant
26. december 2003 - 14:47 #12
Ok det lyder godt ;)

Lige en sidste ting ;)

Det er også altid godt at lukke sin connection lige som du lukker dit recordset sidst i koden:

'lukker pænt igen
rs.Close
set rs = Nothing


Så det bliver:

'lukker pænt igen
rs.Close
set rs = Nothing
Conn.Close
Set Conn = Nothing
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