Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рекурсия на удаление значений из MySQL
 
 автор: rised   (17.09.2006 в 15:40)   письмо автору
 
 

Товарищи!

У меня возникла еще одна сложность в достижении результата, не могу написать функцию рекурсию, которая будет удалять категорию, все подкатегории в ней, все объявления в подкатегориях, все записи в таблице изображений, все файлы изображений.

Структура таблиц следующая:

cats - категории
catId pCatId

articles - объявления
artId pArtId

images - картинки
imageId imagePath

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

Использую цикл while, но если в подкатегории нет объявлений - она не удаляется.

Буду несказанно благодарен за подсказку! Спасибо.

Попытался просто вывести информацию о всех категориях и подкатегориях и объявлениях и изображениях - отображает пустую страницу.


function catDelete($ids) 
    { 
    $query = "SELECT * FROM bbs_categories WHERE parentCatId = " . $ids . ""; 
    $result = mysql_query($query); 
    while ($print = mysql_fetch_array($result)) 
        { 
        $ide = $print['catId']; 
        $GetFromDb = mysql_query("SELECT * FROM bbs_articles WHERE parentCatId='$ide' AND moderConfirm=1 ORDER BY artId DESC");
        $chekArticles = mysql_fetch_array($GetFromDb);
        if (!empty($chekArticles))
            {
            while ($articleList = mysql_fetch_array($GetFromDb))
                {
                $GetFromDb1 = mysql_query("SELECT * FROM bbs_images WHERE bbsImageId={$articleList['artId']}");
                $photoList = mysql_fetch_array($GetFromDb1);

                echo "
                Категория {$print['catName']}<br>
                Объявление {$articleList['artName']}<br>
                Изображение {$photoList['bbsImagePath']}<br><br>
                ";
                }
            }

        catDelete($ide); 
        } 
    } 

   
 
 автор: cheops   (17.09.2006 в 16:55)   письмо автору
 
   для: rised   (17.09.2006 в 15:40)
 

А вы пишите не catDelete($ide), а catDelete($ids) - т.е. удаляйте по одной директории на вызов функции
<?php
function catDelete($ids)  
    {  
    
$query "SELECT * FROM bbs_categories WHERE parentCatId = " $ids "";  
    
$result mysql_query($query);  
    while (
$print mysql_fetch_array($result))  
        {  
        
$ide $print['catId'];  
        
$GetFromDb mysql_query("SELECT * FROM bbs_articles WHERE parentCatId='$ide' AND moderConfirm=1 ORDER BY artId DESC"); 
        
$chekArticles mysql_fetch_array($GetFromDb); 
        if (!empty(
$chekArticles)) 
            { 
            while (
$articleList mysql_fetch_array($GetFromDb)) 
                { 
                
$GetFromDb1 mysql_query("SELECT * FROM bbs_images WHERE bbsImageId={$articleList['artId']}"); 
                
$photoList mysql_fetch_array($GetFromDb1); 

                echo 

                Категория 
{$print['catName']}<br> 
                Объявление 
{$articleList['artName']}<br> 
                Изображение 
{$photoList['bbsImagePath']}<br><br> 
                "

                } 
            } 

        }  
        
catDelete($ids);  
    } 
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования