Ir para conteúdo

Arquivado

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

Alexsandra Abreu

Formulário...

Recommended Posts

Estou com um problema: Meu código conecta ao banco, existe interação do formulário com o banco, mas a unica informação gerada e o id. Os outros campos do formulário são totalmente ignorados. Fiz um teste e retirei o formulário do html e os dados foram registrados completamente. O que faço para o formulário funcionar dentro do html? Alguém pode me ajudar?

Esse é o php:

<?php if(isset($_POST['enviar'])) {
$nome = $_POST['nome'];
$empresa = $_POST['empresa'];
$cnpj = $_POST['cnpj'];
$email = $_POST['email'];
$telefone = $_POST['telefone'];
$senha = $_POST['senha'];
$confirmar = $_POST['confirmar'];
$cadastrar = mysql_query("INSERT INTO clientes (nome, empresa, cnpj, email, telefone, senha, confirmar) VALUES ('$nome', '$empresa', '$cnpj', '$email', '$telefone','$senha','$confirmar')");
$id = mysql_insert_id();
}

Esse é o formulário:

<form action=""  class="formulario" method="post" enctype="multipart/form-data">
<div class="register-top-grid">
<h3>INFORMAÇÕES PESSOAIS</h3>
<div>
<span>NOME COMPLETO<label>*</label></span>
<input type="text" name="nome"/>
</div>
<div>
<span>EMPRESA<label>*</label></span>
<input type="text" name="empresa"/>
</div>
                     <div>
<span>CNPJ<label></label></span>
<input type="text" name="cnpj"/>
</div>
<div>
<span>E-mail<label>*</label></span>
<input type="text" name="email"/>
</div><div>
<span>TELEFONE<label>*</label></span>
<input type="text" name="telefone"/>
</div>
<div class="clear"> </div>
  <a class="news-letter" href="#">
  <label class="checkbox"></label>
  </a>
</div>
    <div class="register-bottom-grid">
   <h3>INFORMAÇÃO DE LOGIN</h3>
<div>
<span>SENHA<label>*</label></span>
<input type="password" name="senha"/>
</div>
<div>
<span>CONFIRMAR SENHA<label>*</label></span>
<input type="password" name="confirmar"/>
</div>
<div class="clear"> </div>
</div>
</form>
<div class="clear"> </div>
<div class="register-but">
  <form action="" class="formulario" method="post" enctype="multipart/form-data">
  <input type="submit" name="enviar" value="Enviar"/>
  <div class="clear"> </div>
  </form>
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

salve a string da SQL em uma string e a exiba, para ver a consulta

 

 

$sql = "INSERT INTO clientes (nome, empresa, cnpj, email, telefone, senha, confirmar) VALUES ('$nome', '$empresa', '$cnpj', '$email', '$telefone','$senha','$confirmar')";
var_dump( $sql );
$cadastrar = mysql_query( $sql );

 

 

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os outros campos do formulário são totalmente ignorados

de qual formulário? percebeu que há dois?

provavelmente só estão sendo enviados os dados do 2º formulário (onde há o submit)... verifique isso..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer que o seu form e o php fiquem na mesma página seria isso:

<?php
include_once("sua_conexao");
$acao = strip_tags( $_GET['acao'] );
?>
	
<?php 
 
if ( $acao == 'enviar'){	

   $nome = $_POST['nome'];
    $empresa = $_POST['empresa'];
    $cnpj = $_POST['cnpj'];
    $email = $_POST['email'];
    $telefone = $_POST['telefone'];
    $senha = $_POST['senha'];
    $confirmar = $_POST['confirmar'];

if(empty($nome)){
		
echo "<script>alert('Por Favor ! Preencha o nome')</script>";
echo "<script language='javascript'>history.back()</script>";

}elseif(empty($empresa)){
	
echo "<script>alert('Por Favor ! Preencha o Campo Empresa')</script>";
echo "<script language='javascript'>history.back()</script>";

}elseif(empty($cnpj)){
	
echo "<script>alert('Preencha o Campo CNPJ!')</script>";
echo "<script language='javascript'>history.back()</script>";

}elseif(empty($email)){
echo "<script>alert('Preencha o Campo Email!')</script>";
echo "<script language='javascript'>history.back()</script>";


}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
echo "<script>alert('Email Inválido Tente Novamente!')</script>";
echo "<script language='javascript'>history.back()</script>";	

}elseif(empty($telefone)){

echo "<script>alert('Preencha o Campo Telefone!')</script>";
echo "<script language='javascript'>history.back()</script>";	
}elseif(empty($senha)){

echo "<script>alert('Preencha o Campo Senha!')</script>";
echo "<script language='javascript'>history.back()</script>";	
}elseif(empty($confirmar)){

echo "<script>alert('Preencha o Campo Confirmar Senha!')</script>";
echo "<script language='javascript'>history.back()</script>";	
 
}else{
 
$cadastrar = mysql_query("INSERT INTO clientes (nome, empresa, cnpj, email, telefone, senha, confirmar) VALUES ('$nome', '$empresa', '$cnpj', '$email', '$telefone','$senha','$confirmar')");
  mysql_insert_id($MySQLi);

}if(($cadastrar)==1){


	echo "<script>alert('Mensagem Enviada*')</script>";
echo "<script language='javascript'>history.back()</script>";
    
}else{
	echo "<script>alert('não foi possivel enviar a MSG *ERRO*')</script>";
echo "<script language='javascript'>history.back()</script>";
}
}
?>   
   
   
    <form action="suaindex.php?acao=enviar"  class="formulario" method="post" enctype="multipart/form-data">
    <div class="register-top-grid">
    <h3>INFORMAÇÕES PESSOAIS</h3>
    <div>
    <span>NOME COMPLETO<label>*</label></span>
    <input type="text" name="nome"/>
    </div>
    <div>
    <span>EMPRESA<label>*</label></span>
    <input type="text" name="empresa"/>
    </div>
                         <div>
    <span>CNPJ<label></label></span>
    <input type="text" name="cnpj"/>
    </div>
    <div>
    <span>E-mail<label>*</label></span>
    <input type="text" name="email"/>
    </div><div>
    <span>TELEFONE<label>*</label></span>
    <input type="text" name="telefone"/>
    </div>
    <div class="clear"> </div>
      <a class="news-letter" href="#">
      <label class="checkbox"></label>
      </a>
    </div>
        <div class="register-bottom-grid">
       <h3>INFORMAÇÃO DE LOGIN</h3>
    <div>
    <span>SENHA<label>*</label></span>
    <input type="password" name="senha"/>
    </div>
    <div>
    <span>CONFIRMAR SENHA<label>*</label></span>
    <input type="password" name="confirmar"/>
    </div>
    <div class="clear"> </div>
    </div>

    <div class="clear"> </div>
    <div class="register-but">
  
      <input type="submit" name="enviar" value="Enviar"/>
      <div class="clear"> </div>
      </form>
    

Note que inseri as validações dentro do php, evitando do usuário enviar o formulário em branco, e testei usando Mysqli e não Mysqli veja se funciona aí.

 

E como disse o Beraldo

 

salve a string da SQL em uma string e a exiba, para ver a consulta

$sql = "INSERT INTO clientes (nome, empresa, cnpj, email, telefone, senha, confirmar) VALUES ('$nome', '$empresa', '$cnpj', '$email', '$telefone','$senha','$confirmar')";
var_dump( $sql );
$cadastrar = mysql_query( $sql );

PS: funções mysql_* estão obsoletas desde o PHP 5.5. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql

Você têm que migrar essas funções para mysqli porque já estão obsoletas a partir do php 5.5

 

E detalhe sempre não use mais tags assim <?=?> e sim assim <?php?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Jeovane,

 

Desculpe a mudança de assunto, mais por qual motivo é melhor usar "<?php echo" ao invés de "<?= ", há alguma versão do PHP que não suporta esta última? o short tags se aplica a esta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Jeovane,

 

Desculpe a mudança de assunto, mais por qual motivo é melhor usar "<?php echo" ao invés de "<?= ", há alguma versão do PHP que não suporta esta última? o short tags se aplica a esta?

melhor que as tags <?=?> sejam assim <?php echo?>
Tags shorts (Tags curtas <?=?>) foram, por um tempo, o padrão no mundo PHP. Entretanto, elas tem como defeito principal, o conflito com cabeçalhos XML, e sua utilização tem diminuído. Sua vantagem é poder exibir o resultado de uma expressão com a sintaxe <?=$variavel ?> Tendeu você pode ter problemas nos cabeçalhos XML e perder formatação aparecendo os caracteres dos códigos quando você acessa o site...
Hoje os desenvolvedores só trabalham desta maneira <?php ?> e para imprimir um resultado <?php echo;?>

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.