Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

DDB

Quando faço refresh da pagian volta a inserir mas campo na BD

Mensagens Recomendadas

DDB

:wallbash:

Boa tarde  pessoal  sou  mto  novo em php....agradeceria a vossa  ajuda .....

  tou  com  um problema na em relação  aos  formulario e inserção da BD ,  é o seguinte :

tenho um  formulario  para  que  o utilizador introduza os dados e e um botão  para  enviar ..para  inserir  na bd ...isso  esta  funcionar  perfeitamente, eu estou usando o POST, ..o problema  surgi  quando eu  faço...estou a pagina que  rebe  os  dados  via  post ,... mesmo depois de inserir a BD, basta  fazer o refresh da pagina  ele  volta  inseriri  de novo  os  dados ...queria  sabercmo  é que  posso  validar  para ele  poder  inseiri  apenas  uma vez ......tenho  o  codigo abaixo ....

Esta é a pagina do index , que gera o  formulario .....

--------------------------------------------------------------------------------------------------------------------------

 <form name="cria_inquerito" action="gerar_formulario_inquerito.php" method="POST">

   Nome do inquerito:<input type="text" name="nome_inquerito" value="" size="50" /><br/>
   Pergunta:<input type="text" name="perguntas" value="" size="50"/><br/><br/>
   Numero de Opções:<input type="text" name="numero_opcoes" value="" size="15"/><br/><br/>
   <input type="submit" value="Criar inquérito" />
             <input type="reset" value="Apagar" />
     
    </form>

-----------------------------------------------------------------------------------------------------------------------------------

Eta é a pagina que  insere  na bd

<?php

  include 'Coneccao_BD/connect.php';
//Faz a validação para ver se forma introduzidos dados no formulario
  if (!empty($_POST) AND (empty($_POST['nome_inquerito']) )) {
  header("Location:Criar_Inquerito.php");
         exit;
  }
  
   $Nome= $_POST['nome_inquerito'];
   
   $sql_inquerito = "INSERT INTO inquerito (ID_INQUERITO,ID_STATUS,DATA,NOME) VALUES ('','1','2010-04-08','$Nome')";
         
   $sql_inquerito= mysql_query($sql_inquerito)or die ("Houve erro na gravação do inqerito.");                             

            echo "gravado com sucesso";
?>

agradeço a vossa ajuda .....abraço.

:wallbash:

APARTE: Usa o Geshi, torna o post mais apresentável. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NaDa

<?php

  include 'Coneccao_BD/connect.php';
//Faz a validação para ver se forma introduzidos dados no formulario
  if (!empty($_POST) AND (empty($_POST['nome_inquerito']) )) {
  header("Location:Criar_Inquerito.php");
  exit;
  }else{

$Nome= $_POST['nome_inquerito'];
$sql_inquerito = "INSERT INTO inquerito (ID_INQUERITO,ID_STATUS,DATA,NOME) VALUES ('','1','2010-04-08','$Nome')";   
$sql_inquerito= mysql_query($sql_inquerito)or die ("Houve erro na gravação do inqerito.");
  	echo "gravado com sucesso";
  }
?>

So faltando o else, se nao mesmo que nao tivesse nada, ele inseria na base de dados :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Só um pequeno aparte. Vê-se muitas pessoas atribuírem a variáveis o valor de uma variável $_POST. Isto em scripts pequenos pode nem fazer muita diferença, mas em scripts maiores pode tornar a página mais lenta, para além de se ter de programar uma linha de código a mais, desnecessariamente. A variável $_POST é uma variável normal, por isso usem-na. :)

EDIT: Mas nesse script, se a pessoa fizer refresh, o browser evia de novo as "variáveis $_POST", por isso, ele insere na mesma outra vez. A solução é no fim de inserir, redireccionar também para outra página. Assim fica "mais seguro".


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mmartinho

<?php

  include 'Coneccao_BD/connect.php';
//Faz a validação para ver se forma introduzidos dados no formulario
  if (!isset($_POST) AND (empty($_POST['nome_inquerito']) )) {
  header("Location:Criar_Inquerito.php");
  }else{

        $Nome= $_POST['nome_inquerito'];
        $sql_inquerito = "INSERT INTO inquerito (ID_INQUERITO,ID_STATUS,DATA,NOME) VALUES ('','1','2010-04-08','$Nome')";  
        $sql_inquerito= mysql_query($sql_inquerito)or die ("Houve erro na gravação do inqerito.");
        echo "gravado com sucesso";
        
        unset($_POST);
  }

?>

Experimenta assim e diz alguma coisa..

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.