Сохранять правильные данные формы или ждать когда не будет ошибок?
Здравствуйте.
Сейчас работаю с HTML-формами, без аякс запросов. Допустим необходимо отредактировать статью в админке, при этом статья опубликована на сайте. Пользователю-модератору показываем форму, где уже забиты старые данные, он редактирует и нажимает кнопку "сохранить", браузер отправляет на обработчика, он в свою очередь проверяет данные и если все правильно то сохраняет и говорит что все хорошо. Если что-то неправильно он отправляет назад и говорит в чем ошибка, при этом в полях показываем данные, который пользователь изменил. Допустим, пользователь указал неверно телефон, но другие данные изменил верно и мы показываем что ошибка только в телефоне. Что теперь со статьей на сайте? Все данные обновлены, а телефон стоит старый? Или не обновлять статью, пока пользователю не скажем что все хорошо?
Если к статьи привязаны другие сущности - тэги, картинки и т.д. То их тоже обновлять только когда скажем юзеру что все хорошо.
<ИМХО>
лучше сохранять верные данные, уведомляя пользователя о том, что есть и неверные данные. При этом сохраняя предыдущую версию тех данных, которые пользователь ввел неверно. И обновлять все сохраненные данные сразу. Это логично, потому что:
1) Сокращается объем работы для пользователя, который меняет данные. Он обновил все сущности (текст, картинки, тэги, контактные данные), но неверно обновил телефон. Обновить один только телефон чуть позже (через секунду или через месяц) - гораздо меньший объем работ, нежели изначально.
2) Потребители контента быстрее получают актуальную информацию. В наше время это важно. Ну а то, что из всей обновленной информации только телефон не обновился - не так важно, как если бы вообще ничего не обновилось. Т.е., выбираем меньшее из зол.
ИМХО>
спасибо за ответ.
Просто вот думаю. При регистрации человек заполняет данные, нажимает кнопку регистрации и видит ошибки, он решает позже пройти регистрацию и понимает что его анкеты еще не будет на сайте. Не будет ли у него похожего мнения, если он редактирует свои анкетные данные и ему показали ошибки, он думает что раз не прошло обновление, приду завтра и нормально все перепишу? Или просто надо писать более подробный комментарий какой путь не выбрав - Произошла ошибка при сохранении, ваши данные не были обновлены, необходимо проверить все поля. И.. мы сохранили данные кроме телефона, проверьте данные еще раз.
@Arik Очень запутанно, я пытался вникнуть но не смог (кофе еще не допил). В принципе спутанность твоего рассуждения указывает на одну важную вещь - всё должно быть проще, как в жизни, так и в рассуждении. Я предлагаю мыслить немного в другой плоскости. Что пользователя однозначно бесит? Когда он заполняет форму и из-за каких-то ошибок она приковывает к себе пользователя, пока он всё не исправит. Я сам сколько раз громко матерился и закрывал к чертям сервис и навсегда забывал про него из-за того что сервис вынуждал меня заполнять какие-то гнусные антигуманные формы - всё потому что дизайнер интерфейса поленился продумать удобную и приятную форму. Надо искоренять это зло. Пусть пользователь заполнит форму, а его дальнейший путь определиться корректностью неких критических полей - например, почты и пароля. Не более 2-3 критических полей на форму. Остальные поля просто подсвечиваем как некорректные (если есть ошибки) и отпускаем пользователя на свободу - если ему надо, то он вернется и исправит их. А если поленится - надо его как-то простимулировать (типа вы заполнили форму на 50%, исправьте ее и получите баллы) - мы же всё-таки как-то пытаемся заработать на наших пользователях, следовательно надо всячески облегчать им жизнь.
ИМХО
Благодарю за интерес к вопросу. Я не дизайнер и не мастер интерфейсов, я больше программист и моя стихия серверная часть. И я сейчас просто пишу небольшой инструмент для работы html-форм и моделей (новости, контент-страницы, объявления). Сейчас надо забыть про дизайн, JS-скрипты. Все работает на уровне html и обработки на серверной стороне.
Когда создается модель то вопросов нет, если не заполнил обязательные поля, то я ничего на сайте показывать не буду, тут пользователь по умолчанию думает что ничего на сайте не появилось и будет прав. Теперь пользователь редактирует опубликованную модель. Изменил данные и мы показываем ему ошибку, на этот момент пользователь будет думать(ожидает) что на сайте еще ничего не поменялось или поменялись только те поля что заполнил верно? Вопрос только в этом.
А зачем пользователя заставлять думать? Да и ни за что мы тут не угадаем, что у него в голове. Надо просто выводить ему сообщение о статусе измененных данных - 1. все данные верны и опубликованы, 2. данные не верны и опубликованы/не опубликованы.