Форма, которая охватывает много страниц - PullRequest
3 голосов
/ 17 октября 2010

Как мне создать форму, которая охватывает несколько страниц?Я хотел бы задать большое количество вопросов, и на основе ответов на предыдущие вопросы будут заданы новые конкретные вопросы.

Ответы [ 4 ]

5 голосов
/ 17 октября 2010

Традиционный метод: сохраните все предыдущие ответы на вопросы в полях <input type="hidden"> на последующих страницах, чтобы последняя форма содержала всю отправку (только не все видимые). Недостаток: загрузка файлов раздражает запоминанием, объем данных может увеличиться.

Обычный метод: выбрасывайте ответы в сеанс или файлы cookie по мере продвижения, выбирая их в конце. Недостаток: параллельные операции приводят к непредсказуемым противоречивым результатам. Загрузка файлов по-прежнему раздражает. Для этого я бы не использовал решения для хранения файлов cookie / сессий.

Современный метод: иметь простую (длинную) единственную форму, но использовать JavaScript, чтобы показать только ее часть одновременно. Нажимая «Далее», вы просто скрываете ценность предыдущей страницы и показываете следующую. Последняя кнопка - настоящая кнопка отправки.

1 голос
/ 17 октября 2010

Есть несколько способов сделать это:

  • Инкрементно заполнять базу данных, отправлять отправлять
  • Сохраняйте все поля формы на каждой странице, но скрывайте (<input type='hidden' ...>) те, которые не должны отображаться (как подсказывает @Trufa в другом ответе)
  • Накапливает объект, который неявно сохраняется в сеансе (зависит от архитектуры вашего сервера)
  • Накапливать содержимое в одном или нескольких файлах cookie (кажется, мне кажется, что для полноты я перечисляю это)

Если вы хотите быть супер-модным, вы можете накапливать информацию в хранилище на стороне клиента HTML5. Конечно, это исключило бы старые браузеры Microsoft.

0 голосов
/ 17 октября 2010

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

Механизм, который PHP предоставляет для таких вещей, является механизмом сеанса.Вы создадите набор ответов в сеансе, когда пользователь отправляет каждую страницу, и когда у вас есть полный набор, полный набор ответов в сеансе фиксируется в базе данных.

Конечно, это не единственный подход, вы также можете постепенно добавлять данные в базу данных при каждой отправке страницы, но тогда вы получите наборы частичных ответов, где люди только делали первую страницу илиПервые несколько страниц, а затем отказались от него.Вы должны написать код для обработки этих частичных представлений.

0 голосов
/ 17 октября 2010

Нет такой вещи, как одна форма, охватывающая несколько страниц: каждая страница / форма не зависит от других.

Если вы каким-то образом отслеживаете, что уже было введено (возможно, в переменные сеанса), тогда вы можете просто отображать новые вопросы в новой форме, пока у вас не будут все необходимые данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...