Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/40: Рейтинг темы: голосов - 40, средняя оценка - 4.93
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522

Удаление файла из папки

03.10.2010, 21:14. Показов 8330. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
написал новостную ленту
к каждой новости прикреплена фотка, она хранится в БД и папке.
у меня 2 вопроса по поводу удаления новости:
1. при нажатии на ссылку delete у меня удаляется новость, но необходима контрольная проверка до окончательного удаления. как это сделать?
на Делфи, например можно вызвать messagebox (и т.п.), есть ли шо-нить подобное в РНР??

удаляющий код:
PHP
1
2
3
4
5
    if(isset($_GET['admin']) && ($_GET['admin']== "del")) {
        $id = $_GET['id'];
        if (delete_news($id))   {
            echo 'Новость успешно удалена! <br/><a href="admin.php">вернуться на главную</a>';
echo '</span>';

ф-я удаления:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
    function delete_news($id) {
 
        mysql_connect('localhost', 'root', '') or die ('Ошибка подключения с МуСкулом');
        mysql_select_db('news_line') or die ('Ошибка подключения с БД');
        $query = "DELETE FROM news WHERE id = '".$id."'"; 
        $res = mysql_query($query);
    // проверка передачи данных
        if(!$res)  die ('Не удалось удалить файл!' . mysql_error());
        mysql_close();
        
        return true;
    }
2. хочу чтобы при удалении статьи, удалялась и связанная с ней фотка из папки (чтобы не загружать лишний раз память).
напр., так думаю, открыть папку, поиск по рядам и при равенстве имени с тем что в БД - удалить.
незнаю как сравнивать, и как определить какую новость из списка (в папке) необходимо удалить.
код в студию плиз, если можно.
thanks
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.10.2010, 21:14
Ответы с готовыми решениями:

PHP - Удаление файла из папки
&lt;input name=&quot;edit&quot; autocomplete=&quot;off&quot; id=&quot;editid&quot; type=&quot;text&quot;&gt; &lt;button type=&quot;submit&quot;&gt;Удалить&lt;/button&gt; Как при нажатии на кнопку...

Удаление файла из папки
Удаление файла из папки.. ошибка: Warning: unlink(gallery/img_cat_mini/795264f7328ed10c42.jpg) : No such file or directory in...

Удаление файла/папки
Уверен, что в винде за удаление файлов/папок отвечает какая-то программа (или ее часть). Если нет - поправьте. Мне хочется заменить тот...

8
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
04.10.2010, 14:33
Примерно должно быть так.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
if(isset($_GET['id']))
{
    $id = $_GET['id'];
}
 
if(isset($_GET['admin']) && $_GET['admin']== "del" && isset($_GET['true'])) // Проверяем на то что пользователь подтверждает удаление
{
    if (delete_news($id))
    {
        echo 'Новость успешно удалена! <br/><a href="admin.php">вернуться на главную</a>';
    }
    else
        {
            echo 'Новость не удалось удалить! <br/><a href="admin.php">вернуться на главную</a>';
        }
}
elseif(isset($_GET['admin']) && $_GET['admin']== "del") // Проверяем на то что пользователь решил удалить
{
    echo "Вы действительно хотите удалить?<br><a href=\"?admin=del&id=".$id."&true\">Да</a>/<a href=\"admin.php\">вернуться на главную</a>";
    // Задаём вопрос пользователю об подтверждении на удаление файла
}
else
{
    echo "Показываем файлы";
}
а функция delete_news должна быть такой
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function delete_news($id)
{
    mysql_connect('localhost', 'root', '') or die ('Ошибка подключения с МуСкулом');
    mysql_select_db('news_line') or die ('Ошибка подключения с БД');
    //Не спешим с удалением из базы данных записей
    //Сначала надо узнать имя картинки
    $query = "SELECT img FROM news WHERE id = '".$id."' LIMIT 0, 1"; //Предположим что адрес картинки хранится в ячейке img
    $res = mysql_query($query);
    list($img) = mysql_fetch_row($res);
    //Также предположим что все картинки лежат в одной папке к примеру "/images/"
    $img = "/images/".$img;
    
    if( unlink( $img ) ) // если файл удалён
    {
        // только теперь удаляем запись из базы данных
        $query = "DELETE FROM news WHERE id = '".$id."'"; 
        $res = mysql_query($query);
                mysql_close();
        // проверка передачи данных
        if(!$res)  return false;
    }
    else // файл не удалось удалить
    {
                mysql_close();
        return false;
    }
 
    return true;
}
Также можно это реализовать с помощью javascript, чтобы меньше перезагрузок страниц было... да и красивее наверное будет)
2
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
04.10.2010, 15:04  [ТС]
hellpass, спасибо, дома проверю.
JS пока незнаю, РНР добью, потом JS & AJAX

Добавлено через 3 минуты
а что за
Цитата Сообщение от hellpass Посмотреть сообщение
$_GET['true']
?
этого в моем коде нет. что она показывает?
0
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
04.10.2010, 15:11
А в том, что я написал... это есть. Вот тут
PHP
1
echo "Вы действительно хотите удалить?<br><a href=\"?admin=del&id=".$id."&true\">Да</a>/<a href=\"admin.php\">вернуться на главную</a>";
Там в ссылке в конце приписано &true. Этим самым мы передаем переменную $_GET[true], которая показывает, что пользователь прочитал сообщение об удалении.
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
04.10.2010, 21:54  [ТС]
хорошо, вечером посмотрю, спасибо

Добавлено через 6 часов 32 минуты
проверил.
когда нажимаю на ссылку "delete", список тем на срранице админа исчезает, обновление не помогает, если перейти на другую страницу и вернутся, то все список возвращается, но тема не удаляется.

в коде непонятно:
1.
Цитата Сообщение от hellpass Посмотреть сообщение
LIMIT 0, 1
2.
Цитата Сообщение от hellpass Посмотреть сообщение
$img = "/images/".$img;
у меня вместо этого
Цитата Сообщение от hellpass Посмотреть сообщение
$img = "/images/".$img;
записано так
PHP
1
2
$small = 'small_ph/'.$photo;   // путь к папке с маленькими фото
$midle   = 'midle/'.$photo;
идея такова, на сервер загружается обычная фотка, сохраняю в путь $big, уменьшаю до нужных размеров (80х80 и 200х150) и сразу удаляю анлинком загруженную фотку. т.о, папка Биг всегда пустая
0
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
04.10.2010, 22:10
Ну я же к своему коду писал вот такие штуки...
PHP
1
//Предположим что адрес картинки хранится в ячейке img
Понятное дело что я не знаю где у тебя хранятся имена картинок в базе, а запрос
PHP
1
$query = "SELECT img FROM news WHERE id = '".$id."' LIMIT 0, 1";
это только пример... может у тебя таблица называется не news, да и поля такого как img у тебя нету. Это ты сам уже допишешь. А "LIMIT 0, 1" это для того чтобы из базы выбралась только одна строка удовлетворяющая условию... можно так же написать было просто "LIMIT 1"

PHP
1
//Также предположим что все картинки лежат в одной папке к примеру "/images/"
И тут разумеется я тоже не знал где картинки хранятся, как оказалось они находятся вот тут
PHP
1
$small = 'small_ph/'.$photo;
И как я понимаю $photo это имя картинки. Значит вместо
PHP
1
2
3
        list($img) = mysql_fetch_row($res);
        //Также предположим что все картинки лежат в одной папке к примеру "/images/"
        $img = "/images/".$img;
надо написать
PHP
1
2
3
        list($photo) = mysql_fetch_row($res);
        $small = 'small_ph/'.$photo;
        if( unlink( $small ) )
1
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
04.10.2010, 22:29  [ТС]
это я понял, просто хотелось в общих чертах знать что хотел сделать
0
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
04.10.2010, 22:48
Ну как, прежде чем удалять запись из базы данных надо сначала удалить картинку, имя которой написана в этой записи.
По этому сначала делаем выборку и узнаем имя картинки.
Потом к директории в которой хранятся картинки приписываем название картинки и удаляем.
Если все прошло удачно, то и запись из бд удаляем.
Вот и все.
1
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
04.10.2010, 23:14  [ТС]
hellpass, спсб, попробую
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.10.2010, 23:14
Помогаю со студенческими работами здесь

Удаление файла из папки appdata
Есть несколько файлов, все они хранятся в папке %appdata%\Microsoft\sometxt.txt Их необходимо удалить. Думаю можно путем получения...

Удаление файла из папки Temp
Добрый день. Подскажите пожалуйста каким образом можно удалить txt файл из папки C:\Users\USERNAME\AppData\Local\Temp. Пытался так: ...

Удаление самого старого файла из папки
Здравствуйте.Помогите реализовать удаление самого старого файла и записи информации о удаленном файле в текстовый документ(его имя и...

Удаление файла одновременно из ListView и из папки
folderBrowserDialog1 if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru