Mailinglisten-Archive |
> > Wenn man den Rest löschen will, löscht man > > alle Knoten, wo der Parent nicht mehr existiert (und die nicht der > > Root-Knoten > > sind). Das mach man so lange, bis einmal keine Zeilen mehr > gelöscht wird. > > das is doch mal ne super idee! hallo, ich weiss nicht, ob das optimal ist, aber ich mach das meisstens so: (habe mal die mysql standard sachen rausgelassen) function rekursedel($rootid) { if(empty($rootid)) return false; $query = sprintf("select * from <tabelle> where parent_id = %d", $rootid); // ... while($ergebnis = mysql_fetch_object($result)) { // hat dieses kind kinder? $query = sprintf("select id from <tabelle> where parent_id = %d", $ergebnis->id); $result2 = mysql_db_query(...); // wenn ja, rekursiver abstieg if(mysql_num_rows($result) > 0) rekursedel($ergebnis->id); // nein, er hat keine kinder (oder keine mehr) $query = sprintf("delete from <tabelle> where id = %d", $ergebnis->id); mysql_db_query(...); } return true; } keine gewaehr... /achim
php::bar PHP Wiki - Listenarchive