phpbar.de logo

Mailinglisten-Archive

[php] =?iso-8859-1?Q?RE=3A_=5Bphp=5D_Re=3A_=5Bphp=5D_Re=3A_=5Bphp=5D?= =?iso-8859-1?Q?_rekursiv_l=F6schen?=

[php] RE: [php] Re: [php] Re: [php] rekursiv löschen

Achim Gosse php_(at)_phpcenter.de
Fri, 11 May 2001 10:53:29 +0200


> > 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