рассмотрите следующую структуру данных:
subject (stdClass)
topic (stdClass)
units (int)
title (varchar 50)
description (varchar 255)
start_time (time)
end_time (time)
teacher (stdClass)
first_name (varchar 50)
last_name (varchar 50)
students (stdClass[])
1 (stdClass)
first_name (varchar 50)
last_name (varchar 50)
2 (stdClass)
first_name (varchar 50)
last_name (varchar 50)
3 (stdClass)
first_name (varchar 50)
last_name (varchar 50)
proctor (stdClass)
first_name (varchar 50)
last_name (varchar 50)
У меня есть проблема о том, как реализовать вышеупомянутую структуру данных в динамические веб-формы. Я не уверен, какой тип реализации я буду использовать для помощи конечному пользователю к заполнению. В то же время сохранение целостности данных.
Сценарий:
Таким образом, как я должен представить это использование веб-формы?
в соответствии с рекомендациями по удобству использования поля должны быть сгруппированы в элемент fieldset
на основе их темы / например имя / фамилия вместе и т. д.
из-за большого объема данных следует использовать некоторый интерфейс Javascript для поэтапного отображения страницы (формы можно загружать на одной странице, но JS будет служить для отображения и скрытия соответствующих разделов / наборов полей) . submit затем отправит все данные сразу или, в качестве альтернативы, можно будет предъявить иск к AJAX после обновления каждого раздела ...
Лучшее в наборах полей - это то, что они также могут быть сгруппированы и включены друг в друга.
тег < pre >
можно использовать для предотвращения свертывания нескольких пробелов и разрывов линий. Также можно использовать & nbsp;
для типичного пространства (не разрываемое пространство) и < br/>
(или < br >
) для разрывов строк.
Но не делайте < br > < br > < br > < br >
просто используйте тег < p >
и настройте поля с помощью CSS.
<p style="margin-top: 20px;">Some copy...</p>
Хотя, вы должны определить стили глобально, а не в линию, как я сделал в этом примере.
При выводе строк из PHP можно использовать "\n "для новой строки и "\t" для вкладки.
<?php echo "This is one line\nThis is another line"; ?>
Хотя флаги, подобные\n или\t, работают только в двойных кавычках ("), но не в одиночных вуотах (').
-121--1342725-Журнал F # .NET опубликовал две статьи об этом:
Моделирование конечных элементов в реальном времени (15 июня 2008 года).
Жесткая динамика тела (15 января 2010 г.)
Я сталкиваюсь с аналогичной проблемой и с одним из моих проектов, и с тем, как заполнить огромный объем информации невнятным образом, сохраняя состояние при редактировании.
Технологии уже существуют, чтобы сделать это довольно хорошо, а именно ajax и json. Мой проект построен с PHP, поэтому моя идея состоит в создании представления, которое отображает все формы ввода данных, но сохраняет данные постепенно, отправляя заполненные поля в скрипт PHP с ajax, который затем сохраняет/обновляет объект.
Теоретически с некоторой точностью javascript должна быть возможность сделать очень эффективный интерфейс (думаю, завершенные разделы имеют кнопку сохранения и слайд закрыт, который затем может быть открыт для дальнейшего редактирования)
Его можно сделать это очень модульный дизайн, реализуя, например, запись один раз поля, один раз сохраненные возможность быть отредактированы.
Это действительно очень интересная тема, с которой многие сайты, кажется, борются. Пожалуйста, скажите мне, если бы я схватил не тот конец палки здесь и опубликовал ответ, который не имеет значения/полезен
Чтобы уменьшить дубликат кода и действительно сделать этот элегантный и управляемый я бы реализовал его с шаблоном дизайна MVC. Иметь представление отправлять данные каждый раз, когда пользователь перестает вводить данные в поле и оно не будет пустым. Затем попросите контроллер проверить, требуется ли обновление поля, и отправить правильные подтверждения обратно в ракурс. Модель также будет играть свою роль, поскольку вы, несомненно, будете сохранять данные в базе данных.
Вид, по существу, будет представлять собой модульный сценарий ajax, он имеет входы и контролирует их на предмет изменений, как только достаточно изменений (чтобы гарантировать частичное сохранение), ajax отправляет данные на контроллер и сворачивает соответствующий раздел, чтобы показать, что он был завершен. Аналогичным образом, если вы вернуться к странице и контроллер видит, что есть некоторые данные в модели для этих полей он отправляет его в ajax представление, которое затем заполняет и сворачивает предварительно заполненные разделы =) Довольно аккуратно я думаю.
Редактирование: исправление опечаток, добавлен комментарий MVC