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

Форум MySQL

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

 

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

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

тема: Групповое удаление фоторгафий в админке
 
 автор: Erema   (19.09.2009 в 14:32)   письмо автору
 
 

Здравствуйте!
Делаю админку для сайта
Есть страничка "view_cat.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
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>";}
?>


Вот при этом можно удалять фоторгафии с сервера "по одной"
Помогите пожалуйста реализовать групповое удаление фотографий. Заранее спасибо:)

  Ответить  
 
 автор: cheops   (19.09.2009 в 15:08)   письмо автору
 
   для: Erema   (19.09.2009 в 14:32)
 

Возможно вас заинтересует тема http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=427 (обсуждение нужного вам вопроса, начинается где-то с середины).

  Ответить  
 
 автор: Erema   (19.09.2009 в 15:50)   письмо автору
 
   для: cheops   (19.09.2009 в 15:08)
 

ой, начитался еще больше каши в голове стало

  Ответить  
 
 автор: cheops   (19.09.2009 в 16:38)   письмо автору
 
   для: Erema   (19.09.2009 в 15:50)
 

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

  Ответить  
 
 автор: Erema   (19.09.2009 в 16:54)   письмо автору
 
   для: cheops   (19.09.2009 в 16:38)
 

>ключи удаляемых фотографий. А само удаление осуществляется при помощи списка и конструкции IN.
Эх... для меня это так ново)) Может на моем коде покажете как это реализовать?

  Ответить  
 
 автор: cheops   (19.09.2009 в 17:05)   письмо автору
 
   для: Erema   (19.09.2009 в 16:54)
 

Хорошо, давайте, сначала сформируем HTML-форму с флажками
<?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='handler.php' method='post'>";
    while(
$myrow mysql_fetch_array ($result))
    { 
      echo 
"<div>";
      echo 
"<img src='../$myrow[img_small]' class='img_size' alt='изображение'><br />";
      echo 
"<input type='checkbox' name='type[]' value='$myrow[id]'>";
      echo 
"</div>";
    }
    echo 
"<input type='submit'>";
    echo 
"</form>";
  }
?>

Теперь выбрав флажки а нажав на кнопку "Отправить" можно переправить PHP-скрипту handler.php список (id) тех изображений, которые необходимо удалить.

  Ответить  
 
 автор: cheops   (19.09.2009 в 17:11)   письмо автору
 
   для: Erema   (19.09.2009 в 16:54)
 

При этом обработчик handler.php может содержать следующий код
<?php 
  
// Удалить сразу несколько записей можно при 
  // помощи запроса "DELETE FROM base WHERE id IN (1,3,5,7)" 
  // Получаем список отмеченных флажков 
  
$type $_POST['type']; 
  if(!empty(
$type)) 
  { 
    
// Защита от SQL-инъекции
    
for($i 0$i count($type); $i++) $type[$i] = intval($type[$i]);
    
// Удаляем изображение
    
$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("Ошибка удаления файлов");
  } 
?>

  Ответить  
 
 автор: Erema   (19.09.2009 в 18:13)   письмо автору
 
   для: cheops   (19.09.2009 в 17:11)
 

Спасибо Вам огромное! Вы мне очень помогли! Столько работал над этой проблемой и все ни как не мог справится)

  Ответить  
 
 автор: Erema   (20.09.2009 в 05:32)   письмо автору
 
   для: Erema   (19.09.2009 в 18:13)
 

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

  Ответить  
 
 автор: Erema   (20.09.2009 в 10:20)   письмо автору
 
   для: Erema   (20.09.2009 в 05:32)
 

Все уже сам решил проблему=)

  Ответить  
Rambler's Top100
вверх

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