[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Alert + возврат назад после отправки формы
strob
Приветствую!

Возможно, похожая тема уже есть, тогда извиняюсь.
Но я нашёл ЛИБО как вернуться назад, ЛИБО как вывести Alert.
Только одновременно обе вещи у меня НЕ работают. потому и создал тему.

Ситуация
у меня есть 2 файла.
HTML форма для отправки письма (поля для ввода)
PHP код обработки формы (отправка письма)

Нужно
после отправки формы надо вернуться назад и вывести окошко с кнопкой ОК, на котором будет написано "письмо отправлено".

То, что нашёл я
вот такой вариант:
echo("<script type='text/javascript'>");
echo("history.go(-1);");
echo("alert('Сообщение отправлено!');</script>");


в принципе, он работает.
во-первых: но этот JS, который встроен в PHP. разумно ли это?
во-вторых: насколько рациональная функция history.go(-1) ?
strob
какой хороший форум, ахаха)))
alexbel2404
На странице-обработчике делай редирект на страницу с формой через
header("Location: http://site.com/forma.php")

Подставляя в параметры урла флаг, допустим sent=1
Т.е. выглядеть будет так:
header("Location: http://site.com/forma.php?sent=1")

На странице с формой проверяй наличие $_GET['sent'] и выводи:
echo "<script type='text/javascript'>Сообщение отправлено!</script>";
sergeiss
Цитата (strob @ 21.04.2013 - 22:42)
какой хороший форум, ахаха)))

И что именно тебе не нравится?



_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
strob
alexbel2404, благодарю!
сделал, работает.

я таким образом сделал возврат при успешной отправке.
теперь другая проблема - при ошибке.

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

возможно как-то сохранить записи в полях?
причём, даже если делать history.go(-1), то в IE поля всё равно очищаются.
но в Хроме и ФаирФокс - остаются.

Может быть, здесь тоже есть какой-то разумное решение, как и использование header + флаг?

заранее спасибо!
alexbel2404
Либо делай и форму и обработчик в одном файле, либо на странице обработчика, при ложном результате, строй форму, в которую подставляй переданные значения и передавай обратно на страницу формы данные методом post. А там выводи их уже в атрибут value у input.
strob
помогите, такая проблема вылезла.
я соединил 2 файла в один. теперь и форма, и код-обработчик в файле contact.php

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

вопрос
как сделать так, чтобы код-обработчик выполнялся только после нажатия кнопки отправки?
alexbel2404
if($_POST){
//тут код
}
sergeiss
alexbel2404 - ответ неправильный!!!
if( isset( $_POST[...] ) )
{
// тут код
}

где вместо многоточия указываем имя какого-нибудь элемента формы. Обычно берут тот, у которого тип submit.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
strob
у меня отправка формы делается по текстовой ссылке:

<a href="#" onclick="document.f_sms.submit(); return false;">Отправить</a>


я правильно понял, что мне надо
во-первых: добавить имя кнопке:

<a href="#" name="knopka" onclick="document.f_sms.submit(); return false;">Отправить</a>


и тогда условие будет такое:

if( isset( $_POST[name="knopka"] ) )
{
// тут код
}


или как правильно?
cooperdon78
alexbel2404 спасибо, помогло!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.