Ir para conteúdo

POWERED BY:

Arquivado

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

plarruda

Erro ao inserir dados do formulario no banco de dados

Recommended Posts

Não estou conseguindo inserir dados no banco de dados

 

Segue abaixo o meu codigo:

 

Index.htlml

 

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sem título</title>
</head>
<body>
<form action="verifica.php" method="POST">
<pre>
Insira Informações
Nome: <input type="text" size="35" maxlength="256" name"nome">
E-mail: <input type="text" size="35" maxlength="256" name"email">
Cidade: <input type="text" size="35" maxlength="256" name"cidade">
Estado <input type="text" size="2" maxlength="2" name"estado">
Disite sua opnião abaixo:
<textarea rows="5" cols="42" name="comentarios"> </textarea>
<input type="submit" value="Efetuar Cadastro" name="enviar">
</pre>
</form>
</body>
</html>
verifica.php
<!doctype html>
<html>
<body>
<?
$nome = $_POST["nome"];
$email = $_POST["email"];
$cidade = $_POST["cidade"];
$estado = $_POST["estado"];
$comentarios = $_POST["comentarios"];
$erro = 0;
if (empty($nome) OR strstr ($nome, ' ')==FALSE)
{echo "Favor Digitar seu nome corretamente.<br>"; $erro=1;}
if (strlen($email)<8 || strstr ($email, '@')==FALSE)
{echo "Favor Digitar seu email corretamente.<br>"; $erro=1;}
if (empty($cidade))
{echo "Favor Digitar sua cidade corretamente.<br>"; $erro=1;}
if (empty($estado) !=2)
{echo "Favor Digitar o estado corretamente.<br>"; $erro=1;}
if (empty($comentarios))
{echo "Favor entre com algum comentario.<br>"; $erro=1;}
if ($erro==0)
{echo "todos os dados foram digitados corretamente!";
include "insere.php";}
?>
insere.php
<?
include "conecta_mysql.inc";
$nome = $_POST["nome"];
$email = $_POST["email"];
$cidade = $_POST["cidade"];
$estado = $_POST["estado"];
$comentarios = $_POST["comentarios"];
$sql = "INSERT INTO cadastro VALUES";
$sql = "('$nome','$email','$cidade','$estado','$comentarios')";
$resultado - mysql_query ($sql);
echo " Usuário incluido com sucesso!";
mysql_close($conexao);
?>
conecta_mysql.php
<?
$conexão = mysql_connect("localhost","root"," ");
mysql_select_db ("bdexemplo");
?>
Erro que esta dando:
( ! ) Notice: Undefined index: nome in C:\wamp\www\cadastro-cliente\verifica.php on line 6 Call Stack # Time Memory Function Location 1 0.0007 246712 {main}( ) ..\verifica.php:0
( ! ) Notice: Undefined index: email in C:\wamp\www\cadastro-cliente\verifica.php on line 7 Call Stack # Time Memory Function Location 1 0.0007 246712 {main}( ) ..\verifica.php:0
( ! ) Notice: Undefined index: cidade in C:\wamp\www\cadastro-cliente\verifica.php on line 8 Call Stack # Time Memory Function Location 1 0.0007 246712 {main}( ) ..\verifica.php:0
( ! ) Notice: Undefined index: estado in C:\wamp\www\cadastro-cliente\verifica.php on line 9 Call Stack # Time Memory Function Location 1 0.0007 246712 {main}( ) ..\verifica.php:0 Favor Digitar seu nome corretamente.
Favor Digitar seu email corretamente.
Favor Digitar sua cidade corretamente.
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, na verdade ai tem varios erros, o primeiro seria o seguinte, você esta passando os dados POST por 2 páginas ele na verdade passa só por 1, ou seja, após preencher o formulário só quem tem acesso aos dados é a próxima página, no seu caso, verifica.php

 

Ou seja, vc precisaria criar um condicional para caso a exita erro ele volta, caso não exista ele insere no banco, tudo na mesma página, senão não vai funcionar

 

Outra coisa, você esta utilizando o if diversas vezes na página verifica.php o correto seria utilizar elseif http://php.net/manual/pt_BR/control-structures.elseif.php

 

Após verificar que tem um erro na validação o certo seria colocar um link para voltar a página de preenchimento do formulário

 

O último erro é a sintaxe da INSERT

$sql = "INSERT INTO cadastro VALUES";
$sql = "('$nome','$email','$cidade','$estado','$comentarios')";
$resultado - mysql_query ($sql);
echo " Usuário incluido com sucesso!";

Primeiro para você inserir 2 dados na mesma variável, você precisa colocar um . (ponto) antes do sinal de =

 

Ou seja

$sql = "INSERT INTO cadastro VALUES";
$sql .= "('$nome','$email','$cidade','$estado','$comentarios')";

Porém ainda continuaria errado, porque da INSERT seria:

 

INSERT INTO nome_da_tabela (CAMPOS A SEREM GRAVADOS SEPARADOS POR VÍRGULAS) VALUES (VARIAVEIS QUE CONTÉM OS DADOS);

 

http://php.net/manual/pt_BR/function.mysql-query.php

 

Porém estas querys estão ja obsoletas o certo seria você aprender PDO

 

http://www.devmedia.com.br/introducao-ao-php-pdo/24973

 

Espero ter ajudado, mas qualquer coisa da um retorno ai

 

Um abraço

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.