Групповое удаление фоторгафий в админке

erema

Новичок
Групповое удаление фоторгафий в админке

Здравствуйте!
Делаю админку для сайта
Есть страничка "view_cat.php" на которой циклом выводятся фотографии
вот так выглядит цикл:
PHP:
<?php 
    $result = mysql_query ("SELECT * FROM catalog_img WHERE cat='$cat' ORDER BY id DESC LIMIT $start, $num",$db); 
    $myrow = mysql_fetch_array ($result); 
    do{ 
    printf   
    (" 
    <span id='box_gallery_admin'> 
     <a href='../%s' class='highslide' onclick='return hs.expand(this)'> 
     <img src='../%s' class='img_size' alt='изображение'> 
     <span id='ar'><p>Артикул %s</p></span>          
     </a> 
     <input name='id' type='checkbox' value='%s'> 
     </span>", 
    $myrow["img"], $myrow["img_small"], $myrow["id"], $myrow["id"]); 
    } 
    while($myrow = mysql_fetch_array ($result));  
?>
Вот как выглядят фотографии

http://www.corona-jeans.ru/image/qs.jpg

Задача: Релизовать групповое удалениу изображений (установив несколько флажков для удаления фотографий наживаем 'Удалить выбранные фото' и те фотографии которые помечены удаляются (см фото http://www.corona-jeans.ru/image/qs.jpg ) )
(выполненная задача: реализовано удаление изображений по одной фотографии что занимает большое количество времени если пользователь захочет удалить к примеру 70 фотографий из 100)

Код файла обработчика:
PHP:
<?php 
include("lock.php"); 
include("block/bd.php"); 
if (isset($_POST['id'])) {$id=$_POST['id'];} 
?> 
. 
. 
. 
. 
. 
<?php 

$result = mysql_query ("SELECT * FROM catalog_img WHERE id='$id' ",$db); 
$myrow = mysql_fetch_array ($result); 
      
      
     if ( isset($id) ) 
     {            
           $result = mysql_query (" DELETE FROM catalog_img WHERE id='$id' "); 
                  
                       if ($result == 'true') 
                       {echo "<h1>Изображение успешно удалено!</h1> 
                         <p>Вы можетевыбрать из левого меню категорию для следующего удаления фотографий</p> 
                         <p>Либо нажать в верхнем меню <strong>КАТАЛОГ</strong> для добавления фотографий</p> 
                         ";} 
     
           unlink($_SERVER['DOCUMENT_ROOT']."/corona_jeans/".$myrow['img_small']) or die("Не могу удалить файл, либо вы успешно удалили проблемный файл"); 
           unlink($_SERVER['DOCUMENT_ROOT']."/corona_jeans/".$myrow['img']) or die("Не могу удалить файл, либо вы успешно удалили проблемный файл"); 
     } 
     else 
     {echo "<p>Ваше изображение не удалено!!</p>";} 
?>
Вот при этом можно удалять фоторгафии с сервера "по одной"
Помогите пожалуйста реализовать групповое удаление фотографий. Заранее спасибо:)
 

Фанат

oncle terrible
Команда форума
<input name='id[]'

в цикле по массиву $_POST['id']

-~{}~ 19.09.09 16:30:

точнее, не в цикле, а
array_map intval к $_POST['id']
потом $aid= implode(",",$_POST['id'])
и полученное в запрос
WHERE id in ($aid)
и в цикле по его результату
 

erema

Новичок
Ой :)
Я новичек в PHP и практически не понял что вы мне хотели сказать=)
Можете показать на моем коде, пожалуйста
 

Фанат

oncle terrible
Команда форума
ты можешь поместить последний кусок кода внутрь цикла?
 

erema

Новичок
Страничка "view_cat.php" на которой циклом выводятся фотографии
Вот так выглядит цикл:
PHP:
<?php 
  $query = "SELECT * FROM catalog_img 
            WHERE cat='$cat' 
            ORDER BY id DESC 
            LIMIT $start, $num"; 
  $result = mysql_query($query, $db);  
  if(!$result) exit("Ошибка выполнения SQL-запроса"); 
  if(mysql_num_rows($result)) 
  { 
    echo "<form action='drop_view_cat.php' method='post'>"; 
    while($myrow = mysql_fetch_array ($result)) 
    {  
      echo "<div id='box_gallery_admin'>";
	  
	  echo "<a href='../$myrow[img]' class='highslide' onclick='return hs.expand(this)' >";
      echo "<img src='../$myrow[img_small]' class='img_size' alt='изображение'><br />"; 
      echo "</a>";
	  echo "<div id='ar'><p>Артикул $myrow[art]</p></div>";
	  
	  echo "<input class='checkbox_admin' type='checkbox' name='type[]' value='$myrow[id]'>"; 
      echo "</div>"; 
    }

    echo "<input class='button_admin_del' type='submit' name='submit' value='Удалить выбранные фото'>"; 
    echo "</form>"; 
  }	
?>
А вот обработчик:
PHP:
<?php
  $type = $_POST['type'];  
  if(!empty($type))  
  {  
    // Удаляем изображение 
    $query = "SELECT * FROM catalog_img 
              WHERE id IN (".implode(",", $type).")";  
    $img = mysql_query($query); 
    if(!$img) exit("Ошибка выполнения SQL-запроса - ".mysql_error()); 
    if(mysql_num_rows($img)) 
    { 
      while($result = mysql_fetch_array($img)) 
      {  
        if(!empty($result['img_small']) && file_exists($_SERVER['DOCUMENT_ROOT']."/corona_jeans/".$result['img_small'])) 
          @unlink($_SERVER['DOCUMENT_ROOT']."/corona_jeans/".$result['img_small']); 
        if(!empty($result['img']) && file_exists($_SERVER['DOCUMENT_ROOT']."/corona_jeans/".$result['img'])) 
          @unlink($_SERVER['DOCUMENT_ROOT']."/corona_jeans/".$result['img']); 
       } 
    } 
    // Теперь удаляем сами записи 
    $query = "DELETE FROM catalog_img 
              WHERE id IN (".implode(",", $type).")";  
    if(!mysql_query($query)) exit("Ошибка удаления файлов"); 
  }
?>
dimagolov - id integer, автоинкремент, первичный ключ

А еще появился вопрос!
Как сделать так чтобы при нажатии на "удалить выбранные фото" страничка так скажем перезагружалась и мы видели после загрузки не обработчик а ту страничку с которой удаляли фото!?

-~{}~ 20.09.09 10:18:

Проблемку решил=)
 
Сверху