|
SQLеведы, помогите сваять запрос по апдейту значения в поле таблицы | ☑ | ||
---|---|---|---|---|
0
WhiteCat
26.07.13
✎
15:17
|
Есть запрос: select * from b_iblock_element_property where (IBLOCK_PROPERTY_ID=88 or IBLOCK_PROPERTY_ID=73 or IBLOCK_PROPERTY_ID=76) and (VALUE like '%http%') and not (VALUE like '%target%')
Выбирает из таблицы записи, у которых в поле VALUE в качестве значения указан URL, у которого в <a> нет target="_blank". Пример значения: a:2:{s:4:"TEXT";s:89:"<a href="http://www.xxx.ru/certificates/Promet/Promet_T.jpg">Скачать сертификат</a>";s:4:"TYPE";s:4:"html";} Нужно во всех этих записях первую подстроку "> заменить на "target="_blank"> Ткните носом на пример, или подскажите готовый текст запроса. |
|||
1
WhiteCat
26.07.13
✎
15:19
|
Не первую подстроку ">, а просто подстроку ">, она там единственная. Точнее, есть записи, у которых их две или три, но заменять нужно все, вот пример такой записи:
a:2:{s:4:"TEXT";s:316:"<a href="http://www.xxx.ru/certificates/Promet/Promet-mebel-2015-1.jpg">Скачать сертификат</a><br> <a href="http://www.xxx.ru/certificates/Promet/Promet-mebel-2015-2.jpg">Скачать приложение 1</a><br> <a href="http://www.xxx.ru/certificates/Promet/Promet-mebel-2015-3.jpg">Скачать приложение 2</a>";s:4:"TYPE";s:4:"html";} |
|||
2
kokamoonga
26.07.13
✎
15:21
|
(0) речь идет о MySql?
и второй вопрос чисто для интереса: это где такая аццкая система хранения? |
|||
3
WhiteCat
26.07.13
✎
15:28
|
(2) Дэ. Это сайт на битриксе.
|
|||
4
kokamoonga
26.07.13
✎
15:31
|
(3) наверно что-то вроде так:
UPDATE SET value = REPLACE(value, '">', 'target="_blank">') WHERE (IBLOCK_PROPERTY_ID=88 or IBLOCK_PROPERTY_ID=73 or IBLOCK_PROPERTY_ID=76) and (VALUE like '%http%') and not (VALUE like '%target%') или там надо будет еще кавычки экранировать типа 'target=\"_blank\">' |
|||
5
WhiteCat
26.07.13
✎
15:35
|
(4) Спасиб, сча попробуем на кошках...
|
|||
6
МихаилМ
26.07.13
✎
15:36
|
IBLOCK_PROPERTY_ID=88 or IBLOCK_PROPERTY_ID=73...
замените на IBLOCK_PROPERTY_ID(88,73...) |
|||
7
WhiteCat
26.07.13
✎
15:50
|
(6) ок
|
|||
8
WhiteCat
26.07.13
✎
17:37
|
Так то вариант из (4) проканал (технически). Но результата нет, ибо у битрикса есть свои особенности. Если кто вдруг будет когда-нить запросами менять значения свойств товаров в Битриксе, то вот вам причина глюка.
Строка имеет формат a:2:{s:4:"TEXT";s:89:"<a href="http://www.safemoney.ru/certificates/Promet/Promet_T.jpg" target="_blank">Скачать сертификат</a>";s:4:"TYPE";s:4:"html";} где во втором S хранится длина содержимого, следкющего за ней - s:89 и соответственно длина строки "<a href="http://www.safemoney.ru/certificates/Promet/Promet_T.jpg" target="_blank">Скачать сертификат</a>" должна равняться 89 символам, а поскольку после добавления target="_blank" она увеличивается, битрикс это не принимает и игнорирует данное значение. Если при апдейте строки поменять s:89 на s:105, то все пучком. |
|||
9
Fragster
модератор
26.07.13
✎
17:38
|
это не битрикс, это ЗначениеВСтрокуВнутр от php
|
|||
10
WhiteCat
26.07.13
✎
17:39
|
В общем c регэкспами заморачиваться лень, лучше напишу скрипт и обработаю все 100505-ю запросами, благо это один раз надо сделать.
|
|||
11
WhiteCat
26.07.13
✎
17:41
|
(9) Ну то есть надо скриптом получить все нужные value, перевести их ЗначениеВСтрокуВнутр в строку, проапдейтить строку, сделать СТрокуВЗначение и запихать обратно?
|
|||
12
Fragster
модератор
26.07.13
✎
17:41
|
(10) не надо регэкспами, надо выбрать нужное, сделать http://www.php.net/manual/en/function.unserialize.php, поменять значение, сделать http://php.net/manual/en/function.serialize.php и записать строку в базу
|
|||
13
Fragster
модератор
26.07.13
✎
17:41
|
(11) ага
|
|||
14
WhiteCat
26.07.13
✎
17:41
|
(9) А как оно там у php правильно называется, это ЗначениеВСТрокуВнутр?
|
|||
15
WhiteCat
26.07.13
✎
17:42
|
(12) О, ясн, (14) отпадает
|
|||
16
WhiteCat
26.07.13
✎
17:42
|
(13) Чувак, ты крут!
|
|||
17
Fragster
модератор
26.07.13
✎
17:45
|
вообще подобное запихивание ИМХО признак говна в архитектуре
|
|||
18
WhiteCat
26.07.13
✎
17:49
|
(17) Не, это автоматизация исправления забитых неправильно юзерами в свойства товаров ссылок на сертификаты, которые открываются в окне сайта. А надо чтобы открывались в отдельном окне.
|
|||
19
Fragster
модератор
26.07.13
✎
18:01
|
(18) я про то, что ассоциативные массивы лежат в текстовом поле БД
|
|||
20
WhiteCat
26.07.13
✎
18:34
|
(19) Это к битриксу
|
|||
21
kokamoonga
26.07.13
✎
18:42
|
(17) (19) полностью согласен, о чем в вопросительной форме выразил свое отношение в (2).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |