Cisivalf 0 Denunciar post Postado Dezembro 30, 2011 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
Nielson Rocha 5 Denunciar post Postado Dezembro 30, 2011 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
Kakashi_Hatake 267 Denunciar post Postado Dezembro 30, 2011 Use refresh: <?php header( sprintf( 'refresh:%u; url=%s', 5, 'teste.php' ) ); ?> <h3>Mensagem teste</h3> Compartilhar este post Link para o post Compartilhar em outros sites
Cisivalf 0 Denunciar post Postado Dezembro 31, 2011 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
Nielson Rocha 5 Denunciar post Postado Janeiro 2, 2012 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
Cisivalf 0 Denunciar post Postado Janeiro 2, 2012 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
Nielson Rocha 5 Denunciar post Postado Janeiro 3, 2012 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
Cisivalf 0 Denunciar post Postado Janeiro 4, 2012 Infelizmente, não! Mas se conseguires fazer um exemplo básico, pode ser que consiga fazer! Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Nicacio 0 Denunciar post Postado Janeiro 4, 2012 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
Nielson Rocha 5 Denunciar post Postado Janeiro 4, 2012 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