Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP

Войти
Регистрация
Восстановить пароль
 
ShadowVasiliy
0 / 0 / 0
Регистрация: 15.05.2018
Сообщений: 2
#1

Как бы хранили такие данные? - PHP

15.05.2018, 14:05. Просмотров 80. Ответов 3

Добрый день.

Делаю конструктор лендингов и не могу определиться с подходом к хранению контента.
Есть html-блоки из которых пользователь составляет страницу. В блоке он может менять текст и немного внешний вид.

Если не хочется читать, в конце есть выжимка.

Сильно упращенный блок выглядит так:
HTML5
1
<div class="block"><h1>Текст блока, который меняет пользователь</h1></div>
Проанализировав другие конструкторы, все они разделяют блок на "скелет" и данные блока. Скелет общий для всех, а изменяемые данные всегда разные. Если в конструкторе 100 блоков и 1000 раз их использовали, то будет 100 скелетов и 1000 данных.

При показе страницы они просто накатывают данные на скелет.

Разделенный блок выглядит так:
HTML5
1
<div class="block"><h1>*</h1></div>
И отдельно в базе хранится его контент:
Текст блока, который меняет пользователь

Я же не понимаю почему никто не хранит весь html-блок с изменениями целиком. Без разделения.

Плюсы подхода с разделением на скелет и данные:

1. При разделении мы один раз храним скелет и сколько угодно изменений, что сильно снижает занятое место. Ведь html-код в 3-10 раз больше текста на сайте.
2. Мы ограничиваем пользователя на внесение непредвиденных данных. То есть пользователь не сможет испортить что-то за пределами разрешенной области.

Плюсы второго подхода (когда html блок хранится полностью):

1. При изменении архитектуры мы можем легко добавить в html дополнительные атрибуты, классы. В редакторе задать больше гибкости. Например, мы в редакторе не предусмотрели изменения атрибута action в теге form, а потом захотели дать доступ к этому атрибуту и нам не нужно пересоздавать все скелеты, так как весь блок является персональной копией одного пользователя.
2. Более простой механизм работы и хранения данных.

Сухая выжимка:
Нужно хранить html код блоков. Есть два способа хранения.
1. Разделить блок на общие данные (скелет) и приватные (изменения пользователя), при показе страницы накатывать изменения на скелет
2. Не разделять и харанить с каждым изменением весь html-код блока.

Большинство используют первый способ. Я склоняюсь ко второму из-за большей гибкости и простоты.

Какой бы вы выбрали способ и почему?

Ах да, прошу прощения за PHP, но не нашел более подходящего раздела с подходящей аудиторией. Вопрос о web и серверном программировании. Прошу понять.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2018, 14:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как бы хранили такие данные? (PHP):

Как научиться делать такие задания? - PHP
Требования Решить поставленную задачу используя: • PHP 5.6+ • ООП • PSR2 (http://www.phpfig.org/psr/psr2/) и PSR4...

Как в php сделать поиск? Вводить данные, нажимать на кнопку, скрипт по базе ищет данные и выводит - PHP
Можно ли в php сделать поиск? Вводить данные например, нажимать на кнопку и он по базе ищет эти данные и выводит И подскажите...

как такие задачи оформить? - PHP
Друзья проблема в том что не так давно дали 2 задачи решить на PHP а я вот в нем никак не рублю а сдавать в пятницу(. Вот и пришлось...

Рейтинг и статусы такие как на сеоспринт - PHP
Как сделать рейтинг и статусы такие как на сеоспринт а то нигде немогу найти?

Как записать в массив данные из *.TXT и и правильно рассортировать данные по ячейкам массива? - PHP
файл index.php &lt;?php $site = (file('text.txt')); в файле text.txt находится: xxxxxx.ru xxxxx.com xxxx.org xxxx.ru...

Как прочитать данные из ячейки, и если она пуста добавить данные - PHP БД
Привет всем. У меня есть вот такой код: &lt;?php $arrqq = array($row-&gt;id); foreach($arrqq as $d =&gt; $s) { $imagetext =...

3
Phantom-84
73 / 72 / 18
Регистрация: 15.09.2017
Сообщений: 369
15.05.2018, 15:50 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
ShadowVasiliy, граница достаточно условная. Можно путем настройки перетягивать как в одну, так и в другую сторону. Основные недостатки понравившегося вам способа вы верно обозначили:
- пониженная защищенность;
- повышенная избыточность хранимых данных (атрибуты и т.п. больше относятся к представлению, а представление нужно отделять от фактических данных).

Пример с h1 не самый удачный. h1 действительно чаще остается в шаблоне, а вот уже несколько h2 вперемешку с текстом в обычных абзацах вполне могут быть структурными данными, хранящимися в базе данных.

Добавлено через 6 минут
div по прямому назначению редко хранится в базе данных. Чаще это происходит в качестве технических заплаток, например для оборачивания адаптивных таблиц, хотя оборачивание можно делать и непосредственно перед выводом после извлечения данных из базы данных.

Добавлено через 4 минуты
Про form и action вы тоже что-то непонятное пишете. Не могу себе представить ситуации, когда это действительно нужно. Да, это все в шаблонах обычно хранится.
1
ShadowVasiliy
0 / 0 / 0
Регистрация: 15.05.2018
Сообщений: 2
15.05.2018, 16:12  [ТС] #3
Phantom-84, спасибо! Вы помогли построить мысли в правильном направлении
В итоге вопрос теперь стоит в перетягивании границы

Если полностью отделить представление от данных, то можно будет на этапе показа страницы данные применять к разным представлениям (для мобильных один шаблон, для новых браузеров другой и т д).

Если принять весь блок за данные, то у нас большая гибкость во время редактирования и создания страницы, потому что визуальный редактор конструктора будет иметь неограниченное влияние на html.
0
Phantom-84
73 / 72 / 18
Регистрация: 15.09.2017
Сообщений: 369
15.05.2018, 16:40 #4
Я за самый строгий вариант первого подхода. Ужасно наблюдать, когда в базе данных хранятся теги со множеством атрибутов для раскрашивания текста и т.п. Старайтесь обходиться основными тегами для форматирования текста. В крайнем случае добавляйте в список поддерживаемых теги с классами, как отдельные теги.

Изображения и прочие медиа-объекты внутри текста обычно хранятся в виде специальных кодов, но в общем-то допустимо их хранить и в виде тегов, только не нужно сразу к ним прикреплять код конкретных просмотрщиков, плееров и т.п. Делайте привязку перед выводом, а еще лучше сразу на JavaScript.
0
15.05.2018, 16:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2018, 16:40
Привет! Вот еще темы с ответами:

Как реализовать в Java такие входные данные? - Java SE
Входные данные начинаются с числа Т - это количество наборов чисел, которые будут идти далее. Каждый набор занимает две строки. В первой...

Unirest.post Непонятно как отправить такие данные - Node.js
Всем привет. Пытаюсь отправлять данные методом post, повторяя активность браузера. В браузере вижу: Accept */* ...

Написать класс Queue, в котором будут содержать такие данные как ФИО и возраст - C#
Добрый вечер! Помогите написать класс Queue, в котором будут содержать такие данные как ФИО и возраст. Только сделать это нужно не в...

Проверка есть ли такие данные в таблице. Acess + Delphi - Delphi БД
Ребят подскажите пожалуйста в одном вопросе. Делаю проект на дельфи + база аксесса. Данные из эдитов вносятся в базу нормально. Но нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru