[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удаление папок рекурсивно
johniek_comp
Усть такая структура
g_folder:

id id_parent

нужно удалить все папки родителя, я набросал но не удаляются все папки, псевдо код:

функция удалить($папка)
{
select id from g_folder where id_parent = папка (count)
пока(кол-во дочерних не равно 0)
{
select id from g_folder where id_parent = папка (array)
select id from g_folder where id_parent = папка (count)
удалить($папка)
}
}


где промахнулся?

_____________
user posted image
vagrand
Ну наверно если ты хочешь что-то удалить то тебе нужен SQL оператор delete, а я его тут не наблюдаю

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
ZSH
Если в папке есть файлы, то надо удалить все файлы а потом уже папку
johniek_comp
вот что набросал, но вложения больше > 3-х не удаляет
Свернутый текст
public function deleteAll($id_folder){
$getChildFolder = DB::query(Database::SELECT, 'SELECT id FROM `gallery_folder` WHERE id_parent = :id')
->
bind(":id", $id_folder)
->
execute()
->
count();
$mGalleryfolder = App::m('Galleryfolder');
if($getChildFolder == 0)
$mGalleryfolder->deleteById($id_folder);


while($getChildFolder > 0)
{
$getChildFolderExist = DB::query(Database::SELECT,'SELECT id FROM `gallery_folder` WHERE id_parent = :id')
->
bind(":id", $id_folder)
->
execute()
->
as_array();

$this->deleteImages($id_folder);
$mGalleryfolder->deleteById($id_folder);
for ($i=0; $i < $getChildFolder; $i++) {
$mGalleryfolder->deleteById($getChildFolderExist[$i]['id']);

}
$getChildFolder = DB::query(Database::SELECT, 'SELECT id FROM `gallery_folder` WHERE id_parent = :id')
->
bind(":id", $id_folder)
->
execute()
->
count();
for ($j=0; $j < $getChildFolder; $j++) {
$this->deleteAll($getChildFolderExist[$j]['id']);

}
$mGalleryfolder->deleteById($id_folder);
$this->deleteAll($getChildFolderExist[0]['id']);
}

$mGalleryfolder->deleteById($this->r);
App::popup_message(App::MESS_OK,'Удаление прошло успешно');
return App::redirect();

}

и удаление фоток в папках, работает на ура...
Свернутый текст
public function deleteImages($id_folder){
$getChildImage = DB::query(Database::SELECT, 'SELECT id FROM `gallery` WHERE id_folder = :id')
->
bind(":id", $id_folder)
->
execute()
->
count();

if($getChildImage != 0)
{
$getChildImageExist = DB::query(Database::SELECT, 'SELECT id FROM `gallery` WHERE id_folder = :id')
->
bind(":id", $id_folder)
->
execute()
->
as_array();
$mGallery = App::m('Gallery');
$aRow = $mGallery->getRowById($getChildImageExist[0]['id']);

if(!$aRow) return FALSE;

if(!empty($aRow['youtube_link'])){
if(!Yt::delete_video($aRow['youtube_link'])){
return App::message(App::MESS_ERROR,I18n::get('Failure to remove'));
}
}


if ($mGallery->deleteById( $getChildImageExist[0]['id'] )){
$this->deleteImages($id_folder);
}
else{
App::message(App::MESS_ERROR,I18n::get('Failure to remove'));
}
}
}


_____________
user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.