Cyberoma 5 Denunciar post Postado Março 20, 2012 Boa noite galera, estou com um problema na hora de inserir dados em uma tabela e mandar o id dela pra outra (Foreing Key).. Quero pegar o id da tabela empresas e inserir em empresas_id da tabela enderecos. Mas não esta funcionando Eu consigo cadastrar a empresa mas nada é inserido na tabela enderecos. Meu codigo: if($_GET['funcao'] == "cadastrar_empresa"){ $nome = $_POST['nome']; $cnpj = $_POST['cnpj']; $endereco = $_POST['endereco']; $complemento = $_POST['complemento']; $bairro = $_POST['bairro']; $cidade = $_POST['cidade']; $estado = $_POST['estado']; $cep = $_POST['cep']; $telefone1 = $_POST['telefone1']; $telefone2 = $_POST['telefone2']; $celular1 = $_POST['celular1']; $celular2 = $_POST['celular2']; $email1 = $_POST['email1']; $email2 = $_POST['email2']; $sql_empresa = mysql_query("INSERT INTO empresas (id, nome, cnpj) VALUES ('','$nome','$cnpj')"); $sql_endereco = mysql_query("INSERT INTO enderecos (id, empresas_id, endereco, complemento, bairro, cidade, estado, cep) VALUES ('', LAST_INSERT_ID(), '$complemento', '$bairro', '$cidade', '$estado', '$cep')"); } Aqui estar a estrutura do meu banco: Uploaded with ImageShack.us Compartilhar este post Link para o post Compartilhar em outros sites
JCMPJ 0 Denunciar post Postado Março 20, 2012 Se tem que fazer: ultimo_Id = mysql_result(myslq_query('LAST_INSERT_ID()'),0,0); $sql_endereco = mysql_query("INSERT INTO enderecos (id, empresas_id, endereco, complemento, bairro, cidade, estado, cep) VALUES ('', ultimo_Id, '$complemento', '$bairro', '$cidade', '$estado', '$cep')"); Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Março 20, 2012 Eu prefiro a utilização do "nextval()", como os bancos de dados oracle e postgre possuem. Entretanto, o mysql não possui, mas há como "emular" essa pequena função, e é extremamente útil para garantir a integridade dos dados, pois, uma vez que haja inúmeras inserções no banco, por uma fração de segundo, você pode acabar pegando o id errado. Emulating nextval() function to get sequence in MySQL Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Março 20, 2012 Se tem que fazer: ultimo_Id = mysql_result(myslq_query('LAST_INSERT_ID()'),0,0); $sql_endereco = mysql_query("INSERT INTO enderecos (id, empresas_id, endereco, complemento, bairro, cidade, estado, cep) VALUES ('', ultimo_Id, '$complemento', '$bairro', '$cidade', '$estado', '$cep')"); parceiro eu percebi que ele não estar cadastrando nada na tabela enderecos. será que tem algum erro no foreing key?? eu usei esse codigo e nada foi inserido: $sql_endereco = mysql_query("INSERT INTO enderecos (id, empresas_id, endereco, complemento, bairro, cidade, estado, cep) VALUES ('', '1', '$complemento', '$bairro', '$cidade', '$estado', '$cep')"); Olha o meu banco e olha minha query tem algum erro que eu não esteja percebendo? Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Março 20, 2012 alguem percebeu algum erro? Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Março 20, 2012 1- se o id da tabela eh auto increment, entao nao precisa estar no insert, ou declare-o como null e nao como vazio, assim nao dara erro no insert tent $sql_empresa = mysql_query("INSERT INTO empresas (id, nome, cnpj) VALUES ('','$nome','$cnpj')"); $last_id = mysql_insert_id(); $sql_endereco = mysql_query("INSERT INTO enderecos (id, empresas_id, endereco, complemento, bairro, cidade, estado, cep) VALUES ('', '{$last_id}', '$complemento', '$bairro', '$cidade', '$estado', '$cep')"); Compartilhar este post Link para o post Compartilhar em outros sites
LeozinCuiabá 7 Denunciar post Postado Março 20, 2012 alguem percebeu algum erro? você está passando os dados via post, e mas você colocou uma condição se caso os dados fossem enviados via GET, não vai receber nada mesmo. Ao inves de: if($_GET['funcao'] == "cadastrar_empresa"){ O certo SERIA: if($_POST['funcao'] == "cadastrar_empresa"){ Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Março 20, 2012 você está passando os dados via post, e mas você colocou uma condição se caso os dados fossem enviados via GET, não vai receber nada mesmo. Ao inves de: if($_GET['funcao'] == "cadastrar_empresa"){ O certo SERIA: if($_POST['funcao'] == "cadastrar_empresa"){ Não brother no formulario passsei por get: <form id="form1" name="form1" method="post" action="funcoes_cadastro.php?funcao=cadastrar_empresa"> Tanto é que ele insere os dados na tabela empresa, mas não na tabela enderecos. Deve ter um erro na minha query ou na modelagem do banco. Compartilhar este post Link para o post Compartilhar em outros sites
LeozinCuiabá 7 Denunciar post Postado Março 20, 2012 Não brother no formulario passsei por get: <form id="form1" name="form1" method="post" action="funcoes_cadastro.php?funcao=cadastrar_empresa"> Tanto é que ele insere os dados na tabela empresa, mas não na tabela enderecos. Deve ter um erro na minha query ou na modelagem do banco. Olha ali onde está escrito method no seu formulario, está escrito post...... o erro na query acredito que esteja no seguinte: {$last_id} não creio que precise dessas chaves, pelo menos nunca usei, e deu certo. é que estou no trab, senão testava aqui p/ você. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Março 20, 2012 qual a diferenca entre uma string q usa aspas simples e uma q usa aspas duplas? as aspas simples indica uma string literal, aspas dupla significa string interpretada, você pode colocar uma variavel dentro dela q o php vai interpretar... as chaves dentro de uma string interpretada servira como concatenacao...eh mais usada em oo, mas nao significa q possa ser usada em estruturado, por favor estudar mais php...ler mais o manual...você pelo menos imprimiu o sql na tela pra ver se era erro ou nao, leozincuiaba...?tenho certeza q nao... outra dica cyberoma, imprima as duas sql na tela e joga no phpmyadmin, ele dira o erro melhor...ou use o die(mysql_error()) Compartilhar este post Link para o post Compartilhar em outros sites
LeozinCuiabá 7 Denunciar post Postado Março 20, 2012 qual a diferenca entre uma string q usa aspas simples e uma q usa aspas duplas? as aspas simples indica uma string literal, aspas dupla significa string interpretada, você pode colocar uma variavel dentro dela q o php vai interpretar... as chaves dentro de uma string interpretada servira como concatenacao...eh mais usada em oo, mas nao significa q possa ser usada em estruturado, por favor estudar mais php...ler mais o manual...você pelo menos imprimiu o sql na tela pra ver se era erro ou nao, leozincuiaba...?tenho certeza q nao... outra dica cyberoma, imprima as duas sql na tela e joga no phpmyadmin, ele dira o erro melhor...ou use o die(mysql_error()) Igor, estou no trabalho, não tenho como testar nada aqui. eu não sabia que as chaves serviam para isso, nem todos estudam as ferramentas a fundo, aprendi sempre o que era util e necessário pra mim. vamos focar em ajudar o rapaz. Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Março 20, 2012 1- se o id da tabela eh auto increment, entao nao precisa estar no insert, ou declare-o como null e nao como vazio, assim nao dara erro no insert tent $sql_empresa = mysql_query("INSERT INTO empresas (id, nome, cnpj) VALUES ('','$nome','$cnpj')"); $last_id = mysql_insert_id(); $sql_endereco = mysql_query("INSERT INTO enderecos (id, empresas_id, endereco, complemento, bairro, cidade, estado, cep) VALUES ('', '{$last_id}', '$complemento', '$bairro', '$cidade', '$estado', '$cep')"); Igor aparece esse erro Column count doesn't match value count at row 1 O erro é na hora do segundo insert (enderecos), porque a empresa é cadastrada. Afffffff que mole meuuu. Estava faltando eu adicionar na query o '$endereco'. $sql_empresa = mysql_query("INSERT INTO empresas (id, nome, cnpj) VALUES ('','$nome','$cnpj')") or die(mysql_error()); $last_id = mysql_insert_id(); $sql_endereco = mysql_query("INSERT INTO enderecos (id, empresas_id, endereco, complemento, bairro, cidade, estado, cep) VALUES ('','$last_id', '$endereco', '$complemento', '$bairro', '$cidade', '$estado', '$cep')") or die(mysql_error()); Realmente o mysql_error() é muito importante.. Igor, LeozinCuiabá muito Obrigado pela ajuda de vocês.. e a todos que tentaram me ajudar.. Desculpa, foi falta de atenção minha. Obrigadooo \o/ Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Março 20, 2012 Igor, estou no trabalho, não tenho como testar nada aqui. eu não sabia que as chaves serviam para isso, nem todos estudam as ferramentas a fundo, aprendi sempre o que era util e necessário pra mim. vamos focar em ajudar o rapaz. php nao eh uma ferramenta e sim uma linguagem...isto mostra o seu pouco conhecimento...aposto q tb você leva tempo pra fazer algo, devido ao pouco conhecimento...se você nao sabia das chaves, entao nao fale o q nao sabe, ou acabara sempre levando puxao de orelha de alguem q sabe mais... cyberoma, aprecio seu agradecimento na resolucao do problema... Compartilhar este post Link para o post Compartilhar em outros sites
LeozinCuiabá 7 Denunciar post Postado Março 20, 2012 php nao eh uma ferramenta e sim uma linguagem...isto mostra o seu pouco conhecimento...aposto q tb você leva tempo pra fazer algo, devido ao pouco conhecimento...se você nao sabia das chaves, entao nao fale o q nao sabe, ou acabara sempre levando puxao de orelha de alguem q sabe mais... cyberoma, aprecio seu agradecimento na resolucao do problema... Igor, seja mais humilde, você sabe um detalhe a mais e se acha o senior no php....kkk desse jeito você mata a vontade de qualquer um em querer ajudar no forum. nem te conheço mas ta perdoado pelo arrogância. vamos continuar ajudando os que precisam. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Março 20, 2012 leozin, de fato sou senior, trabalho ha 7 anos com php, apenas nao gosto de me exibir (se ver outros topicos e respondi, vera isto), ja criei at mesmo um framework proprio...eu nao me acho Deus, e muito menos você o eh para me julgar...ok?eu momento disse q você eh burro, apenas disse q você tem pouco conhecimento, e tb em momento algum eu disse q você eh incapaz de saber mais, ou mesmo, saber mais q eu, basta você fazer por onde, como eu fiz...agora vamos parar com a discussao, pq o topico ja foi resolvido... Compartilhar este post Link para o post Compartilhar em outros sites
LeozinCuiabá 7 Denunciar post Postado Março 20, 2012 leozin, de fato sou senior, trabalho ha 7 anos com php, apenas nao gosto de me exibir (se ver outros topicos e respondi, vera isto), ja criei at mesmo um framework proprio...eu nao me acho Deus, e muito menos você o eh para me julgar...ok?eu momento disse q você eh burro, apenas disse q você tem pouco conhecimento, e tb em momento algum eu disse q você eh incapaz de saber mais, ou mesmo, saber mais q eu, basta você fazer por onde, como eu fiz...agora vamos parar com a discussao, pq o topico ja foi resolvido... Ok SENIOR... Fim discussão ! Compartilhar este post Link para o post Compartilhar em outros sites