[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Форма отправки сообщения
Станислав
Добрый вечер.

У меня html файл "mail.html" и файл обработчик "mail.php".
В Html вставил код обычной, самой простой формы отправки сообщения, которая обращается к файлу mail.php. Работает почти отлично. sad.gif

Вопрос.
Когда я нажимаю на кнопку Submit моей формы, окрывается новая вкладка, где и обрабатывается mail.php (для меня это не приемлемо)

В "mail.php" пробовал подключить функцию include('mail.html'). Вроде бы все происходит в одном и том же окне, но сама html страничка, при нажатии на кнопку submit постоянно обновляется. То есть если все файлы сайта, залить на сервер, то при каждом нажатии на кнопку субмит, вся страничка будет каждый раз обновляться. С учетом скорости интернета, это будет не очень приятный процесс. Необходимо, чтобы страница стояла неподвижно, а PHP операции обрабатывались на ней без всяких проблем.



Если php код вставить в html, то что нужно написать в поле "action", чтобы форма обращалась именно к этому php коду? Пример:

<html><head>
<?php
function
go_1() {
.......
.......

}
?>
</head>
<body>

<form
method="post" action="что сюда вставить, чтобы форма обратилась именно к функции go_1()?">
<.....>
<.....>
</form>

</body>
</html>



Ребят, помогите советом. Нужно просто сделать так чтобы при нажатии на кнопку субмит все происходило в одном и том же окне, и без перезагрузки самой странички, как это происходит если в файде mail.php прописать функцию include('mail.html');



Спустя 5 часов, 37 минут, 46 секунд (19.08.2010 - 07:48) amazing написал(а):
Без перехода на другую страницу, тогда на JS делать...

Можно так...


if (isset($_POST['submit']))
{
go_1();
}


А в action="mail.php"

То есть вызываешь функцию только когда нажата кнопка.

Спустя 3 часа, 14 минут, 38 секунд (19.08.2010 - 11:02) Станислав написал(а):
Спасибо большое. smile.gif Сейчас попробую..

Спустя 13 часов, 12 минут, 54 секунды (20.08.2010 - 00:15) Станислав написал(а):
Чтож. совет хороший, но к сожалению все работает по аналогичной схеме. Страница все равно обновляется.


К примеру.
На сайте Vkontakte.ru при отправке сообщения, выходит диалоговое окно, в котором и пишешь свой текст. И когда это окношко выходит посередине, сама страница не обновляется. Страница стоит неподвижно. После того как в окошке жмем кнопку "Отправить" по середине выходит другое окно, с результатом отправки. И страница в этот момент, до сих пор стоит неподвижно и не перезагружается.

А в моем случае, все работает, но страница перезагружается.sad.gif

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



Спустя 22 минуты, 21 секунда (20.08.2010 - 00:37) Станислав написал(а):
О боже. Все гениально как всегда - Просто!! smile.gif

Найдено решение.smile.gif
<html><head>
<?php
function
go_1() {
...
...

}
?>
</head>
<
body>
<
form>
<
input type="text">
...
...
...
<
input type"submit" value="Отправить" OnClick="Go_1()">
</
form>
</
body>
</
html>



Работает отлично. Из формы убрал метод Пост и Актион. А кнопке субмит присвоил событие OnCLick(). Все происходит в том же окне и страничка стоит неподвижно - не перезагружается.smile.gif

Спустя 8 часов, 59 минут, 49 секунд (20.08.2010 - 09:37) Basili4 написал(а):
Станислав
И что это работает ????

а где Go_1() ?

Спустя 6 часов, 25 минут, 16 секунд (20.08.2010 - 16:03) Станислав написал(а):
Да. Работает. Просто в примере я не стал описывать тело функции. Но главное теперь можно обойтись без дополнительных обработчиков(mail.php)..

Спустя 45 минут, 6 секунд (20.08.2010 - 16:48) Basili4 написал(а):
Станислав
а какая разница куда обработчик положить в mail.php или в страницу с формой по мне так в отдельном файле удобней разделение логики и представления MVC тобишь

Спустя 6 часов, 37 минут, 17 секунд (20.08.2010 - 23:25) Станислав написал(а):
Полностью с тобой согласен.
Все остальные скрипты я зделал отдельными. Это удобнее и практичнее.

Но когда нажимаю на кнопку субмит, страница mail.html перезагуржается.

Вот мой код:

MAIL.PHP

<?php
include("mail.html");
Error_Reporting(E_ALL & ~E_NOTICE);
ini_set("SMTP", "localhost");
ini_set("smtp_port", "25");
$maile = $_POST['email'];
function checkmail($maile) {
$mail=trim($maile);
if (strlen($mail)==0) return -1;
if (!preg_match("/^[a-z0-9_-]{1,20}+(\.){0,2}+([a-z0-9_-]){0,5}@(([a-z0-9-]+\.)+(com|net|org|mil|".
"edu|gov|arpa|info|biz|inc|name|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-".
"9]{1,3}\.[0-9]{1,3})$/is",$mail))
return -1;
return $mail;
}

$m = mail('stas07@ya.ru', 'book', '$maile\ntext_1');

if(checkmail($maile) !== -1) {

if ($m == 'true'){
go_8
}
else
{
go_9
}

}
else
{
go_10
}
?>




Код mail.html

<form method="post" action="mail.php">
<div id="tx_12">Ваш email:</div><br>
<input type="text" name ="email" id="email" size="46"><br><br>
<div id="tx_13">Текст сообщения:</div><br>
<textarea cols="35" rows="3" name="text_1" id="text_1" alt="сообщение автору"></textarea><br><br>
<input type="submit" id="submit" value="" title="Отправить">
</form>





Ну вот. Как видно из кода mail.php я подключил функцию Include('mail.html') чтобы весь процесс происходил в том же окне.
Без нее, при нажатии на кнопку субмит, открывается новая вкладка в самом браузере, где и выполняется этот mail.php

Но опять же минус. Хоть и присутствует include(), при нажатии на кнопку субмит, происходит перезагрузка страницы mail.html
То есть, пользователь наберет текст, нажмет на кнопку отправки, и тут вся страница начинает перезагружаться. А хотелось бы, чтобы страница стояла неподвижно.



Мне бы тоже хотелось добавить вот такую цитату. smile.gif

Когда накормишь убогого, считай, что себя накормил. Такого свойства это дело: данное нами к нам же вернется.

Быстрый ответ:

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