Удалить рекорды из базы связанные по паренту.

MeMO

Guest
Удалить рекорды из базы связанные по паренту.

У меня проблемы с рекурсией.
 

Fiva

Держу ZMH
с формализацией вопроса у тебя походу тоже проблемы... Скажи конкретно, чего ты хочешь?
 

MeMO

Guest
Конкретно:

мне недо удалить рекорд из базы. Но перед этим надо удалить все рекорды которые относятся к нему (формально вложены в него).
 

MeMO

Guest
Неа, ведь каждая вложенная запись может в свою очередь тоже иметь вложения.

Я попытался написать ф-цию чтоб это все разрулить, но она удаляет только самый "глубоко" вложенный рекорд.

function del_path($id) {
if($id>0){
$sql = "SELECT * FROM `folders` WHERE `parent` = '".$id."'";
$r = mysql_query($sql);
if(mysql_num_rows($r)==0){
$sql = "delete FROM `folders` WHERE `id` = '".$id."'";
mysql_query($sql);
}
while($fetch = mysql_fetch_array($r)){
del_path($fetch['id']);
}
}
}
 

Necromant

Новичок
Автор оригинала: MeMO
Неа, ведь каждая вложенная запись может в свою очередь тоже иметь вложения.

Я попытался написать ф-цию чтоб это все разрулить, но она удаляет только самый "глубоко" вложенный рекорд.
PHP:
function del_path($id) { 
if($id<=0) return false;
$sql = "SELECT * FROM `folders` WHERE `parent` = '".$id."'"; 
$r = mysql_query($sql); 
if($r)
{
    while($fetch = mysql_fetch_array($r))
    { 
       $sql = "delete FROM `folders` WHERE `id` =".del_path($fetch['id']); 
       mysql_query($sql); 
    }
}
  return $id;
}
 

MeMO

Guest
Автор оригинала: Necromant
PHP:
function del_path($id) { 
if($id<=0) return false;
$sql = "SELECT * FROM `folders` WHERE `parent` = '".$id."'"; 
$r = mysql_query($sql); 
if($r)
{
    while($fetch = mysql_fetch_array($r))
    { 
       $sql = "delete FROM `folders` WHERE `id` =".del_path($fetch['id']); 
       mysql_query($sql); 
    }
}
  return $id;
}
а она воще не работет.
 

MeMO

Guest
2 Necromant

Спасибо за скрипт, разобрался уже как его есть.
 
Сверху