Ir para conteúdo

Arquivado

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

BrunoJavan

Como NÃO redirecionar página após envio de formulário PHP?

Recommended Posts

Boa tarde, estou com um formulário de cadastro de e-mails, bem simples com somente um campo.

 

O problema é que ele fica no footer do site, portanto, quando o usuário cadastrar o e-mail eu quero que somente uma mensagem seja exibida (uma div por exemplo já resolve). Mas a questão é: Como eu faço pro formulário não redirecionar? Pra ele somente exibir essa div com a mensagem de sucesso?

 

Segue o código abaixo:

 

HTML

<form name="f1" action="newsletter.php" method="POST">
  <input required="required" name="email" type="text" placeholder="Digite seu e-mail...">
  <button type="submit"><i class="fa fa-check"></i> Cadastrar</button>
</form>

PHP

<?php

$conexao = mysql_connect ("host", "user", "pass");
mysql_select_db ("db_name");

$email = $_POST["email"];

$query = "INSERT INTO cadastro (email) VALUES ('".$email."')";

$inserir = mysql_query($query);

if ($inserir) {
echo "E-mail cadastrado com sucesso!";
} else {
echo "Ocorreu um erro.";
echo "Dados sobre o erro:" . mysql_error();
}

?>

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar ajax para disparar este formulário.

 

Movendo para a área correta, JS.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra opção para não ter que usar o ajax, e colocar o script php dentro do arquivo em

que esta o formulário e na action chamar ele mesmo. Não vai deixar de redirecionar,

porém vai redirecionar pro próprio arquivo em que você estava... E então passava um

parâmetro, assim você saberia se a pagina foi acessada após o envio do formulário

<form name="f1" action="?param=emailEnviado" method="POST"> [...] </form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajax é a solução, até mesmo para poupar banda. É algo assim:

$.ajax({
type: 'post', // ou get
url: 'pagina.php', // página contendo todo o script PHP de validação de envio de formulário
data: {
    NAME_1: $('input[name="NAME_1"]').val(), // envia o valor de <input name=NAME_1...
    NAME_2: $('input[name="NAME_2"]').val() // envia o valor de <input name=NAME_2...
},
success: function(result) {
    alert(result); // pega a mensagem da página PHP e tráz em forma de mensagem do navegador
}

})

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Ajax é a solução, até mesmo para poupar banda.

 

 

Se for pra poupar.. seria indicado não usar jQuery?

 

var data = 'param1=value1&param2=value2';
var request = new XMLHttpRequest();
request.open('POST', 'pagina.php', true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded charset=UTF-8');
request.onload = function () {
    if (request.status >= 200 && request.status < 400) {
        alert(request.responseText);
    }
};
request.send(data);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Outra opção para não ter que usar o ajax, e colocar o script php dentro do arquivo em

que esta o formulário e na action chamar ele mesmo. Não vai deixar de redirecionar,

porém vai redirecionar pro próprio arquivo em que você estava... E então passava um

parâmetro, assim você saberia se a pagina foi acessada após o envio do formulário

<form name="f1" action="?param=emailEnviado" method="POST"> [...] </form>

RESOLVIDO! VALEU!

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.