johniek_comp
26.10.2012 - 10:20
Усть такая структура
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)
удалить($папка)
}
}
где промахнулся?
_____________
vagrand
26.10.2012 - 10:53
Ну наверно если ты хочешь что-то удалить то тебе нужен 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, фрагменты.
Если в папке есть файлы, то надо удалить все файлы а потом уже папку
johniek_comp
26.10.2012 - 18:51
вот что набросал, но вложения больше > 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'));
}
}
}
_____________