Ir ao conteúdo
  • Cadastre-se
Tiago Paza

Banco de dados buscando os dados antes de envia-lo

Recommended Posts

Eai galera do Clube do Hardware estou com um problema com um formulário de pedidos que estou desenvolvendo, meu banco está acessando os dados antes de envia-los, como eu poderia resolver?

irei deixar o cód abaixo:

<fieldset><legend class="legenda">Envie seu pedido abaixo<br/></legend><br/><div class="formulario"> <form method="post"> <label id="nome">Nome:	  <input name="nome" type="text" class="nome" size="80"  namaxlength="80" />    </label><br/><br/>	<label id="email">E-mail:	  <input name="email" type="email" class="email" size="80" maxlength="80" />	</label><br/><br/>    <label for="subject" class="assunto">Assunto:</label>	<select name="assunto" id="txtsubject">		<option disabled="disabled" selected="selected"> -- Selecione o assunto do pedido </option>      		<option value="Pedido Músical"> -- Música</option>      		<option value="Duvidas"> -- Dúvida</option>      		<option value="Parcerias"> -- Parceria</option>      		<option value="Problemas"> -- Problema</option>      		<option value="Publicidades"> -- Publicidade</option>      		<option value="Critícas"> -- Crítica</option>      		<option value="Sugestoes"> -- Sugestõe</option>   	</select>            <label for="message">	<br/><br/>    <span class="mensagem">Mensagem:</span> </label>    <textarea name="mensagem" cols="80" rows="10" class="mensagem"></textarea>	<br/><br/>	<input type="reset" name="clear" class="limpar" value="Limpar campos">    </label>    <input type="submit"  class="enviar" value="Enviar"/>	</label>	<br/></div></form></fieldset><?phpinclude "configuracao.php";$nome = $_POST["nome"];$email = $_POST["email"];$assunto = $_POST["assunto"];$mensagem =  $_POST["mensagem"];// aqui verificamos os campos obrigatoriosif (empty($nome)){echo"<script>    alert('Preencha com o seu nome');    history.go(-1);</script>";exit;}  if (empty($email)){echo"<script>    alert('Preencha com o seu e-mail.');    history.go(-1);</script>";exit;} if (empty($mensagem)){echo"<script>    alert('Preencha com a mensagem. ');    history.go(-1);</script>";exit;}?><?php			$insere = "INSERT INTO pedidos (id_pedido, nome, email, assunto, mensagem) VALUES('', '$nome','$email','$assunto','$mensagem')";		$sql = mysql_query($insere);	if (!mysql_error()) { 		echo "O seu pedido foi recebido com sucesso. Aguarde um administrador e/ou locutor para atende-lo."; 	}	else { 		echo "Erro ao inserir os dados..." . mysql_error();	}?></body></html>

Desde já, grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Tiago Paza

 

Qual é o erro? 

 

Sugiro fazer o seu php em outro arquivo. as vezes na mesma página da erro.

Outra coisa,  por que você abre e fecha o php duas vezes?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@dif

Então cara, no que eu acesso esse formulário de pedidos eu recebo o alert Preencha com o seu nome antes de eu clicar em enviar entende? Ele está requisitando os dados antes de clicar no botão...

E isso que não compreendo como corrigir...​
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Tiago Paza

 

Então,  isso pode estar acontecendo por que estas fazendo tudo na mesma página o php entende que se o campo está vazio, ele entra na verificação.

 

Tente fazer como eu sugeri:

 

formuilário.html

<fieldset><legend class="legenda">Envie seu pedido abaixo<br/></legend><br/><div class="formulario"> <form method="post" action="recebeDados.php"> <label id="nome">Nome:	  <input name="nome" type="text" class="nome" size="80"  namaxlength="80" />    </label><br/><br/>	<label id="email">E-mail:	  <input name="email" type="email" class="email" size="80" maxlength="80" />	</label><br/><br/>    <label for="subject" class="assunto">Assunto:</label>	<select name="assunto" id="txtsubject">		<option disabled="disabled" selected="selected"> -- Selecione o assunto do pedido </option>      		<option value="Pedido Músical"> -- Música</option>      		<option value="Duvidas"> -- Dúvida</option>      		<option value="Parcerias"> -- Parceria</option>      		<option value="Problemas"> -- Problema</option>      		<option value="Publicidades"> -- Publicidade</option>      		<option value="Critícas"> -- Crítica</option>      		<option value="Sugestoes"> -- Sugestõe</option>   	</select>            <label for="message">	<br/><br/>    <span class="mensagem">Mensagem:</span> </label>    <textarea name="mensagem" cols="80" rows="10" class="mensagem"></textarea>	<br/><br/>	<input type="reset" name="clear" class="limpar" value="Limpar campos">    </label>    <input type="submit"  class="enviar" value="Enviar"/>	</label>	<br/></div></form></fieldset>

Veja que acrescentei no form o action="recebeDados.php"

 

Agora você cria um arquivo chamado recebeDados.php e coloca:

<?phpinclude "configuração.php";$nome = $_POST["nome"];$email = $_POST["email"];$assunto = $_POST["assunto"];$mensagem =  $_POST["mensagem"];// aqui verificamos os campos obrigatoriosif (empty($nome)){echo"<script>    alert('Preencha com o seu nome');    history.go(-1);</script>";exit;}  if (empty($email)){echo"<script>    alert('Preencha com o seu e-mail.');    history.go(-1);</script>";exit;} if (empty($mensagem)){echo"<script>    alert('Preencha com a mensagem. ');    history.go(-1);</script>";exit;}			$insere = "INSERT INTO pedidos (id_pedido, nome, email, assunto, mensagem) VALUES('', '$nome','$email','$assunto','$mensagem')";		$sql = mysql_query($insere);	if (!mysql_error()) { 		echo "O seu pedido foi recebido com sucesso. Aguarde um administrador e/ou locutor para atende-lo."; 	}	else { 		echo "Erro ao inserir os dados..." . mysql_error();	}?>

Assim o problema será corrigido. Lembre-se que podes usar a função isset()  para verificar se a variável tem valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@dif obrigado pela dica ! Realmente resolveu meu problema adapter o código com o isset() e o RecebeDados.php ficou assim:

<?phpinclude "configuracao.php";if (isset($_POST['nome'])) {	$nome = $_POST['nome']; 	}	else { $nome = "Você deve preencher com o seu endereço de nome.";}	if (isset($_POST['email'])) {	$email = $_POST['email']; 	}	else { $email = "Você deve preencher com o seu endereço de e-mail.";}if (isset($_POST['mensagem'])) {	$mensagem = $_POST['mensagem']; 	}	else { $mensagem = "Você deve preencher com a mensagem do seu pedido.";}	$insere = "INSERT INTO deabo_pedidos (id_pedido, nome, email, assunto, mensagem) VALUES('', '$nome','$email','$assunto','$mensagem')";$sql = mysql_query($insere);		if (!mysql_error()) { 		echo "O seu pedido foi recebido com sucesso. Aguarde um administrador e/ou locutor para atende-lo."; 	}	else { 		echo "Erro ao inserir os dados..." . mysql_error();	}?>

Só que o problema é que ele não está validando como um campo obrigatório, o que eu precisaria aplicar para validar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Tiago Paza

 

Nesse caso é só usar o atributo required  do HTML 5 no campo que você quer se seja obrigatório

 

exemplo: http://jsfiddle.net/81bzqn49/

 

Tente submeter o formulário sem escrever nada no exemplo acima

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×