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

Очистка допполя новостей старше определенного срока


 morefilms    02.06.2017    Стол заказов    671    5 комментариев

Нужно для новостей старше, например, 1 года очистить содержимое одного допполя.

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

LazyDev
PHP-developer

LazyDev - 2 июня 2017 17:40 -

1. Сделать бэкап базы данных на всякий случай.
2. Выполнить запрос в базу данных
UPDATE dle_post SET xfields = REPLACE(xfields, 'YOUR_FIELD', 'veryoldfield') WHERE CHARACTER_LENGTH(SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, 'YOUR_FIELD|', -1 ) , '||', 1 )) > 0 AND SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, 'YOUR_FIELD|', -1 ) , '||', 1 ) NOT LIKE '%|%' AND date < DATE_SUB(NOW(),INTERVAL 1 YEAR)

Заменить YOUR_FIELD - на латинское название доп поля.

Благодарочка сюда
Webmoney WMR R118095764291
Webmoney WMZ Z228640084773
Webmoney WMU U218134219019

Мой блог: LazyDev.pro

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

lutskboy
Эксперт

lutskboy - 3 июня 2017 13:30 -

запрос не верный. и лучше такие вещи делать скриптом

LazyDev
PHP-developer

LazyDev - 3 июня 2017 13:48 -

lutskboy, ну ка, давай, что там не верного? Выборка новостей которые старше 1 года, у которых заполнено нужно доп поле. Сам запрос меняет название доп поля на другое, которого не существует, в результате данные для новостей старше 1 года доп поле обнулится заполненными данными. И так вопрос, в чем проблема?

Мой блог: LazyDev.pro

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

lutskboy
Эксперт

lutskboy - 3 июня 2017 13:57 -

ну да. я подумал что он очистку сделает. а ты заменил его на veryoldfield
тоже вариант

lutskboy
Эксперт

lutskboy - 3 июня 2017 14:21 -

UPDATE dle_post SET xfields = REPLACE(xfields, CONCAT('material' ,'|', SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, 'material|', -1 ) ,  '||', 1 )), '')
WHERE CHARACTER_LENGTH(SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, 'material|', -1 ) , '||', 1 )) > 0 
AND SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, 'material|', -1 ) , '||', 1 ) NOT LIKE '%|%';

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

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