Ir para conteúdo

Arquivado

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

QuaseNada

Erro Maldito

Recommended Posts

Pessoal, estou com um problema que não consigo resolver nem a pau hehehe, gostaria da ajuda de vcs.Eu tenho as seguintes tabelas no meu BD:

CREATE TABLE sistemas ( id int NOT NULL auto_increment, nome varchar(30) NOT NULL default 'Indefinido', tipo varchar(25) NOT NULL default 'Indefinido', historia text(65535) NOT NULL, imagem blob(65535) NOT NULL, fabricante varchar(255) NOT NULL default 'Indefinido', esptec varchar(255) NOT NULL default 'Indefinido', PRIMARY KEY (id)) TYPE=InnoDB;CREATE TABLE emuladores ( id int NOT NULL auto_increment, id_sistemas int NOT NULL, nome varchar(255) NOT NULL default 'Indefinido', site text(65535) NOT NULL, PRIMARY KEY (id), FOREIGN KEY (id_sistemas) REFERENCES sistemas(id) ON DELETE CASCADE) TYPE=InnoDB;

Pra incluir o emulador eu fiz o seguinte.Populei uma combo com os sistemas:

<?php $res = mysql_query("SELECT id, nome FROM sistemas"); while($registro = mysql_fetch_row($res)) { $id_sist = $registro[0]; $nome_sist = $registro[1]; echo "<option value=\"$cod\">$nome_sist</option>\n"; }?>

Fiz os outros 2 inputs pra pros outros campos e fiz a query:

$nome=$_POST["nome"];$site=$_POST["site"];$res = mysql_query("INSERT INTO emuladores (nome, site, id_sistemas) VALUES ('$nome','$site',$id_sist)");if(mysql_affected_rows()>0) echo "<p align=\"center\">Emulador incluído com sucesso!</p>";else { $erro = mysql_error(); echo " <p align='center'>Erro:$erro</p>"; }

Os sistemas eu incluo beleza, mais quando eu vou incluir um emulador ele da o seguinte erro:

Erro:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 2

Não sei mais o que fazer, já tentei de tudo. O que pode ser isso?Valew!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

$nome=$_POST["nome"];$site=$_POST["site"];$res = mysql_query("INSERT INTO emuladores (nome, site, id_sistemas) VALUES ('$nome','$site',$id_sist)");if(mysql_affected_rows()>0)echo "

Emulador incluído com sucesso!

";else {$erro = mysql_error();echo "

Erro:$erro

";}
nao posso responder com certeza, pois pode ter N motivossugiro que você verifique os pontos: - de onde vem a variavel " $id_sist " - atribua o valor da query sql à uma variável, por exemplo:ao invés de fazer:

$res = mysql_query("INSERT INTO emuladores (nome, site, id_sistemas) VALUES ('$nome','$site',$id_sist)");

faça desse modo ( evite misturar strings e variaveis. Faça o uso da concatenação ):

$sql = "INSERT INTO emuladores (nome, site, id_sistemas) VALUES ('".$nome."','".$site."',".$id_sist.")";

- antes de executar a query faça um debug escrevendo na tela o que foi gerado:

echo $sql; exit; // essa linha exibe o sql que foi gerado e interrompe o restante do processo ( pra debugar apenas )$res = mysql_query($sql);

Compartilhar este post


Link para o post
Compartilhar em outros sites

A váriável $id_sist eu criei pra armazenar o valor do resultado da select que eu criei pra popular a combobox.

 

 

Fiz o esquema da concatenação e deu esse erro:

 

Parse error: syntax error, unexpected '"' in C:...\cemuladores.php on line 60

Linha 60:

VALUES ('".$nome.','".$site.',".$id_sist.")");

Não entendí direito o negócio do debug,mais eu coloquei mesmo assim e deu o erro acima...

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara não sou fera no php estou aprendendo tb mais..

cara troca este

 

VALUES ('".$nome.','".$site.',".$id_sist.")");

 

por este

 

VALUES('$nome,'$site','$id','$sist')");

espero que te ajude...

 

abraço!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinom, eu coloquei o seu código lá antes da string, daí ele não retornou nada, daí eu tirei e ele retornou o mesmo erro que estva dando antes:

 

Erro:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 2

Dark Neo, acho que não faz sentido o que você disse uma vez que não existe a variável $id e nem $sist e que eu só tenho 3 na minha tabela...

 

FLW!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

é amigo depois que eu li o post com calma q reparei nisso e respondi as presas é o q da não ler com atençãomal ai galera desculpe!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você digitou errado a concatenação..

 

vou colocar completo aqui, pois nao sabia que você é iniciante no php

 

 

$nome=$_POST["nome"];

$site=$_POST["site"];

 

 

$sql = "INSERT INTO emuladores (nome, site, id_sistemas) VALUES ('".$nome."','".$site."',".$id_sist.")";

echo $sql; exit; // use essa linha somente para debugar

$res = mysql_query($sql);

 

if(mysql_affected_rows()>0)

echo "

Emulador incluído com sucesso!

";

else {

$erro = mysql_error();

echo "

Erro:$erro

";

}

 

em negrito a parte que alterei.

a concatenação não é obrigatória. É apenas uma recomendação para deixar o código de acordo com a padronização do phpdocs.org

 

 

 

perguntei sobre a variavel " $id_sist " porque nao vi nenhuma declaracao dela no codigo que você postou.

 

por dedução lógica deve ser do controle

 

acho que parte do problema pode estar aí, porque nos cpodigos que você postou nao tem a tag no código do formulario

 

e tb nao tem a requisicao do campo na página que faz o processamento dos dados.

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.