Ir para conteúdo

POWERED BY:

Arquivado

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

Cisivalf

Apresentar mensagem após envio de form e função header

Recommended Posts

Olá pessoal!

Bom o que pretendia era o seguinte.

 

Numa página existe um formulário, que envia para a mesma página, ou seja, o action do form é a página em que o form está, isto porque existe uma condição nessa página que só é executada quando o form é enviado. Isto porque essa condição apenas faz alterações na base de dados.

 

Mas eu pretendia que ao enviar o form, a página fosse actualizada, caso contrário, se o ustilizador actualizar por ele, irá aparecer a mensagem do browser, se pretende reenviar o formulário.

Mas o problema é que eu pretendo também que apareça uma mensgaem para o utilizador, sempre que envia o formulário. Neste momento tenho assim:

 

if (...) {
// instrução mysql

// header(location: page.php)

// mensagem informação
}

Mas neste caso, ao fazer o header, já não executa a mensagem, pois já não irá ler o "if".

 

Se trocar a ordem, primeiro a mensagem depois o header, a mensagem não chega a aparecer, pois o header executa de imediato.

 

Como posso fazer isso, após enviar formulário, aceder à página limpa de informação (sem rasto de formulário) e ainda apresentar uma mensagem (ex: form enviado)?

 

Obrigado pela vossa atenção, e peço desculpa pelo exagero no texto!

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz assim

 

<?php
$msg = ""; // mensagem que sera exibida...
if ($_SERVER['REQUEST_METHOD'] == "POST"){
 //excuta consulta sql
$msg = "mensagem de informacao";
}
?>
<!-- aqui vem o form -->
<form><?=$msg?></form>

 

ele ira exibir a mensagem, mas ela só tera valor quando o form for submetido, deu pra entender?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu pensei nessa situação, Carlos, mas não fica agradável, pois o usuário ver uma página a actualizar sozinha, passado alguns segundos, para este caso não fica muito agradável... não que a proposta não seja, boa, pois eu a utilizava anteriormente.

 

Em relação à sua proposta, Nielson, o problema, é que eu pretendia que a página fosse limpa. Vou explicar melhor!

 

Imaginem uma página de registo, após preencher o formulário, o user é reencaminhado para uma página, e se após carregar a página fizermos actualização "tecla F5", o browser informa numa janela se pretendemos reenviar informação, informação essa que é submeter novamente o formulário.

E é precisamente isso que eu não pretendo, eu quero que a página após enviar o formulário, fique "limpa", sem o rasto da informação do formulário.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu pensei nessa situação, Carlos, mas não fica agradável, pois o usuário ver uma página a actualizar sozinha, passado alguns segundos, para este caso não fica muito agradável... não que a proposta não seja, boa, pois eu a utilizava anteriormente.

 

Em relação à sua proposta, Nielson, o problema, é que eu pretendia que a página fosse limpa. Vou explicar melhor!

 

Imaginem uma página de registo, após preencher o formulário, o user é reencaminhado para uma página, e se após carregar a página fizermos actualização "tecla F5", o browser informa numa janela se pretendemos reenviar informação, informação essa que é submeter novamente o formulário.

E é precisamente isso que eu não pretendo, eu quero que a página após enviar o formulário, fique "limpa", sem o rasto da informação do formulário.

 

Obrigado!

 

Entao cara, imagina... o usuario vai submeter o formulario quando ele fizer isso vai entrar dentro do if{} e vai executar os comandos, nao vai ser preciso dar um refresh (F5), o formulario da pagina vai vir limpo novamente porque sera uma nova requição, e a variavel $msg vai vir preenchida! você chegou a testar o codigo que eu passei?

 

Veja esse exemplo e faça um teste:

<?php
$msg = "";
// quando o form for enviado ele voltará a ficar em branco e a msg ira aparecer na tela
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$msg = "Registro salvo com sucesso!";
// Exemplo: aqui vai aparecer as informações enviadas
// voce ira usa-las para executar comandos SQL
echo "<pre>";
var_dump($_POST);
echo "</pre>";
}
?>
<?=$msg?>
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
 Nome:
 <input type="text" name="nome" />
 <br />
 Email:
 <input type="text" name="email"/><br/>
 <input type="submit" value="Enviar"/>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, testei!

 

Que bom que o código dá para testar, assim, já consigo explicar concretamente o que me refiro... experimente ao testar esse código que colocou, após enviar o formulário, actualize a página!

 

Verá que irá aparecer uma notificação, para confirmar ou não o reenvio do formulário!

 

Era isso que eu queria, que já não aparecesse essa janela!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, testei!

 

Que bom que o código dá para testar, assim, já consigo explicar concretamente o que me refiro... experimente ao testar esse código que colocou, após enviar o formulário, actualize a página!

 

Verá que irá aparecer uma notificação, para confirmar ou não o reenvio do formulário!

 

Era isso que eu queria, que já não aparecesse essa janela!

 

cara entao a unica solução é tu utilizar AJAX pra salvar os dados, e quando forem salvos atulizar uma div pra exibir a msg. sabe como utilizar AJAX?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tbm pode fazer todo o tratamento dos dados na pagina do form, e salvar oque quiser na sessão ai na outra pagina você exibe os dados e apaga a sessão.

Meio na gambs, mas resolve a parte de não aparecer a msg de reenviar quando der F5...

;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara da uma olhada nesse link aqui

 

http://codigofonte.uol.com.br/codigo/js-dhtml/formulario/enviar-formulario-com-ajax-usando-php

 

pode ter uma solução, se tiver duvida posta ae!

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.