Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как удалить определенные новости через базу данных?

Как удалить определенные новости через базу данных?


     Все вопросы » Общие вопросы по PHP    1166

вопрос
Подскажите, какой запрос мне сделать чтобы удалить определенные старые новости? Админка движка не вариант, там все тухнет уже если больше 100 новостей за раз.

SSH или SQL через phpmyadmin, я хочу сделать запрос чтобы можно было указать: удалить новости с id 1 по 15000 например.

Ответа пока нет


19 комментариев

dj-avtosh
PHP-developer

dj-avtosh - -

DELETE t1, dpe, dpec, dpl, dpp 
FROM dle_post t1 
LEFT JOIN dle_post_extras dpe ON (dpe.news_id = t1.id)
LEFT JOIN dle_post_extras_cats dpec ON (dpec.news_id = t1.id)
LEFT JOIN dle_post_log dpl ON (dpl.news_id = t1.id)
LEFT JOIN dle_post_pass dpp ON (dpp.news_id = t1.id)

WHERE t1.id between 1 and 15000

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

arts-amateur
Юзер

arts-amateur - -

К сожалению не работает в версии 11.3

dj-avtosh
PHP-developer

dj-avtosh - -

укажите на какие таблицы ругается.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

LazyDev
PHP-developer

LazyDev - -

Цитата: dj-avtosh
LEFT JOIN dle_post_extras_cats dpec ON (dpec.news_id = t1.id)
LEFT JOIN dle_post_pass dpp ON (dpp.news_id = t1.id)

Эти таблицы появились намного позже.
dle_post_extras_cats в 13.1
dle_post_pass в 12.0

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

arts-amateur
Юзер

arts-amateur - -

Все верно, ругалось на эти 2 таблицы

dj-avtosh
PHP-developer

dj-avtosh - -

соответственно:

DELETE t1, dpe, dpl
FROM dle_post t1 
LEFT JOIN dle_post_extras dpe ON (dpe.news_id = t1.id)
LEFT JOIN dle_post_log dpl ON (dpl.news_id = t1.id)

WHERE t1.id between 1 and 15000

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - -

забавно, что в вопросе не указана версия))

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

LazyDev
PHP-developer

LazyDev - -

dj-avtosh, всё как обычно.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

arts-amateur
Юзер

arts-amateur - -

Возникла необходимость массово удалить через SQL запрос все новости содержащие определенное значение дополнительного поля.
Нужен запрос для всех версий движка от 11 до последней.
С меня донат 100 руб. на яндекс.

dj-avtosh
PHP-developer

dj-avtosh - -

1. Backup базы данных
2. Далее:

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - -

Удаление со связями (dle 11):


DELETE t1, dpe, dpl
FROM dle_post t1 
LEFT JOIN dle_post_extras dpe ON (dpe.news_id = t1.id)
LEFT JOIN dle_post_log dpl ON (dpl.news_id = t1.id)

WHERE SUBSTRING_INDEX( SUBSTRING_INDEX( t1.xfields,'ИМЯ_ДОП_ПОЛЯ|',-1 ),'||',1 )  = 'ЗНАЧЕНИЕ_ДОП_ПОЛЯ'


По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - -

Удаление со связями (dle 13):

DELETE t1, dpe, dpec, dpl, dpp 
FROM dle_post t1 
LEFT JOIN dle_post_extras dpe ON (dpe.news_id = t1.id)
LEFT JOIN dle_post_extras_cats dpec ON (dpec.news_id = t1.id)
LEFT JOIN dle_post_log dpl ON (dpl.news_id = t1.id)
LEFT JOIN dle_post_pass dpp ON (dpp.news_id = t1.id)

WHERE SUBSTRING_INDEX( SUBSTRING_INDEX( t1.xfields,'ИМЯ_ДОП_ПОЛЯ|',-1 ),'||',1 )  = 'ЗНАЧЕНИЕ_ДОП_ПОЛЯ'

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

arts-amateur
Юзер

arts-amateur - -

Спасибо, удаляет.

Но теперь другая проблема - все картинки, залитые в удаленные новости остаются на сервере.

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

dj-avtosh
PHP-developer

dj-avtosh - -

В админке для этого есть код на php, mysql вряд ли имеет доступы к таким операциям на Вашем сервере.

Можно получить список изображений (если поле в бд напишите), потом вы удалите уже их любыми доступными Вам инструментами.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

arts-amateur
Юзер

arts-amateur - -

Монетку перевел кстати

arts-amateur
Юзер

arts-amateur - -

Не совсем понял что конкретно нужно сделать. Просто как бы все это и затевалось чтобы почистить диск, сайт 170 ГБ весит, в основном картинки.

Нельзя сделать 2 прохода? В первом запросе удалить по полю во всех новостях картинки, а вторым удалить новости

dj-avtosh
PHP-developer

dj-avtosh - -

Mysql не умеет файлы удалять. Максимум могу Вам составить запрос, который вернет список изображений, в каком они поле?

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

arts-amateur
Юзер

arts-amateur - -

А, вот оно что...
Они не в поле, обычные картинки внутри новости. Так а смысл мне от списка изображений, если все равно никак не удалить

dj-avtosh
PHP-developer

dj-avtosh - -

Через ssh удаляются командой rm из списка.

Изображения каким образом были к новости прикреплены? Скрин из админки

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Похожие вопросы

наверх