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

HTML+CSS+JavaScript

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Форма внутри формы

Сообщения:  [1-10]    [11-20]  [21-23] 

 
 автор: task   (20.03.2012 в 11:22)   письмо автору
 
   для: nmahkamov   (20.03.2012 в 11:07)
 

Вернет ли скрипт форму или нет, это не скрипту решать, а вам. Вы должны описать в скрипте все "если", и как обслуживать эти "если".

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

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

Внести содержимое файла в сессию можно функцией file_get_contents(). Переписать из сессии в папку функцией copy(). Если файлов несколько, то удобно держать их в сессии в виде массива.

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

  Ответить  
 
 автор: nmahkamov   (20.03.2012 в 11:07)   письмо автору
 
   для: task   (20.03.2012 в 10:55)
 

не, я имел ввиду загрузку этих файлов, и внесения в БД. Т.е. если человек загрузил файлы и не заполнил другие поля, то как вы уже сказали: скрипт вернет форму задачи ( а файлы заново грузит нет необходимости ). Вот именно в этот момент как нужно поступить с загруженными файлами? Они где должны находится? Во временной директории или нужно их переместить в "мою" папку и занести инфу в БД и ждать форму задачи .... Как-то по-подробнее этот шаг, плиз.

  Ответить  
 
 автор: task   (20.03.2012 в 10:55)   письмо автору
 
   для: nmahkamov   (20.03.2012 в 10:28)
 

А что десток файлов как то изменяет ситуацию?

Если описание задачи по объему равно роману "Война и мир", таки да, надо согласиться, что прием такого описания придется принимать частями, и тоже самое, если к вашему "роману" будет добрая сотня, две, иллюстраций.

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

Поля добавления файлов изначально можно сделать скрытыми, показывая их только в том случае, если заполнено описание, либо добавлять их динамически в форму, столько, сколько требуется. Форму можно не отправлять до тех пор, пока не заполнены поля родители - описание.

Но как бы вы не изголялись на клиенте, вам все равно придется делать проверку на сервере, и сервер определяет условия и порядок внесения в базу. А это все и решает, как поступить.

  Ответить  
 
 автор: nmahkamov   (20.03.2012 в 10:28)   письмо автору
 
   для: task   (19.03.2012 в 18:39)
 

О файлах я написал выше: их может быть максимум 10 штук (uploadify, надеюсь Вы это знаете). В этом случае как поступить?

  Ответить  
 
 автор: task   (19.03.2012 в 18:39)   письмо автору
 
   для: nmahkamov   (19.03.2012 в 17:39)
 

Забудьте, на время, об Ajax. Пусть у вас будет форма с тремя полями - одно текстовое, для описания задачи, и два поля для добавления файлов. Вывод этой формы, как и ее проверку, и добавление в базу ее данных, обрабатывает один и тот же скрипт (страница).
Сперва вы выводите форму, а если пришел запрос от формы (пришли данные), начинается их проверка.
Если пользователь добавил файлы, но забыл описать задачу, значит вы должны вернуть форму вновь, указав на ошибку - отсутствие описания задачи. Но при этом не надо заставлять пользователя загружать файлы вновь, их временно можно сохранить, в сессии. Как только пользователь добавит описание, заносите его в базу, и сразу же после этого запроса, если он успешен, функцией mysql_insert_id() получаете id этой добавленной задачи, перезаписываете файлы из сессии, заносите информацию о них в базу, добавляя полученный id родителя.
В случае, если форма пришла сразу в комплекте (наличие описания), то и сохранять временно ничего не надо.

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

  Ответить  
 
 автор: nmahkamov   (19.03.2012 в 17:39)   письмо автору
 
   для: task   (19.03.2012 в 16:42)
 

Тогда объясните, как сделать одной формой. Чтоб в одной страничке создать задачу и сразу прикрепить к нему файлы. Структуру БД оставим так, как я описал выше: задачи в отдельной и файлы в отдельной табличке.

  Ответить  
 
 автор: nmahkamov   (19.03.2012 в 17:05)   письмо автору
 
   для: ЯСА   (15.03.2012 в 13:52)
 

Можно по подробнее о методе с Аякс технологией. Я знаю эту технологию, и готов выслушать Ваш совет.

  Ответить  
 
 автор: task   (19.03.2012 в 16:42)   письмо автору
 
   для: nmahkamov   (19.03.2012 в 16:13)
 

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

  Ответить  
 
 автор: nmahkamov   (19.03.2012 в 16:13)   письмо автору
 
   для: task   (15.03.2012 в 14:22)
 

Да, правильно, Сначала задача создается, потом этот див (див для формы загрузки файлов) показывается, и только потом может прикреплять файлы.

  Ответить  
 
 автор: task   (15.03.2012 в 14:22)   письмо автору
 
   для: ЯСА   (15.03.2012 в 13:52)
 

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

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-23] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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