Всякий раз, когда я готовлю длинную форму для клиента, я всегда хочу разделить ее на отдельные страницы, чтобы посетителю не приходилось заполнять все это, а делал это поэтапно.
Что-то вроде:
Step 1 > Step 2 > Step 3 > Thank You!
Я никогда не делал этого по одной причине: я не знаю, как эффективно хранить данные из отдельных шагов? Под эффективностью я имею в виду, как хранить его, поэтому, когда посетитель решает не завершать его на шаге 3, все данные удаляются.
Я придумал несколько способов, как это можно решить, но я просто не убежден ни одним из них:
Хранение данных формы в базе данных
Я могу представить таблицу со столбцами, представляющими каждый вопрос, с последним столбцом, представляющим значение bool
независимо от того, была ли форма заполнена или нет?
Но мне пришлось бы время от времени выполнять очистку таблицы (возможно, даже каждый раз, когда она обновляется новыми данными?) И удалять все записи с помощью complete = 0
.
Сохранить данные формы в данных сеанса.
Это, с другой стороны, не требует хранения данных в базе данных (в зависимости от того, как обрабатываются сеансы), и вся информация будет в Cookie. Но что, если браузер не поддерживает файлы cookie или пользователь отключил их (редко, но бывает), или если в форме есть файловые вложения, это не нужно.
echo
данные формы с предыдущей страницы как <input type="hidden">
на следующей странице
Да, я знаю, что это довольно глупая идея, но это альтернатива. Плохо, но это так.
Опция 1
кажется лучшей, но я чувствую, что нет необходимости хранить временные данные в БД. А что, если это станет очень популярной формой, заполняемой многими посетителями? Количество обновлений / удалений может быть огромным?
Я хочу знать, как вы справляетесь с этим.
Редактировать
Дэвид задал хороший вопрос. Какую технологию я использую?
Я лично использую PHP + MySQL, но я чувствую, что это более общий вопрос. Пожалуйста, поделитесь своими решениями независимо от того, какую серверную технологию вы используете, так как я уверен, что концепция может быть так или иначе адаптирована к различным технологиям.