Ir para conteúdo

POWERED BY:

Arquivado

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

bruno.globaltec

Erro ao gravar dados no banco de dados

Recommended Posts

Boa tarde, quando mando gravar os dados no banco de dados, só retorna a mensagem que os dados não podem ser gravados mais não mostra o erro, segue o meu codigo:

aqui faço a conexão com o BD

<?php 
error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED);
$host = "localhost";
$usuario = "root";
$senha = "";
$banco = "cadastro";

$conn = mysql_connect($host, $usuario, $senha) or die ("Servidor não responde");
$db = mysql_select_db($banco, $conn) or die ("Não foi possível realizar a conexão com o Banco de Dados");
?>

e aqui e aonde eu tenho o formulario pra inserir os dados, e também a ação que ele vai fazer quando for executado;

<?php
include "configuracao/conn.php";

$acao = $_GET["acao"];

if ($acao == "cadastro") {

// Recebendo valores
$nome = $_POST["nome"];
$email = $_POST["email"];
$nascimento = $_POST["nascimento"];
$telefone = $_POST["telefone"];
$info = $_POST["info"];

// Nome
if ($nome == "") {
	$error[0] = "Preencha o campo nome";
}

// Data de nascimento
if ($nascimento == "") {
	$error[2] = "Preencha a data de nascimento";
} elseif (!eregi("^[0-9]{2}/[0-9]{2}/[0-9]{4}$", $nascimento)) {
	$error[2] = "Data de nascimento em formato inválido";
}


// Caso não haja nenhum erro
if (sizeof($error) == 0) {

$sql = mysql_query("INSERT INTO clientes VALUES ('', '$nome', '$email', '$nascimento', '$telefone', '$info')");

if ($sql) {
	echo "<script language='javascript'>alert('Cadastro efetuado com sucesso')</script>";
} else {
	echo "<script language='javascript'>alert('Não foi possivel realizar o cadastro no momento')</script>";
}

}

}


?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cadastro</title>
<link href="estilo.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="principal">
<h1>Cadastro de Clientes</h1>
<?php
// Caso haja erros
if (sizeof($error) != 0) {
	// Exibe os erros
	foreach ($error as $err) {
		echo "<font color='red'><b>" .$err . "</b></font><br />";
	}
}
?>
<form method="post" action="cadastro.php?acao=cadastro">
<p><strong>Nome:</strong><br /><input name="nome" type="text" value="<?php if (sizeof($error) != 0) { echo $nome; } ?>" /></p>
<p><strong>Email:</strong><br /><input name="email" type="text" value="<?php if (sizeof($error) != 0) { echo $email; } ?>" /></p>
<p><strong>Data de Nascimento:</strong><br /><input name="nascimento" type="text" value="<?php if (sizeof($error) != 0) { echo $nascimento; } ?>" /> <em>(Ex: dd/mm/aaaa) </em></p>
<p><strong>Telefone:</strong><br /><input name="telefone" type="text" value="<?php if (sizeof($error) != 0) { echo $telefone; } ?>" /> <em>(Ex: 14 3210-1234)</em></p>
<p><strong>Informações Adicionais:</strong><br /><textarea name="info" cols="30" rows="5"><?php if (sizeof($error) != 0) { echo $info; } ?></textarea></p>
<p><input type="submit" value="Cadastrar" /></p>
</form>
</div>
</body>
</html>

quando mando executar, ele não apresenta nenhum erro pra min, apenas aparece a seguinte menssagem "Não foi possivel realizar o cadastro no momento"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o mysql_error() para exibir o erro que existe na query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o mysql_error() para exibir o erro que existe na query.

Coloquei amigo, mesmo assim não retornou nenhum erro:

<?php
include "configuracao/conn.php";

$acao = $_GET["acao"];

if ($acao == "cadastro") {

// Recebendo valores
$nome = $_POST["nome"];
$email = $_POST["email"];
$nascimento = $_POST["nascimento"];
$telefone = $_POST["telefone"];
$info = $_POST["info"];

// Nome
if ($nome == "") {
	$error[0] = "Preencha o campo nome";
}

// Data de nascimento
if ($nascimento == "") {
	$error[2] = "Preencha a data de nascimento";
} elseif (!eregi("^[0-9]{2}/[0-9]{2}/[0-9]{4}$", $nascimento)) {
	$error[2] = "Data de nascimento em formato inválido";
}


// Caso não haja nenhum erro
if (sizeof($error) == 0) {

$sql = mysql_query("INSERT INTO clientes VALUES ('', '$nome', '$email', '$nascimento', '$telefone', '$info')");

if ($sql) {
	echo "<script language='javascript'>alert('Cadastro efetuado com sucesso')</script>";
} else {
	echo "<script language='javascript'>alert('Não foi possivel realizar o cadastro no momento')</script>";
}

}

}
mysql_error()


?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cadastro</title>
<link href="estilo.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="principal">
<h1>Cadastro de Clientes</h1>
<?php
// Caso haja erros
if (sizeof($error) != 0) {
	// Exibe os erros
	foreach ($error as $err) {
		echo "<font color='red'><b>" .$err . "</b></font><br />";
	}
}
?>
<form method="post" action="cadastro.php?acao=cadastro">
<p><strong>Nome:</strong><br /><input name="nome" type="text" value="<?php if (sizeof($error) != 0) { echo $nome; } ?>" /></p>
<p><strong>Email:</strong><br /><input name="email" type="text" value="<?php if (sizeof($error) != 0) { echo $email; } ?>" /></p>
<p><strong>Data de Nascimento:</strong><br /><input name="nascimento" type="text" value="<?php if (sizeof($error) != 0) { echo $nascimento; } ?>" /> <em>(Ex: dd/mm/aaaa) </em></p>
<p><strong>Telefone:</strong><br /><input name="telefone" type="text" value="<?php if (sizeof($error) != 0) { echo $telefone; } ?>" /> <em>(Ex: 14 3210-1234)</em></p>
<p><strong>Informações Adicionais:</strong><br /><textarea name="info" cols="30" rows="5"><?php if (sizeof($error) != 0) { echo $info; } ?></textarea></p>
<p><input type="submit" value="Cadastrar" /></p>
</form>
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites


$sql = mysql_query("INSERT INTO clientes VALUES ('', '$nome', '$email', '$nascimento', '$telefone', '$info')") OR DIE(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites
$sql = mysql_query("INSERT INTO clientes VALUES ('', '$nome', '$email', '$nascimento', '$telefone', '$info')") OR DIE(mysql_error());

Ah sim desculpe eu ter colocado no local errado, agora eu coloquei e apareceu este erro aqui:

Incorrect integer value: '' for column 'id' at row 1

Seria mudar o campo "id" para Null ? no Mysql ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a sua coluna é um auto increment você não precisa citá-la na query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a sua coluna é um auto increment você não precisa citá-la na query.

Meu mysql esta da seguinte forma:

CREATE TABLE `clientes` (  `id` int(11) NOT NULL auto_increment,  `nome` varchar(50) NOT NULL,  `email` varchar(50) NOT NULL,  `nascimento` varchar(50) NOT NULL,  `telefone` varchar(50) NOT NULL,  `info` text NOT NULL,  PRIMARY KEY  (`id`)) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;---- Extraindo dados da tabela `clientes`--INSERT INTO `clientes` (`id`, `nome`, `email`, `nascimento`, `telefone`, `info`) VALUES(1, 'Rafael', 'faelcalves@hotmail.com', '22/01/1992', '14 3210-1234', 'xD');

Não então o codigo da query ficaria assim ?

$sql = mysql_query("INSERT INTO clientes VALUES ('$nome', '$email', '$nascimento', '$telefone', '$info')");

Fiz isso, mais continuou dando a mesma menssagem "Não foi possivel realizar o cadastro no momento"

$sql = mysql_query("INSERT INTO clientes VALUES ('$nome', '$email', '$nascimento', '$telefone', '$info')");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tchê, programação não é mágica ou adivinhação, debug existe para exibir os erros, basta usar o que eu já citei acima que o erro será exibido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tchê, programação não é mágica ou adivinhação, debug existe para exibir os erros, basta usar o que eu já citei acima que o erro será exibido.

Rsrs entendo, mais estou meio confuso onde retirar o codigo na query sendo que eu deixei da seguinte forma:

$sql = mysql_query("INSERT INTO clientes VALUES ('$nome', '$email', '$nascimento', '$telefone', '$info')");

Mesmo assim não deu

:wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, é só você fazer o que eu já citei acima.. não cadastrou? OR DIE(mysql_error()! Isso irá exibir o erro...

$sql = mysql_query("INSERT INTO clientes VALUES ('$nome', '$email', '$nascimento', '$telefone', '$info')") OR DIE(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, é só você fazer o que eu já citei acima.. não cadastrou? OR DIE(mysql_error()! Isso irá exibir o erro...

$sql = mysql_query("INSERT INTO clientes VALUES ('$nome', '$email', '$nascimento', '$telefone', '$info')") OR DIE(mysql_error());

Ah sim, desculpe por não ter entendido, apareceu este erro aqui:

Column count doesn't match value count at row 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos as tentativas:

$sql = mysql_query("INSERT INTO clientes VALUES (NULL , '$nome', '$email', '$nascimento', '$telefone', '$info')") OR DIE(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara não é necessário, mas saber inglês facilita em 100% o aprendizado na linguagem. no caso do erro diz que que foi um erro de syntax ou seja quando você abre parenteses e fecha, ele espera a seguinte sintaxe ";". O mesmo aconteceu ai, você esta passando um array de informações se eu estou aprendendo direito. E nesse array você começou colocando uma virgula nele em quanto ele esperava uma variável ou uma string ou um integer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara não é necessário, mas saber inglês facilita em 100% o aprendizado na linguagem. no caso do erro diz que que foi um erro de syntax ou seja quando você abre parenteses e fecha, ele espera a seguinte sintaxe ";". O mesmo aconteceu ai, você esta passando um array de informações se eu estou aprendendo direito. E nesse array você começou colocando uma virgula nele em quanto ele esperava uma variável ou uma string ou um integer.

Obrigado, agora entendi.

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.