Hvis der forefindes en undermappe, kalder funktionen sig selv, blot med id'et på undermappen...
Prøver med et par kommentare:
function delTree($folder) {
//$folder er id'et på den aktive mappe.
// Finder alle undermapper i mappen med id'et der er angivet i $folder:
$sel = mysql_query("SELECT `id` FROM `mapper` WHERE `ejer` = ".$folder);
//Tjekker om der findes undermapper:
if(0 < mysql_nom_rows($sel)) {
//Hvis der er undermapper køres dette:
while($r = mysql_fetcharray($sel)) {
//For hver undermappe der er i mappen kaldes funktionen igen.
delTree($r['id']);
}
}
// Når funktionen har kørt slettes mappen:
mysql_query("DELETE FROM `mapper` WHERE `id` = ".$folder);
}
For bedre at forstå koden:
Vi har mappestruktur der ser således ud:
rod (id = 1)
|--Level 1 mappe 1(id = 2)
|--level 1 mappe 2(id = 3)
|--level 2 mappe 1(id = 4)
Vi vil slette rod mappen, med alle undermapper:
delTree(1)
Funktionen er nu kaldt med id'et på rodmappen.
Den finder 2 undermapper, funktionen kaldes for hver undermappe. Funktionen tjekker om der findes undermapper, der findes to. Den ene (id = 2) har ingen undermappe, og slettes bare, den anden (id = 3) har en undermappe, og funktionen kaldes (delTree(3)) og finder sletter undermappen.
Når den sidste undermappe er slettet i en mappe, slettes mappen selv.
Funktionen sletter altså den nævnte mappestruktur således:
id = 2
id = 4
id = 3
id = 1
Den starter med at slette den undermappe der er længst væk fra rodmappen, og derfra mod rodmappen.