1 (изменено: benassi, 2011-06-26 11:43:08)

Тема: Замена (создание) поля в DLE посредством phpMyAdmin

Здравствуйте, нужна ваша помощь, дело вот в чем:
Есть сайт на DLE, базе данных есть таблица  dle_post, а в ней поле metatitle (во всей базе только 5% поля заполнено). Так вот нужно сделать запрос что бы к каждой новости (даже в тех случаях что уже заполнены) заполнить это поле например текстом "Скачать фильм %%%, смотреть онлайн %%%". А вместо %%% - вставить название фильма взятое из соответственного поля xfields. Но проблема в том что в этом поле много текста (image|http://site.ru/uploads/posts/2010-10/1287688132_1262635227.jpg||name|Связи||original_name|Hooking Up||imdb|3.1/10 (260 votes)||proz|США, Bipolar Films||time|01:35:27||format|AVI (XviD)||video|1648 kb/s, 720x304||audio|Russian / English: AC3, 192 kb/s (2 ch)||mb|1,397 MB) а мне нужно только название "Связи". Во общем что бы в конце поле metatitle было заполнено типа "Скачать фильм Связи, смотреть онлайн фильм Связи", Скачать фильм Начало, смотреть онлайн фильм Начало" и так далее. Тому кто поможет осуществить миссию дам на пиво 5$)

2

Re: Замена (создание) поля в DLE посредством phpMyAdmin

Сделать это можно только в том случае, если для всех строк таблицы dle_post заполнено поле xfields и оно имеет идентичную структуру строки. Попробуйте посмотреть что выведет данный запрос:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(`xfields`, '|', 5), '|', -1) AS `x_part`
FROM `dle_post` WHERE `xfields` IS NOT NULL;

Обратите внимание на количество выведенных запросом строк и правильно ли найдено слово.

3

Re: Замена (создание) поля в DLE посредством phpMyAdmin

Hanut поле xfields во всех новостях заполнено и оно имеет идентичную структуру строки.
Запрос показал что: Showing rows 0 - 29 (1,518 total, Query took 0.0014 sec) на сайте у меня ровно 1,518 новостей так что думаю должно получиться. Но какой запрос сделать?

4

Re: Замена (создание) поля в DLE посредством phpMyAdmin

Сохраните данные таблицы, чтобы в случае чего было к чему откатить и выполните этот запрос.

UPDATE `dle_post` SET
`metatitle` = CONCAT("Скачать фильм ",
  SUBSTRING_INDEX(SUBSTRING_INDEX(`xfields`, '|', 5), '|', -1),
  ", смотреть онлайн ",
  SUBSTRING_INDEX(SUBSTRING_INDEX(`xfields`, '|', 5), '|', -1))
WHERE `xfields` IS NOT NULL;

5

Re: Замена (создание) поля в DLE посредством phpMyAdmin

Hanut жду wmz кошелек в личку)
Еще неплохо если бы Вы сказали как в этот запрос можно вставить например все данные с поля god

6

Re: Замена (создание) поля в DLE посредством phpMyAdmin

Данные из поля god вставить не сложно, достаточно прописать его в нужном месте через запятую внутри функции CONCAT(). Как пример:

UPDATE `dle_post` SET
`metatitle` = CONCAT("Скачать фильм ",
  SUBSTRING_INDEX(SUBSTRING_INDEX(`xfields`, '|', 5), '|', -1),
  ", смотреть онлайн ",
  SUBSTRING_INDEX(SUBSTRING_INDEX(`xfields`, '|', 5), '|', -1),
  `god`)
WHERE `xfields` IS NOT NULL;

Если перед содержимым поля надо добавить пробел, то будет: " ", `god`

Реквизиты для оплаты консультации можно найти на странице платных консультаций.

7

Re: Замена (создание) поля в DLE посредством phpMyAdmin

Hanut спасибо за помощь, вознаграждение перевел.
Тему можно закрывать!)