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

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

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


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

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

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

LazyDev
PHP-developer

LazyDev - -

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 - -

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

LazyDev
PHP-developer

LazyDev - -

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

Мой блог: LazyDev.pro

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

lutskboy
Эксперт

lutskboy - -

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

lutskboy
Эксперт

lutskboy - -

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 - имя доп поля. заменить на свое

наверх