Avatar billede Mik2000 Professor
21. april 2008 - 21:00 Der er 5 kommentarer og
1 løsning

Slette underpunkter

Hej

Jeg har en tabel i en database med en menu i.

Der er (simpliceret):
id
subid
menunavn

Hvis et menupunkt har undermenupunkter, så er subid det samme som id'et i overmenupunktet

Eksempel (id, subid, menunavn)
1, 0, Menupunkt 1
2, 0, Menupunkt 2
3, 2, Undermenupunkt til Menupunkt 2
4, 1, Undermenupunkt til Menupunkt 1
5, 4, Undermenupunkt til ovenstående menupunkt (3. niveau)

Der kan være flere niveauer endnu

Hvis så man vælger at slette Menupunkt 1 så skal alle undermenupunkter slettes og også deres undermenupunkter mv mv mv

Hvordan laver man noget der gør det (en løkke der kan det), for de menupunkter der er i sidste niveau skal jo slettes først

Hvordan ????

På forhånd tak ..... spørg endelig hvis det er
Avatar billede coderdk Praktikant
21. april 2008 - 21:56 #1
En depth-first rekursiv funktion. "Pseudo"-kode:

function recursiveDelete($id)
{
  $sql = "SELECT id FROM menutabel WHERE subid = " . $id;
  $qh = mysql_query( $sql ) or die( mysql_error() );
  if ( mysql_num_rows( $qh ) > 0 )
  {
      while ( $row = mysql_fetch_assoc( $qh ) )
      {
        recursiveDelete( $row['id'] );
        $sql = "DELETE FROM menutabel WHERE id = " . $row['id'];
        mysql_query( $sql ) or die( mysql_error() );
      }
      mysql_free_result( $qh );
  }
}
Avatar billede coderdk Praktikant
21. april 2008 - 21:57 #2
Du kan gøre det som en løkke, da alle rekursive funktioner i reglen kan skrives som iterative funktioner, men det er lidt mere besværligt - Nogle ting er bare oplagte rekursive opgaver.
Avatar billede Mik2000 Professor
22. april 2008 - 00:39 #3
Det er superfint :)
Læg et svar og der er point :)
Avatar billede coderdk Praktikant
22. april 2008 - 07:26 #4
Ok :)
Avatar billede Mik2000 Professor
22. april 2008 - 16:01 #5
Tak for det :)
Avatar billede Mik2000 Professor
24. april 2008 - 10:20 #6
Hej coderdk

Du må gerne se på http://www.eksperten.dk/spm/829044 som vedrører lidt det samme, hvis du har tiden :)

Skal finde niveauet .....
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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