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

Форум MySQL

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

 

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

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

тема: удаление картинок
 
 автор: NoCash   (17.04.2010 в 12:08)   письмо автору
 
 

доброе время суток форумчане
есть такой вопрос можно ли удалять картинки из папки средством php. например если картинка нигде не используется то удаляем ее если используется то оставляем? если можно то подскажите куда рыть если так как я опсиал не возможно то хотябы что то наподобе этого подскажите

  Ответить  
 
 автор: sim5   (17.04.2010 в 12:12)   письмо автору
 
   для: NoCash   (17.04.2010 в 12:08)
 

Что-то все упорно хотят быть кротами...
unlink(path/filename.ext) и нет картинки. Можете рыть.

  Ответить  
 
 автор: NoCash   (17.04.2010 в 12:28)   письмо автору
 
   для: sim5   (17.04.2010 в 12:12)
 

unlink(e_PLUGIN."nboard/images/nb_pictures/$gnl_picbig"); пишу вот такое и ничево не происходит картинка не удалятся( что то не так понял? или ошибка в коде?
хы ну если сказать название файла то удалиться. а если я незнаю название загружаемого файла? то что?

  Ответить  
 
 автор: Trianon   (17.04.2010 в 12:50)   письмо автору
 
   для: NoCash   (17.04.2010 в 12:28)
 

а если не знаете Вы , откуда узнает машина?
Машина может сделать лишь то, что может сделать человек. Вся разница лишь в том, что она это сделает быстрее.

  Ответить  
 
 автор: NoCash   (17.04.2010 в 12:51)   письмо автору
 
   для: Trianon   (17.04.2010 в 12:50)
 

я имею ввиду что если дать название картинки которая загружена то удаляется а если я напишу переменную то она не удаляется

  Ответить  
 
 автор: Trianon   (17.04.2010 в 12:58)   письмо автору
 
   для: NoCash   (17.04.2010 в 12:51)
 

Значит Вы должны написать такую переменную, в которой лежит хорошее, годное название.
И сперва убедиться в этом, а потом уже функцию удаления вызывать.
Иначе можно много чего посрубать.

  Ответить  
 
 автор: NoCash   (17.04.2010 в 13:15)   письмо автору
 
   для: Trianon   (17.04.2010 в 12:58)
 

$sql -> db_Select("nb_gnl", "*");
while($row = $sql -> db_Fetch()){
$gnl_id = $row['gnl_id'];
$pic=$row['gnl_picbig'];
}
$addr = e_PLUGIN."nboard/images/nb_pictures/".$pic;
unlink($addr);
вот так вот сделал не удаляется(

  Ответить  
 
 автор: Trianon   (17.04.2010 в 13:19)   письмо автору
 
   для: NoCash   (17.04.2010 в 13:15)
 

это всё в пользу бедных.
Вы вместо unlink напишите echo
Путь к картинке, кстати, должен быть полным серверным, воизбежание неоднозначностей.

  Ответить  
 
 автор: NoCash   (17.04.2010 в 13:27)   письмо автору
 
   для: Trianon   (17.04.2010 в 13:19)
 

выводит путь переменная где то теряется

  Ответить  
 
 автор: Trianon   (17.04.2010 в 15:05)   письмо автору
 
   для: NoCash   (17.04.2010 в 13:27)
 

Выходит у Вас не удаление не работает.
А вычисление пути.
Над этим и работайте.

  Ответить  
 
 автор: sim5   (17.04.2010 в 18:54)   письмо автору
 
   для: NoCash   (17.04.2010 в 13:15)
 

А по какой причине у вас "мертвые души" появляются?

  Ответить  
 
 автор: NoCash   (23.04.2010 в 11:39)   письмо автору
 
   для: sim5   (17.04.2010 в 18:54)
 

мертвые души появляются от того что обьявление удаляет юзер а картинка из папки не удаляется

  Ответить  
 
 автор: Trianon   (23.04.2010 в 11:45)   письмо автору
 
   для: NoCash   (23.04.2010 в 11:39)
 

так наверное тогда сперва имеет смысл найти ошибку и исправить её в том скрипте, который запрос на удаление объявления пользователем исполняет?
А то Вы так никогда от этих душ не избавитесь.

  Ответить  
 
 автор: NoCash   (23.04.2010 в 11:54)   письмо автору
 
   для: Trianon   (23.04.2010 в 11:45)
 

а в том скрипе все верно. дело в том что картинка сохраняется не в базе а в папочке. поэтому и появилась необходимость удалять картинки как нибудь если они не используются

  Ответить  
 
 автор: Valick   (23.04.2010 в 12:02)   письмо автору
 
   для: NoCash   (23.04.2010 в 11:54)
 

а в том скрипе все верно.
а вот и фиг Вы угадали... (если ошибки нет в синтаксисе, то налицо ошибка в логике)
там дописать-то пару строк всего
если картинка не нужна, то какой смысл ее оставлять?? пусть она лежит где угодно, но ассоциация с объявлением есть, и в чем проблема ее удалить?
Покажите участок кода, где происходит удаление

  Ответить  
 
 автор: Valick   (23.04.2010 в 12:10)   письмо автору
 
   для: NoCash   (23.04.2010 в 11:54)
 

знаете как происходит удаление папки?
сначала удаляются все файлы в этой папке, а затем удаляется сама папка.

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

  Ответить  
 
 автор: Trianon   (23.04.2010 в 12:14)   письмо автору
 
   для: NoCash   (23.04.2010 в 11:54)
 

Так их проще удалять сразу с удалением объявления, не дожидаясь, пока накопится.
Да и серверу полегше.

  Ответить  
 
 автор: sim5   (23.04.2010 в 12:36)   письмо автору
 
   для: NoCash   (23.04.2010 в 11:39)
 

А проверить есть ли картинка у сообщения и если есть, удалить ее при удалении сообщения религия не позволяет?

  Ответить  
 
 автор: NoCash   (23.04.2010 в 13:15)   письмо автору
 
   для: sim5   (23.04.2010 в 12:36)
 


if(isset($_POST['del'])){
$sql -> db_Delete("nb_gnl", "gnl_id=$gnl_id");
}
это функция удаления обьявления.
удалять папку мне совсем не нужно, мне нужно удалять картинки из этой папки если она не используется в обьявлении.
проблемма в том что обьявление записывается в базу а картинка в папку.
наприме пользователь жмукнул по кнопке удалить и его выбранное обьявление удалилось из базы но картинка осталась. вот мне и захотелось придумать что нибудь. что бы картинка удалялась либо сразу либо была какая нидь проверка по картинкам и если они не используются то в топку их.

  Ответить  
 
 автор: sim5   (23.04.2010 в 13:44)   письмо автору
 
   для: NoCash   (23.04.2010 в 13:15)
 

А я вам разве предлагаю удалять папку? У вас информаци о наличии изображения в сообщение где хранится? Так прежде чем удалять само сообщение, видимо сперва нужно проверить имеет ли оно изображение, и если да, то удалить его, а затем удалить запись в базе. Вы же "паспортные данные" изображения удаляете, совсем не задумываясь, порождая таким образом лишние проблемы для себя.

  Ответить  
 
 автор: NoCash   (23.04.2010 в 14:09)   письмо автору
 
   для: sim5   (23.04.2010 в 13:44)
 

информация в базе записывается там записывается название картинки без пути или путя(точно незнаю как правльно просклонять слово путь) т.е получается нужно написать токе действие
<?php if (isset($_POST['del'])){
 
sql -> db_Select("nb_gnl""*")
while(
$row $sql -> db_Fetch())
        {
gnl_id=$row['gnl_id']
gnl_pic=$row['gnl_pic'];
if (
gnl_pic != ""){ 
$addr e_PLUGIN."nboard/images/nb_pictures/".$pic;
unlink($addr);
}
$sql -> db_Delete("nb_gnl""gnl_id=$gnl_id");
}
?>

еще не тестил то что написал просто хотел спросить логика верна?

  Ответить  
 
 автор: sim5   (23.04.2010 в 14:38)   письмо автору
 
   для: NoCash   (23.04.2010 в 14:09)
 

Что означает $_POST['del']? Надо полагать, что номер записи, не понятно тогда, почему выборка "безымянная". Что у вас к чему я не знаю, почему $pic не равна $gnl_pic, и откуда она вообще взялась у вас, а надо полагать, что $gnl_pic и есть имя изображения в базе... Вся суть - проверить значение поля имени изображения, и если YES, удаляйте его изображение. Так что, думаю, разберетесь, а со своими переменными разбирайтесь сами.

  Ответить  
 
 автор: NoCash   (23.04.2010 в 14:41)   письмо автору
 
   для: sim5   (23.04.2010 в 14:38)
 

поправил некоторые ошибки написанные в коде и все гуд удаляет)) $_post['del'] это кнопка удаления

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

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