Jump to content


Photo

Column Count Doesn't Match Value Count At Row 1


  • Faça o login para participar
4 replies to this topic

#1 Ronimarcos

Ronimarcos

    Novato no fórum

  • Usuários
  • 8 posts
  • Sexo:Masculino
  • Localidade:Rondonópolis-MT
  • Interesses:PHP, ASP, Ajax, Python, Ruby, programação web em geral

Posted 02/10/2008, 01:03

Boa noite.
Pessoal, peguei um script na net, que faz o upload da foto, até aí tudo bém, ele upa a foto tranquilamente, joga dentro da pasta, mas preciso fazer o seginte:

Grava no banco o path da foto juntamente com a legenda e um outro registro que é chave estrageira. O campo chave dessa tabela é auto incremento, creio que o problema esteja de agora en diante, pois quando tento pegar o endereço da foto e gravar no banco, ao mandar inserir, ele dá o erro: Column count doesn't match value count at row 1.

No meu insert, já coloquei as colunas certinhas, coloquei o campo chave auto incremento, tirei e coloquei de volta as colunas da forma como está em baixo, mas mesmo assim dá o erro, creio que deve ser algo relacionado às colunas, estou postando o código abaixo, pra que vc's possam me darem uma ajuda.

Estou usando Dreamweaver CS3 pra Editar + PHP + MYSQL

Desde já fico muito agradecido, fiquem com Deus.

<?php

include("cfg.php");
$Configuracao = new Configuracao();
$Configuracao->MySQL();

$consultaespec = "SELECT CodigoEspecie, NomeVulgar, NomeCientifico FROM especies ORDER BY CodigoEspecie ASC";


if ($_POST["botao"]){
	if(isset($_FILES["imagem"])){
		$Imagem = $_FILES["imagem"];
		$Tamanhos = getimagesize($Imagem["tmp_name"]);
		$TipoArquivo = $_FILES['imagem']['type'];
		if(!eregi("^(image)\/(pjpeg|jpeg|jpg|gif|png)$", $TipoArquivo)){
			print("<p align=\"center\">Tipo de arquivo desconhecido!</p>");
			}
		else {
			$Data = date("dmY-His");
			$Nome_Imagem = $Imagem["name"];
			$extensao = explode(".", $Nome_Imagem);
			$Extensao = $extensao[1];
			$Pasta = "../imagens/";
			if(!file_exists($Pasta)){
		mkdir($Pasta);
		}
			$Novo_Nome = $Pasta . $Data . "." . $Extensao;
			$Caminho = $Pasta . $Novo_Nome;
			move_uploaded_file($Imagem["tmp_name"], $Novo_Nome);
			$legenda = $_POST['LegendaFotos'];
			$especie = $_POST['Especies_CodigoEspecie'];

mysql_query("INSERT INTO fotos VALUES ('$Novo_Nome', '$legenda', '$especie')") or die(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>Untitled Document</title>
<link href="../estilos.css" rel="stylesheet" type="text/css" />
</head>

<body>


</p>
<label></label>
<form action="" method="post" enctype="multipart/form-data" name="Upload" class="Formulario">
  <p>
  
  <table align="center" class="Formulario">
	<tr valign="baseline">
	  <td nowrap="nowrap" align="right"> </td>
	  <td><input type="file" name="imagem" /></td>
	</tr>
	<tr valign="baseline">
	  <td nowrap="nowrap" align="right">Legenda Fotos</td>
	  <td><input type="text" name="LegendaFotos" value="" size="32" /></td>
	</tr>
	<tr valign="baseline">
	  <td nowrap="nowrap" align="right">Especie:</td>
	  <td><select name="Especies_CodigoEspecie">
		<?php 
	while($especies=mysql_fetch_array($consultaespec)){  
?>
		<option value="<?php echo $especies['CodigoEspecie']; ?>" ><?php echo $especies['NomeVulgar']; ?></option>
		<?php
} 
?>
	  </select></td>
	</tr>
	<tr valign="baseline">
	  <td nowrap="nowrap" align="right"> </td>
	  <td><input type="submit" value="Inserir cadastro" name="botao"/></td>
	</tr>
  </table>
</form>
</body>
</html>

Ronimarcos G. Silva
Rondonópolis-MT

#2 kleryson

kleryson

    Mestre

  • Usuários
  • 687 posts
  • Sexo:Masculino

Posted 02/10/2008, 09:30

Caro amigo,

Quando você faz um insert e não vai usar todos os campos você deve informar os campos na ordem que estão os dados..

$sql = "INSERT INTO fotos VALUES ('$Novo_Nome', '$legenda', '$especie')";

O correto do insert seria assim:
$sql = "INSERT INTO fotos (novo_nome,legenda,especie) VALUES ('$Novo_Nome', '$legenda', '$especie')";
(y)??

#3 Ronimarcos

Ronimarcos

    Novato no fórum

  • Usuários
  • 8 posts
  • Sexo:Masculino
  • Localidade:Rondonópolis-MT
  • Interesses:PHP, ASP, Ajax, Python, Ruby, programação web em geral

Posted 02/10/2008, 13:56

Caro amigo,

Quando você faz um insert e não vai usar todos os campos você deve informar os campos na ordem que estão os dados..

$sql = "INSERT INTO fotos VALUES ('$Novo_Nome', '$legenda', '$especie')";

O correto do insert seria assim:
$sql = "INSERT INTO fotos (novo_nome,legenda,especie) VALUES ('$Novo_Nome', '$legenda', '$especie')";
(y)??


Olá kleryson.
Agradeço por ter me ajudado, coloquei e agora acho que passou, mas o problema agora é outro, tenho uma tabela relacionada, a qual eu busco o nome de vulgar das espécies e grava no banco o código desta espécie. Acontece que ele não está me listando os nomes vulgares, com isso, não preencho nada no campo pra ser gravado no banco, dando erro. Creio que o problema esteja onde eu estou tentando trazer o nome vulgar da outra tabela de espécie, tem como me ajudar?

Eele aparece o seguinte erro agora:
Cannot add or update a child row: a foreign key constraint fails (`herbario/fotos`, CONSTRAINT `fotos_ibfk_1` FOREIGN KEY (`Especies_CodigoEspecie`) REFERENCES `especies` (`CodigoEspecie`) ON DELETE CASCADE ON UPDATE CASCADE)

Edição feita por: Ronimarcos, 02/10/2008, 13:56.

Ronimarcos G. Silva
Rondonópolis-MT

#4 kleryson

kleryson

    Mestre

  • Usuários
  • 687 posts
  • Sexo:Masculino

Posted 02/10/2008, 16:07

Caro amigo,

Tem um problema ai que é o seguinte...

Primeiro você tem que inserir os dados da tabela pai e assim pegar o último registro guardado com o seguinte comando: mysql_insert_id

E assim armazenar esse valor no campo filho da outra tabela...

(y) ??

#5 Ronimarcos

Ronimarcos

    Novato no fórum

  • Usuários
  • 8 posts
  • Sexo:Masculino
  • Localidade:Rondonópolis-MT
  • Interesses:PHP, ASP, Ajax, Python, Ruby, programação web em geral

Posted 08/10/2008, 13:42

Caro amigo,

Tem um problema ai que é o seguinte...

Primeiro você tem que inserir os dados da tabela pai e assim pegar o último registro guardado com o seguinte comando: mysql_insert_id

E assim armazenar esse valor no campo filho da outra tabela...

(y) ??


OK, Obrigado.
Grande abraço a Todos.
Ronimarcos G. Silva
Rondonópolis-MT




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq