Просмотр полной версии : Как сделать форму с просмотром и редактированием
Доброго времени суток уважаемые!
Вот возник такой вопрос. Имеется страница с формой. В этой форме есть поля для ввода ( штук 40 ) и кночка "Создать СЧЕТ-ПРОФОРМУ".
Нажимаем, открывается страница со Счет-Проформой. Нужно там сделать две кнопки: "Версия для печати" и "Изменить Счет-Проформу".
Вопрос в том, как правильно это сделать? Как передать данные дальше в форму для печати или обратно в форму, для изменения? Можно конечно сделать hidden`ы, но больно муторно 40 штук прописывать... можно ли весь поток переменных переправить на другую страницу? :rolleyes:
Если непонятно описал проблему, спрашивайте... ;)
Demon1983
22.11.2001, 15:21
Попробуй сохранять переменные в cookie. Хотя 40 штук тоже гемор, но все же ты потом весь сеанс пользуешь ничего не меняя. А если честно, то я не совсем понял суть вопроса.... Счет какой-то. Объясни суть, что это?
напиши функцию genhidden(), которая будет тебе хидены генерить... и никакого гемора :)
Сама страница с формой на РНР...
Оки, щас попробую подробнее:
Итак, есть страница с формой, где нужно заполнить около 40 полей. После заполнения жмется кнопка ОК. Открывается страница где ему предлагается посмотреть, что он там назаполнял. На этой странице будут две кнопки: "Редактировать" и "Печатать".
Если выбрать "Редактировать", то должна открыться первоначальная форма, но уже с заполненными полями.
Если выбрать "Печатать", то должна открыться окончательная страница с заполненными данными.
2 Wave: Тоже вариант... Сейчас попробую исполнить....
Все же хочется более "нормальный" вариант. Неужели нельзя весь поток данных передать в другой документ?
Хм... еще дурацкий вопрос:
А как мне сделать разделение потока данных на $key и $value
???
То есть, чтоб мне сделать генерацию хидденов, мне нужна примерно такая функция:
list($key,$value) = split('=',$HTTP_GET_VARS);
echo "<input type=hidden name=$key value=$value>";
Но он чего-то ругается... как нужно правильно делать?
Так... запамятовал... $HTTP_GET_VARS это же массив...
А как к нему обращаться? Пишу:
echo $HTTP_GET_VARS[1];
или
echo $HTTP_GET_VARS[1][1];
а он в ответ:
Warning: Undefined offset: 1 in g:\apache\apache\htdocs\preview.php on line 10
А ты метод GET используешь?
Тогда попробуй ключ-значение с $QUERY_STRING
Вообще хотелось бы POST`ом... но на крайний случай и GET`ом пойдет... буду пробовать...
Пасибо...
kompadre
23.11.2001, 02:12
Млин... Чо вы все постом да постом :)
ГЕТ РУЛЕЗ!!!
kompadre
23.11.2001, 02:24
Хотя мона ;)
foreach (array_keys($HTTP_POST_VARS) as $key) {
$res .= "$key : ".$HTTP_POST_VARS["$key"];
}
вообще то правильней сделать с hidden, т.к.
1) точно ни где ни чего не закэшируется и пользователь не получит форму заполненую позовчера
2) Query будет чистенькая и оккуратненькая, и потенциальный ламер ни чего не напутает.
3) сгенирить 40 hidden не должно быть проблемой.
session_register("array");
$array[1]=value;
.....
$array[40]=value40;
DeepDiver
24.11.2001, 00:17
Вариант 1 (больше нагрузка на модем юзверя).
После ввода данных формы, выводится документ с двумя слоями. На первом (видимом по умолчанию, второй не виден), висит твоя проформа с кнопочками (Edit и Print). По нажатию Edit первый слой становится невидимым, а второй показывается. На нем лежит форма редактирования данных, в которой все и редактируется. При нажатии Ок вся байда перегружается. И все!
Вариант 2 (большенагрузка на мозги программера и диск сервера).
Сохранять введенные данные на диск в виде текстового файла (как .ini файлы в виндузах), или пихать в специяльную таблу в базе данных. А при запросе на редактирование вытаскивать их оттуда.
Минус куков - куки не у всех включены... Но это, конечно, их проблемы. =)
С хидденами в принципе тоже неплохо.
Спасибо всем кто помог советом и не прошел мимо... ;)
Разложив по полочкам все советы пришел к такому выводу:
Сделаю пока времменый вариант с хидденами, а потом буду делать с использованием MySQL.
Хранить в файле тоже удобно, НО, если кто-то в это время еще заполняет форму, то есть шансы считать не те данные... Можно конечно генерировать новые файлы, но тогда их придется периодические подчищать руками.... тоже не очень хорошо....
Еще раз всем огромный сенькс!
DeepDiver
25.11.2001, 19:24
при работу с мускулом встанет та же проблема чистки. Но ты же не будешь это делать ручками? Ты сделаешь скриптик, который при добавлении новой формы прежде всего чистит таблы. Так можно же и файлики почистить, разглядывая их время создания... А мускул не везде стоит...
Хм... а зачем мне таблицу чистить? Пусть себе новые данные записывает... потом буду статистику вести, кто куда что отправлял... :)
ЗЫ: На том сервере, где будет находится форма, стоит мускуль...
ЗЫЗЫ: В догонку вопрос про мускуль... Я его только начал осваивать, поэтому естессно вопросов много... ;)
Каждая строка в таблице будет иметь кучу полей (около 60) для записи из формы. Первое поле - будет id, который будет ставиться автоматом при новой записи. Собственно вопрос: можно ли при добавлении записи узнать какой номер id ей присвоился?
И еще...
Собственно возвращаясь к сути вопроса.
Заполняя разные формы в инете, не раз сталкивался, что при заполнении формы и нажатии кнопки ОК , скрипт ругался что не все поля заполнены и просил вернуться назад... при нажатии на кнопку назад (не на самой странице, а в браузере), я возвращялся в форму где данные которые я вводил остались на месте...
А в моей форме, если я нажму кнопку назад, то увижу чистую форму без заполненных полей... Почему такое происходит? :confused:
DeepDiver
25.11.2001, 20:39
ответ по мускулю:
Можно, ежели у тебя id стоит как auto_increment. Есть такая функция mysql_insert_id(), она-то и выдает последний сгенерированный мускулом ИД
А насчет сохранения данных в форме по кнопке Назад - там сам апач как-то хитро должен быть настроен... А как - не помню..
ОКей, пасиб....
Эксперементы продолжаются... ;) :)
Так... чего-то опять торможу... :rolleyes:
Вот допустим сделал я страницу с предпросмотром с двуми кнопками внизу: "редактировать" и "печатать"
все данные сгенерировалисль в хидденах.
Как мне передать эти хиддены в тот или иной файл (скрипт).
Форма то у меня одна. Поэтому если я делаю SUBMIT формы, то он у меня делает отправку в один файл. А как в другой сделать????
Че-то запутался... :confused:
DeepDiver
27.11.2001, 13:37
Чегооооо?????
Ну ты блин даешь!!! Ты не только себя умудряешься запутать, но и других, причем окончательно! =)
Давай конкретно и подробно, чего у тебя опять, блин, не ладится...
Смешались в кучу, кони .. люди ... :D
Попробую навести порядок в голове. Итак:
Пытаюсь сделать вариант с хидденами.
Есть три страницы:
1. Форма для заполнения
2. Страница предпросмотра
3. Страница для печати
Так вот, после того как форма (1) заполнена, открывается вторая страница с кнопками "Редактировать форму" и "Печатать форму". То есть при нажатии на первую кнопку он отправляет на страницу 1 и соответственно на страницу 3 если была нажата вторая кнопка.
Чтоб отправить хиддены на 1 или 3 страницу, мне нужно сделать САБМИТ формы.
Блин... опять путаница начинается... :mad:
ОК. Вопрос в лоб! Как мне передать хиддены на страницу 1 или 3??? В зависимости он нажатой кнопки.
function goto1() {
document.yourFormName.action='yourscript1.php';
document.yourFormName.submit();
}
function goto3 () {
document.yourFormName.action='yourscript3.php';
document.yourFormName.submit();
}
<input class="button" type="button" value="на первую" onClick="goto1();">
<input class="button" type="button" value="на третью" onClick="goto2();">
и так, хоть сто кнопок...
одну из них можешь сразу на submit посадить :)
2 log: Спасибо! ;)
Оказывается как все просто было... :rolleyes:
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.