|
|
|
| Здравствуйте!
Делаю админку для сайта
Есть страничка "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>";}
?>
|
Вот при этом можно удалять фоторгафии с сервера "по одной"
Помогите пожалуйста реализовать групповое удаление фотографий. Заранее спасибо:) | |
|
|
|
|
|
|
|
для: Erema
(19.09.2009 в 14:32)
| | Возможно вас заинтересует тема http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=427 (обсуждение нужного вам вопроса, начинается где-то с середины). | |
|
|
|
|
|
|
|
для: cheops
(19.09.2009 в 15:08)
| | ой, начитался еще больше каши в голове стало | |
|
|
|
|
|
|
|
для: Erema
(19.09.2009 в 15:50)
| | Суть сводится к тому, что атрибут флажков value назначаются ключи удаляемых фотографий. А само удаление осуществляется при помощи списка и конструкции IN. | |
|
|
|
|
|
|
|
для: cheops
(19.09.2009 в 16:38)
| | >ключи удаляемых фотографий. А само удаление осуществляется при помощи списка и конструкции IN.
Эх... для меня это так ново)) Может на моем коде покажете как это реализовать? | |
|
|
|
|
|
|
|
для: 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) тех изображений, которые необходимо удалить. | |
|
|
|
|
|
|
|
для: 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("Ошибка удаления файлов");
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(19.09.2009 в 17:11)
| | Спасибо Вам огромное! Вы мне очень помогли! Столько работал над этой проблемой и все ни как не мог справится) | |
|
|
|
|
|
|
|
для: Erema
(19.09.2009 в 18:13)
| | А еще появился вопрос!
Как сделать так чтобы при нажатии на "удалить выбранные фото" страничка так скажем перезагружалась и мы видели после загрузки не обработчик а ту страничку с которой удаляли фото!? | |
|
|
|
|
|
|
|
для: Erema
(20.09.2009 в 05:32)
| | Все уже сам решил проблему=) | |
|
|
|