Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: обработчик php форм html
 
 автор: lpro100jackl   (03.11.2014 в 15:13)   письмо автору
 
 

Мне нужно из 3 форм на отдельных страницах переслать данные в 1 php обработчик. Причём После завершения заполнения 1 формы человек должен переходить на следующую форму, а после заполнения последней формы должен переходить в php обработчик, а php обработчик в свою очередь должен производить расчёты с учётом данных из всех форм ( в данном примере 3 форм). Как сделать данную операцию с 1 формой я знаю, но со многими не смог, поэтому прошу помочь и поделится какой-либо информацией либо ссылками на статьи.

  Ответить  
 
 автор: confirm   (03.11.2014 в 15:38)   письмо автору
 
   для: lpro100jackl   (03.11.2014 в 15:13)
 

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

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

  Ответить  
 
 автор: Trianon   (03.11.2014 в 20:34)   письмо автору
 
   для: lpro100jackl   (03.11.2014 в 15:13)
 

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

  Ответить  
 
 автор: confirm   (03.11.2014 в 20:41)   письмо автору
 
   для: Trianon   (03.11.2014 в 20:34)
 

Если только это не мега данные, те же изображения к примеру.

  Ответить  
 
 автор: Trianon   (03.11.2014 в 20:51)   письмо автору
 
   для: confirm   (03.11.2014 в 20:41)
 

Ну да.
Впрочем, изображение изображению рознь.
Какая-нибудь тупая аватарка по размеру вполне впихуема в форму.
Конечно, если не тащить её методом GET.

  Ответить  
 
 автор: confirm   (03.11.2014 в 20:54)   письмо автору
 
   для: Trianon   (03.11.2014 в 20:51)
 

Каким образом, если атрибут value поля file только для чтения? А это уже означает, что требуется хранение на сервере. Если имеется ввиду base64, можно, но гонять данные туда-сюда, это не очень гут, да и небольшая аватарка может занимать приличный объем, если это еще только сырец.
Такой подход вроде бы логичен, но есть в нем один недостаток - это обязательность проверки входящих данных, и тут могут возникать ситуации не из приятных, да и усложняет это обработку данных.

  Ответить  
 
 автор: Trianon   (04.11.2014 в 17:36)   письмо автору
 
   для: confirm   (03.11.2014 в 20:54)
 

>Если имеется ввиду base64, можно, но гонять данные туда-сюда, это не очень гут, да и небольшая аватарка может занимать приличный объем, если это еще только сырец.

Ну да, кодирование в hidden поле.
В рамках первого же шага это будет уже не сырец, а, допустим, JPG, пожатый в строгие рамки как по ширине высоте, так и по выходному размеру.

>Такой подход вроде бы логичен, но есть в нем один недостаток - это обязательность проверки входящих данных,

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

>и тут могут возникать ситуации не из приятных, да и усложняет это обработку данных.

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

Впрочем, все это весьма частный подход в рамках весьма частной задачи.

  Ответить  
 
 автор: confirm   (04.11.2014 в 18:01)   письмо автору
 
   для: Trianon   (04.11.2014 в 17:36)
 

Давайте рассуждать.

В каких случая требуется разбить прием данных на части:

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

В случае А гонять при этом данные между клиентом и сервером, ну это просто глупо.

В случае Б я вообще не вижу причины физически разбивать форму, гораздо проще и легче для последствий, это скрывать/показывать ее логические части клиентским скриптом во время заполнения.

А вот случай Г, это действительно вынужденное действие.

Обработка последовательно принимаемых данных ничем не сложна. А вот если каждую часть принятых данных вновь возвращать пользователю, то как поступить с проверкой?

Понятно, что проверив порцию, и вернув ее вновь пользователю, это сделать холостой выстрел, смысла то нет,
Плюнуть и проверить только после приема всех порций, но а как быть с ошибками? Если ошибки есть в первой и второй или первой и третьей порциях, то опять выполнить последовательность, затем опять проверка, опять ошибки/возврат... Что-то я не вижу легкости в таком сценарии, это "колесо недоверия" может крутиться сколь угодно долго - в чем смысл всего этого, если на каждое уверенное "да" сервера нужно забивать, выплевывая все опять клиенту?

А если еще случай Г, то кроме достоверности данных, нужна еще и проверка те ли данные.

Да и аватарка, это не обязательно JPEG, это может быть и GIF-анимация, которая при небольших размерах может иметь вес, и таскать его троекратно увеличенный весь процесс туда сюда...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования