FabianoSS 0 Denunciar post Postado Julho 17, 2012 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
Andre Cristhian 3 Denunciar post Postado Julho 17, 2012 abaixo disso: echo "Seu e-mail foi enviado com sucesso. Obrigado"; coloque isso: echo ' <script type="text/JavaScript"> document.location.reload(); </script>'; Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Julho 17, 2012 Dê uma olhada nesse link vai lhe ajudar http://lmgtfy.com/?q=limpar+formulario Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Julho 17, 2012 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
FabianoSS 0 Denunciar post Postado Julho 17, 2012 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
mangakah 217 Denunciar post Postado Julho 17, 2012 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
Andre Cristhian 3 Denunciar post Postado Julho 17, 2012 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
FabianoSS 0 Denunciar post Postado Julho 17, 2012 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
joaopaulojp 0 Denunciar post Postado Maio 21, 2013 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