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

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


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

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

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

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


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

dj-avtosh
PHP-developer

dj-avtosh - 14 октября 2019 15:30 -

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 - 15 октября 2019 12:38 -

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

dj-avtosh
PHP-developer

dj-avtosh - 15 октября 2019 13:50 -

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

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

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

LazyDev
PHP-developer

LazyDev - 15 октября 2019 14:23 -

Цитата: 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 - 15 октября 2019 14:25 -

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

dj-avtosh
PHP-developer

dj-avtosh - 15 октября 2019 14:29 -

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

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 - 15 октября 2019 14:26 -

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

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

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

LazyDev
PHP-developer

LazyDev - 15 октября 2019 14:57 -

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

Мой блог: LazyDev.pro

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

arts-amateur
Юзер

arts-amateur - 17 января 2020 13:48 -

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

dj-avtosh
PHP-developer

dj-avtosh - 17 января 2020 14:38 -

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

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

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

dj-avtosh
PHP-developer

dj-avtosh - 17 января 2020 14:40 -

Удаление со связями (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 - 17 января 2020 14:41 -

Удаление со связями (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 - 17 января 2020 15:49 -

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

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

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

dj-avtosh
PHP-developer

dj-avtosh - 17 января 2020 15:55 -

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

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

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

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

arts-amateur
Юзер

arts-amateur - 17 января 2020 15:49 -

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

arts-amateur
Юзер

arts-amateur - 17 января 2020 16:00 -

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

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

dj-avtosh
PHP-developer

dj-avtosh - 17 января 2020 16:07 -

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

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

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

arts-amateur
Юзер

arts-amateur - 17 января 2020 16:09 -

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

dj-avtosh
PHP-developer

dj-avtosh - 17 января 2020 16:12 -

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

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

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

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

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

наверх