Изменения в fieldsdata

#1 27 августа 2011 в 17:09
Всем привет.

Мужики, столкнулся с такой проблемой, при редактировании записей в cms_uc_items в phpmyadmin.

Действия следующие:

1.В админке создаю раздел каталога, (одна запись с типом html).
2.Добавляю в раздел запись. В поле html добавляю игру, *.swf файл (через редактор)
3.Флэшка на сайте отображается.
4.Захожу в базу phpmyadmin, таблица cms_uc_items. Открываю добавленную запись, нажимаю редактировать, затем, ничего не меняя, жму ок.

После этого игра на сайте не отображается. В чем причина, подскажите.
#2 27 августа 2011 в 18:04
Не уверен в точности, но могу предположить, что при загрузке через редактор используется mysql_real_escape_string, поэтому спецсимволы экранируются. А при прямом запросе в phpmyadmin нет. В коде, который вставляется, содержатся спецсимволы \x00, \n, \r, \, ', " and \x1a, которые не применимы в мускул запросе. Попробуйте их проэкранировать вручную. Скорее всего не дает " или '.
#3 27 августа 2011 в 18:22
Марат, вот что у меня в поле fieldsdata

  1. a:4:{i:0;s:185:"<p>Now you can test you poker skills by challenging some sexy girls on this dress up adventure, but dont be fooled by their sexy appearance, they can leave you without a dime!&nbsp;</p>";i:1;s:255:"<embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://site.ru/images/swf/games/game1313250443egbaccarat.swf" width="600" height="500" play="true" loop="true" menu="true"></embed>
  2. <p>&nbsp;</p>";i:2;s:8:"0,214843";i:3;s:63:"http://site.ru/images/swf/games/game1313250443egbaccarat.swf";}
Подскажите как, очень прошу.
#4 27 августа 2011 в 19:37

Подскажите как, очень прошу.

ph3no
Отредактируйте заново через редактор, зачем заморачиваться ручным экранированием. Всё что нужно можно в редакторе вставить. Не лезьте в БД.
#5 27 августа 2011 в 21:58
Хех, дело в том что я добавляю записи импортом csv в phpmyadmin. Записей около 100000. Вручную никак невозможно.
#6 27 августа 2011 в 23:33
ну вот, а как хорошо начиналось с редактирования записи… а дело то в импорте оказывается laugh
просматривая значение поля fieldsdata обнаружил непонятные циферки, начал копаться в коде.
оказывается в поле записи вставляются после обработки функцией serialize(), т. е. преобразуются в хранимое представление данных. Когда берутся из таблицы, то преобразуются функцией unserialize(). Может быть причина в этом. Если делать прямой импорт из csv, а потом обработать данные при выводе unserialize(), не должно получится то, что надо.
#7 28 августа 2011 в 09:05
Марат, я начал просто с редактировании записи, чтоб не заморачивать голову, тем кто может помочь.
Да, такая же ситуация происходит и с импортом. А вы пробовали воспроизвести по шагам? У вас также происходит? Может у меня что с phpmyadmin не так…

Спасибо, что уделил время, Марат.
Сейчас продолжаю ковыряться. Если ничего не найду, то прийдется подбирать другую cms для проекта.
#8 28 августа 2011 в 11:13
Да получится всё. С другим кмс тоже придется разбираться. Лучше уж приспосабливать хорошо известный. Меньше времени потеряется.
Напиши просто скрипт для импорта из csv. За основу можешь взять вот этот скрипт. Данные перед тем как вставлять в БД обработай serialize() и вставляй методами класса cmsDataBase $inDB->query(). При вставке данные автоматом обработаются musql_real_escape_string(). И всё будет нормально. Как готовятся и вставляются данные можно посмотреть в файле model.php и frontend.php в /components/catalog. По подобию и надо делать.
#9 28 августа 2011 в 12:01
не ту ссылку дал в предыдущем посте. надо смотреть вот эту. Открываешь csv файл, считываешь данные в массив и дальше уже работаешь с массивом.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.