Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FabianoSS

Limpar formulário após enviar dados

Recommended Posts

Olá pessoal, não entendo de PHP, por isso peço ajuda de vocês. Para quem manja, creio que minha dúvida é bem fácil.

Tenho uma página html com um formulário de contato que envia um email para o webmaster usando PHP. Após enviar os dados, ao clicar no botão voltar do browser, o formulário continua preenchido. Gostaria que ao clicar no botão enviar, os dados sejam enviados e o formulário seja limpo automaticamente. Já procurei na net e a solução mais indicada é usar a seguinte instrução: document.nomedomeuformulario.reset();

O problema é que não sei onde colocar esta instrução. Alguém pode me ajudar? Segue o código php abaixo:

 

 

<?

$mensagem = "Nome: ".$_POST['nome']." \n";

$mensagem .= "Email: ".$_POST['email']." \n";

$mensagem .= "Assunto: ".$_POST['assunto']." \n";

$mensagem .= "Telefone: ".$_POST['fone']." \n";

$mensagem .= "Mensagem: ". $_POST['mensagem'];

$headers = "";

$emailsender = "xxxx@xxx.com.br";

$emaildestinatario = "xxxx@xxx.com.br";

$assunto = "Mensagem do site www.xxx.com.br";

 

if(!mail($emaildestinatario, $assunto, $mensagem, $headers ,"-r".$emailsender))

{

// Se for Postfix

$headers .= "Return-Path: " . $emailsender . $quebra_linha;

}

echo "Seu e-mail foi enviado com sucesso. Obrigado";

 

?>

 

 

Obs: o script é bem simples e não tem validação de dados, etc. Como não sou programador, pra mim já está bom. Senão vou ficar um tempão quebrando a cabeça. Aproveitando a dúvida, gostaria de saber como faço para pôr um link para a página inicial do site quando der a mensagem "Seu e-mail foi enviado com sucesso".

 

Agradeço a ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra sugestão:

 

HTML:

<form name="meuFormulario" method="post" action="">
 <input type="text" name="exemplo" />
 <button type="submit">Enviar</button>
</form>

 

PHP+Javascript -- Para ser colocado dentro do 'if' que verifica se os dados do formulário foram enviados

 echo "<script type="text/javascript">document.meuFormulario.reset();</script>"

Compartilhar este post


Link para o post
Compartilhar em outros sites

abaixo disso:

echo "Seu e-mail foi enviado com sucesso. Obrigado";

 

coloque isso:

 

echo '
   <script type="text/JavaScript">
document.location.reload();
   </script>';

 

 

Obrigado pela ajuda Andre, tentei desta forma, mas após clicar no botão enviar, aparecia a seguinte mensagem no navegador:

 

Para exibir esta página, o Firefox precisa enviar informações que repetirão qualquer ação efetuada anteriormente (como uma pesquisa ou confirmação de compra).

reenviar - cancelar

 

Clicando no botão reenviar ou cancelar, os dados são enviados, mas ao voltar os dados do formulário ainda estão lá.

 

Outra sugestão:

 

HTML:

<form name="meuFormulario" method="post" action="">
 <input type="text" name="exemplo" />
 <button type="submit">Enviar</button>
</form>

 

PHP+Javascript -- Para ser colocado dentro do 'if' que verifica se os dados do formulário foram enviados

 echo "<script type="text/javascript">document.meuFormulario.reset();</script>"

 

 

Mangakah, desculpe a ignorância, mas dentro do 'if' que dizer onde exatamente? Coloquei entre os parênteses e deu erro, entre as chaves também deu erro.

 

if(!mail($emaildestinatario, $assunto, $mensagem, $headers ,"-r".$emailsender))

{

// Se for Postfix

$headers .= "Return-Path: " . $emailsender . $quebra_linha;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deve ser porque faltou um ponto e vírgula (';') no final...

 

echo "<script type="text/javascript">document.meuFormulario.reset();</script>";

 

Sorry.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então faça:

 

Retire o seu echo "Seu e-mail foi enviado com sucesso. Obrigado";

 

e coloque isto aqui

 

echo '
   <script type="text/JavaScript">
alert("Seu e-mail foi enviado com sucesso. Obrigado");
location.href="INFORME AQUI A PÁGINA QUE SERA REDIRECIONADA exp: contato.html"
   </script>
   ';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então faça:

 

Retire o seu echo "Seu e-mail foi enviado com sucesso. Obrigado";

 

e coloque isto aqui

 

echo '
   <script type="text/JavaScript">
alert("Seu e-mail foi enviado com sucesso. Obrigado");
location.href="INFORME AQUI A PÁGINA QUE SERA REDIRECIONADA exp: contato.html"
   </script>
   ';

 

 

 

Andre Cristhian, muito obrigado. Agora ficou perfeito com este último script que você mandou. Para ajudar futuros despesperados como eu, segue o código inteiro como ficou do meu arquivo enviar.php:

 

<?

$mensagem = "Nome: ".$_POST['nome']." \n";

$mensagem .= "Email: ".$_POST['email']." \n";

$mensagem .= "Assunto: ".$_POST['assunto']." \n";

$mensagem .= "Telefone: ".$_POST['fone']." \n";

$mensagem .= "Mensagem: ". $_POST['mensagem'];

$headers = "";

$emailsender = "xxxx@xxx.com.br";

$emaildestinatario = "xxxx@xxx.com.br";

$assunto = "Mensagem do site www.xxx.com.br";

 

if(!mail($emaildestinatario, $assunto, $mensagem, $headers ,"-r".$emailsender))

{

// Se for Postfix

$headers .= "Return-Path: " . $emailsender . $quebra_linha;

}

echo '

<script type="text/JavaScript">

alert("Seu e-mail foi enviado com sucesso. Obrigado");

location.href="contato.htm"

</script>

';

?>

 

 

Só para constar, alguns tutoriais que encontrei na web, dizia para adicionar um comando para limpar o formulário direto no código html, tal como este exemplo:

<input type="button" value="Enviar" onclick="NomeDoForm.submit(); NomeDoForm.reset();">

Porém, isto não funciona, uma vez que apaga os dados antes de submeter. O email chegava com os campos todos em branco.

 

Depois de passar a tarde me batendo, com a ajuda do Andre, funcionou. Embora não tenha um comando para limpar o formulário, quando clica no botão ok da mensagem, a página contato.htm é recarregada e o formulário também vem limpo.

 

Deve ser porque faltou um ponto e vírgula (';') no final...

 

echo "<script type="text/javascript">document.meuFormulario.reset();</script>";

 

Sorry.

 

 

Mangakah, obrigado pela ajuda também. Como já resolvi o problema de outra forma, vou deixar assim mesmo. Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Deve ser porque faltou um ponto e vírgula (';') no final...

 

echo "<script type="text/javascript">document.meuFormulario.reset();</script>";

Sorry.

apesar de estar faltando ponto e vírgula,(";") as aspas que abre e fecha o "echo" tem que ser simples dessa forma: echo '<script type="text/javascript">document.meuFormulario.reset();</script>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.