- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте! Есть обычный варезник на DLE, новостей около 80 к, ранее картинки заливались на сайт и так получилось, что старые новости остались без картинок в папке Uploads (тупо стёрты), а в БД ссылки на них существуют и сервер при каждом обращении пишет в лог ошибки..
Задача: Как пакетно удалить из БД ДЛЕ ссылки на несуществующие файлы (картинки) помесячно, как расположены папки в /uploads/posts/2011-06 например..
Как правильно прописать запрос в БД на удаление?
Посты сами должны остаться...
Заранее спасибо за помошь!
Вытаскиваем все файлы:
//Начинаем проверку всех файлов
while ($array=mysql_fetch_array($query)) {
//Путь к файлу
$url=$array['url'];
//Проверка на существование файла
if (!file_exists ($url)) {
//Если нашли не первый не существующий фаил
if (isset($perviy)) {
$id_del.=','.$array['id'];
} else {
$id_del=$array['id'];
}
}
}
//Если нашли не существующие файлы
if (isset($id_del)) {
if (mysql_query("delete from table_images where id in (".$id_del.")")) {
echo "Все гуд удалилось";
} else {
echo "Ошибка при удалении";
}
} else {
echo "Нет записей для удаления";
}
где table_images - таблица с изображениями
$url=$array['url']; - вытаскиваем с таблици инфу где должен быть сохранен фаил "папка и название файла"
$array['id'] - это ид элемента (файла) если надо удалить из бд его.
В общем все что нужно, это знать структуру таблиц.
Как это применить? Запрос в БД? Или файл РНР с этими данными запустить? Мож я и торможу)))
---------- Добавлено 03.04.2014 в 17:22 ----------
Вытаскиваем все файлы:
где table_images - таблица с изображениями
$url=$array['url']; - вытаскиваем с таблици инфу где должен быть сохранен фаил "папка и название файла"
$array['id'] - это ид элемента (файла) если надо удалить из бд его.
В общем все что нужно, это знать структуру таблиц.
Как применить практически, куда вписать, откуда запустить...??
Это php код.
Я не знаю как выглядит у Вас БД. Поэтому писал названия таблиц и полей от себя. Откройте в phpmyadmin таблицу которая содержит записи с изображениями и сообщите мне инфу или скрин(тогда отредактирую код)
Это php код.
Я не знаю как выглядит у Вас БД. Поэтому писал названия таблиц и полей от себя. Откройте в phpmyadmin таблицу которая содержит записи с изображениями и сообщите мне инфу или скрин(тогда отредактирую код)
Обычный DLE 10 всё стандартно
СКРИН http://shot.qip.ru/00jUa7-6XULWFc05/
---------- Добавлено 03.04.2014 в 17:34 ----------
Меня интересует как применить Ваш код РНР как запустить его..
---------- Добавлено 03.04.2014 в 17:35 ----------
Создал файл, вписал код , запустил, ничё не просходит, сам код отбражается и всё
//Начинаем проверку всех файлов
while ($array=mysql_fetch_array($query)) {
//Путь к файлу
$url=$array['images'];
//Проверка на существование файла
if (!file_exists ($url)) {
//Если нашли не первый не существующий фаил
if (isset($id_del)) {
$id_del.=','.$array['id'];
} else {
$id_del=$array['id'];
}
}
}
//Если нашли не существующие файлы
if (isset($id_del)) {
if (mysql_query("delete from dle_images where id in (".$id_del.")")) {
echo "Все гуд удалилось";
} else {
echo "Ошибка при удалении";
}
} else {
echo "Нет записей для удаления";
}
Готово, незабываем подключиться к самой БД
$ip='localhost';
$user='root';
$password='root';
$namedb='название бд';
$connect=mysql_connect($ip,$user,$password);
mysql_select_db($namedb,$connect);
и на всякий
mysql_query('SET NAMES utf8;',$connect);
учтите что путь $array['images'] - относительно вашего нахождения.
если файлы находятся дальше например: /uploads/posts/ ****
то меняем строку
на
вместо table_images - dle_images :)
Это php код.
Я не знаю как выглядит у Вас БД. Поэтому писал названия таблиц и полей от себя. Откройте в phpmyadmin таблицу которая содержит записи с изображениями и сообщите мне инфу или скрин(тогда отредактирую код)
Спасибо, теперь более менее понятно, как сделаю, сообщу результат..
Вот пример кода - Он берет с бД все изображения проверяет их существование, и в случаи если фаил был не обнаружен - удалит его. "Загружаем в корень - меняем значение БД"
На всякий сделайте бейкап данной таблици - так как если путь до файла не верный "от корня сайта", то он его удалит.
JagdTiger
ага спасибо, совсем заработался )))
---------- Добавлено 03.04.2014 в 15:55 ----------
Сори, еще касяк
на
А если папки с изображениями в таком виде
в параметре