2012-10-26 322 views
0

我在網站畫廊,我需要刪除所有文件夾刪除文件夾

我scructure DB:(g_folder)

id id_parent 
1 0 
2 0 
3 2 
4 2 
5 3 

例如

是這樣,我就可以刪除文件夾,刪除所有父文件夾?

遞歸?

function delete(folder) 
{ 
    count = select id from g_folder where id_parent = folder 
    if(count == 0) 
    deleteFolderById(folder) 

    while(count != 0) 
    { 
    array = select id from g_folder where id_parent = folder 
    for i in range(count) 
    { 
     deleteFolderById(array[i]) 
    } 
    count = select id from g_folder where id_parent = folder 
    delete(array[0])   
    } 

} 

我的算法錯了,請大家幫忙!謝謝大家!

+0

什麼數據庫引擎是什麼?您應該在數據庫本身中使用帶有'ON DELETE CASCADE'的外鍵來實現此功能,並完全避免應用程序方面的邏輯。 – lanzz

+0

遞歸刪除所有父母?你確定?這可能只是沖刷你的整個桌子。 – GolezTrol

+2

爲什麼不能直接刪除g_folder,其中parent_id = $ parent –

回答

0

嘗試這樣的:

function deletefolder($parentid) 
{ 
    $query="select * from g_folder where parentid=".$parentid; 
    $result=mysql_query($query); 
    if(mysql_num_rows($result)>0) 
    { 
     while($row=mysql_fetch_array($result)) 
     { 
      deletefolder($row['id']); 
     } 
     $fdquery="delete from g_folder where parentid=".$parentid; 
     $fdresult=mysql_query($fdquery); 
    } 

    $sdquery="delete from g_folder where id=".$parentid; 
    $sdresult=mysql_query($sdquery); 
} 

deletefolder(2);