Символы в базе

#1 1 марта 2016 в 16:02
Здравствуйте, в базе данных, как правило в поле с контентом встречается такой символ "--- — >". Хотелось бы знать для чего он нужен?
#2 1 марта 2016 в 17:00
" — — >" — тут 5 символов. Вы хоть скрин сделайте где так увидели. А так это 4 сивола — и один >
#3 1 марта 2016 в 17:26
А что, это только у меня?
#4 1 марта 2016 в 17:35
Lora, это значение массива приведено в строковое представление, и строка записана ячейка БД. Копайте с торону arrayToYaml()
#5 1 марта 2016 в 17:47
О'K будем копать, Loadырь, и дай бог раскопаем smile, но вопрос ещё в том, зачем это надо? Это свойство ф-ции или нужды движка?
#6 1 марта 2016 в 18:03
Это скорее нужды БД, иначе как можно сохранить массив в текстовом или строковом поле и потом обратно получить из "строки" массив.
#7 1 марта 2016 в 18:04
Что массив данных можно было записать в БД, а потом прочитать из базы и вернуть в состояние массива используется метод модели arrayToYaml (получили то что вы увидели в базе) и обратно yamlToArray (обратно в массив)
#8 1 марта 2016 в 18:24
Посмотрел я метод модели arrayToYaml (), что бы разобраться в spyc.php моей жизни точно не хватит. Но вопрос возник. А зачем строку передавать как массив? Ведь не везде же так. Например в статьях строка, как строка, пусть она и в html и нет но это строка, или нет?
#9 1 марта 2016 в 19:08
Lora, так хранятся данные в формате YAML (погуглите что это такое). Используется для того, чтобы массивы сохранить в базу данных. Наиболее наглядно используется в опциях компонентов.
#10 1 марта 2016 в 19:29

моей жизни точно не хватит

Lora
не нужно тратить на это жизнь. Господа-разработчики icms потратили не мало своего несвободного времени чтобы у нас это занимало несколько секунд:
yamlToArray($item) — хоп! и в руках массив, с которым мы можем работать
arrayToYaml($item) — хоп! и yaml-представление которое мы можем отправить в базу

зачем строку передавать как массив

Lora
если это строка то и не надо. это используется для записи массива в бд
#11 1 марта 2016 в 19:32
Всё понятно, "если звёзды зажигают, значит это кому то нужно" smile, но тогда может подскажет кто, как избавиться от этих символов, как не пытался с помощью разных "прегов и матчей и реплейсев" что то ни как не победить. stuk
#12 1 марта 2016 в 19:35
Kreator, лучше так:
  1. $item = array();
  2. $str = arrayToYaml($item); // перевод массива в формат YAML
  3. $item = yamlToArray($str); // перевод строки формата YAML в массив
smile
#13 1 марта 2016 в 19:38

Всё понятно, "если звёзды зажигают, значит это кому то нужно"

Lora
Fuze же сказал что пример посмотрите в сохранении свойств виджетов!

но тогда может подскажет кто, как избавиться от этих символов, как не пытался с помощью разных "прегов и матчей и реплейсев" что то ни как не победить.

Lora
А они вам чем то мешают? )) Передавайте NULL вместо пустых массивов.
#14 1 марта 2016 в 19:38

как избавиться от этих символов

Lora
это не "эти" символы
если у вас запись сохраняется как YAML то и преобразуйте ее обратно, получите ее, преобразуйте массив, из массива достаньте запись.

все. волшебное зелье для чтения чужих мыслей закончилось. мы не знаем что вы там записываете, куда, откуда, как. как могли — подсказали.
#15 1 марта 2016 в 19:56


Kreator, лучше так:

  1. $item = array();
  2. $str = arrayToYaml($item); // перевод массива в формат YAML
  3. $item = yamlToArray($str); // перевод строки формата YAML в массив
smile

Val
Вот не выходит так.
На примере модуля "mod_uc_random"
Хочу добавить в вывод описание, предворительно создав поле. Заношу в админке в поле строку.
В запросе в mod_uc_random.php дописываю
  1. $item['fieldsdata'] = cmsCore::yamlToArray($item['fieldsdata']);
В итоге получаю Aray вместо текста.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.