Avatar billede weiland Nybegynder
04. juli 2003 - 22:30 Der er 3 kommentarer og
1 løsning

Rekursiv sletning af poster

Jeg har et debat-forum, hvor jeg har brug for at kunne slette alle poster, der vedrører et bestemt indlæg.

Post1: Spørgsmål
Post2:  > Svar
Post3:      > RE: Svar

Posterne har et ID og ParentID. Således har post3 i eksemplet ikke nogen relation til post1, men derimod til post2.
Men jeg skal kunne være sikker på, at både post2 og post3 slettes, når jeg sletter post1.

Jeg gætter på, at det kræver en rekursiv funktion, men hvordan?
Avatar billede Slettet bruger
04. juli 2003 - 22:32 #1
Det vil kræve en transaktions-styring, for at du kan være sikker på at slette alle ting. Du kunne dog også blot sørge for at slette i rækkefølgen Post1 -> Post2 -> Post3, og derefter tjekke posteringer uden relationer til niveau'et over dem..... Kun et forslag dog.... :-)
Avatar billede ellebaek Nybegynder
04. juli 2003 - 22:42 #2
hvorfor laver du ikke bare en ekstra tabel i databasen der indeholder idet for det oprindelige spg. på den måde kunne du slette alle ved bare at side...

"DELETE FROM tabel WHERE oprspg = " request("spg")

På den måde kan du sikre at der ikke er nogen kommentare tilbage til et bestemt spg..!
Avatar billede eagleeye Praktikant
04. juli 2003 - 22:43 #3
Eks på en rekrusiv function som løber igennem strukturen og sletter dem.

HUSK at tage BACK-UP INDEN TEST af scrips som sletter ;)


<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db5.mdb")

function slet(id)
  Set rs = Server.CreateObject("ADODB.Recordset")
  SQL = "Select id from xxtabel where parentID=" & id
  set rs = conn.execute(SQL)

  do while not rs.EOF   
    slet rs("ID")
    rs.movenext
  loop
  SQL = "delete from xxtabel where id = " & id
'  Response.Write SQL & "<br>"
  conn.Execute(SQL)
 
  rs.Close
  Set rs = Nothing
end function


slet 1

%>
Avatar billede weiland Nybegynder
04. juli 2003 - 23:03 #4
Genialt, det virker 100%!
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