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

Форум PHP

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

 

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

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

тема: Оставить значения полей на своих местах после рефрэша!

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

 
 автор: Anwor   (11.04.2006 в 21:43)   письмо автору
 
   для: nikk   (11.04.2006 в 17:10)
 

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

   
 
 автор: nikk   (11.04.2006 в 17:10)   письмо автору
 
   для: Anwor   (10.04.2006 в 15:54)
 

Все ниже - глубокое ИМХО:
Отсутствие «штатного» средства для решения вашей проблемы скорее не недоработка, а следствие ненужности такого средства.
С точки зрения юзабилити, использование больших форм крайне нежелательно. Пользователь Интернета при виде формы из большого количества пунктов, скорее всего не станет ее заполнять.
Я бы советовал вам решить вашу проблему не техническими а «организационными» средствами. Разбейте форму на несколько «быстрых» простых шагов, логически сгруппировав вопросы форм. Сообщите посетителю в заголовке «шаг 1 из 3» и обнадежив его сообщением типа «осталось 5 минут».
Ход, в общем-то дурацкий, и в стиле всеми любимого Микрософта, но, ИМХО, всетаки лучший.

   
 
 автор: Anwor   (11.04.2006 в 14:54)   письмо автору
 
   для: cheops   (11.04.2006 в 14:30)
 

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

   
 
 автор: cheops   (11.04.2006 в 14:30)   письмо автору
 
   для: Anwor   (10.04.2006 в 23:28)
 

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

   
 
 автор: Anwor   (10.04.2006 в 23:28)   письмо автору
 
   для: cheops   (10.04.2006 в 23:08)
 

Нет, ну вот смотрите...
В странице, к примеру, folder.php имеем составную форму типа:

--------
НАЗВАНИЕ СТРАНИЦЫ
--------
ФОРМА1: заявка
поля поля поля
--------
ФОРМА2: инфа по объекту
поля поля поля
--------
ФОРМА3: инфа по клиенту(ам)
выпадающий список, берущий значения из базы данных. Т.е. на основании БД формируется массив с именами клиентов.
ссылка: >>ДОБАВИТЬ НОВОГО КЛИЕНТА<<
--------
Кнопка Submit
--------

Когда РНР-код формирует данную страницу на основании данных из БД, он заносит в выпадающий список имена ранее зарегистрированных клиентов. Если же оставленной заявке соответствует авторство нового, не занесенного в базу клиента, то мы вынуждены нажать ссылку >>ДОБАВИТЬ НОВОГО КЛИЕНТА<<, href которой отошлет нас на _blank-страничку с формой по характеристикам клиента, скажем, subject.php. Предыдущая страница folder.php с составной формой остается как есть, с девственно занесенными в поля данными. Далее, когда все поля на странице subject.php по клиенту заполнены, скрипт перекидывает всё это безобразие в БД, а дальше от него требуется следующее:
1. Послать запрос к folder.php на обновление массива с именами клиентов.
2. Обновить САМ СПИСОК на основании этого массива.
3. Выгрузить, т.е. вообще закрыть, как POPUP-окно, страницу subject.php (ведь она выполнила свою функцию, и нечего ей больше глаза мозолить). Это в идеале, но в принципе, можно чтобы она просто переходила на нейтральный фон с сообщением, что "новый клиент успешно добавлен в БД".
4. Данные, внесенные в формы (в данном случае) "Заявка" и "Инфа по объекту" страницы folder.php должны ОСТАТЬСЯ В СВОИХ ТЕКСТОВЫХ ПОЛЯХ, никуда не деваясь.

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

   
 
 автор: cheops   (10.04.2006 в 23:08)   письмо автору
 
   для: Anwor   (10.04.2006 в 20:05)
 

А зачем пользователю рефреш жать, когда от него требуется заполнение формы? Пусть занимается своей прямой обязаностью :))), а не руки распускает :)))

Перезагрузить страницу можно при помощи HTTP-заголовка
<?php
  header
("Location: index.php");
?>

index.php - имя страницы, на которую нужно перейти, если это текущая страница - она перезагрузится.

   
 
 автор: Anwor   (10.04.2006 в 20:05)   письмо автору
 
   для: Trianon   (10.04.2006 в 18:30)
 

Нет, в конкретном примере я просто несколько неверно выстроил лог. цепочку. Подразумевается, что рефрэш происходит не спонтанно, а перед ним можно выполнить какие-то операции. Скажем, в той же длинной форме есть сегменты, среди которых есть выпадающий список, заполняемый запросом из базы по зарегистрированным клиентам. Здесь же, в этом же сегменте, располагается ссылка на модуль добавления НОВОГО клиента. Модуль подгружается в отдельное окно, там заполняются все характеристики клиента, добавляются в соответствующие поя БД и страница должна делать обратный редирект на первую большую форму, где в ТОТ САМЫЙ СПИСОК должна быть добавлена новая запись о клиенте. Т.е. здесь полюбак нужно обновить страницу, чтобы 1) добавить в массив новый элемент; 2) в соответствии с ним выстроить новый список. При этом нельзя заставлять админа по новой забивать все предыдущие поля, которые он уже заполнял. Может, есть какое-то обходное решение реализации данной задачи? Если есть, подскажите, плз, и заодно подкиньте информацию, как заставить страницу выгрузить саму себя, сделав перед этим авто-посыл другой странице (возможно, заголовка) инфу о рефрэше?
Ох, сумбурно... надеюсь, вы меня поймете.

   
 
 автор: Trianon   (10.04.2006 в 18:30)   письмо автору
 
   для: Anwor   (10.04.2006 в 18:28)
 

Так ведь и сессия не поможет.

   
 
 автор: Anwor   (10.04.2006 в 18:28)   письмо автору
 
   для: Trianon   (10.04.2006 в 16:20)
 

А, ну вот я и спрашивал по поводу - мож есть специальный приемчик для этого дела. Ну нет - так нет, придется всё в сессию фигачить..

   
 
 автор: Trianon   (10.04.2006 в 16:20)   письмо автору
 
   для: Anwor   (10.04.2006 в 15:54)
 

Когда человек жмет "обновить" до отправки - все введенные данные теряются еще на стороне клиента. На сервер, к PHP следует запрос предыдущей страницы, но он уже ничего не сможет сделать. Данные-то потеряны.

   

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

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

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