alexclima Postado Agosto 22, 2010 Denunciar Share Postado Agosto 22, 2010 Olá pessoal, sou novato no forum e tambem em mysql.Tenho a seguinte duvida: Como faço para inserir informações de um formulario em duas tabelas relacionadas?Minhas tabelas de estudo são estas:-- ------------------------------------------------------- Table `estudo`.`Pessoa`-- ----------------------------------------------------- `idPessoa` INT NOT NULL AUTO_INCREMENT , `nome_pessoa` VARCHAR(45) NULL , `senha_pessoa` VARCHAR(45) NULL , `cpf_pessoa` VARCHAR(45) NULL , `rg_pessoa` VARCHAR(45) NULL , PRIMARY KEY (`idPessoa`) )-- ------------------------------------------------------- Table `estudo`.`Certificados`-- ----------------------------------------------------- `idCertificados` INT NOT NULL AUTO_INCREMENT , `nome_certificado` VARCHAR(45) NULL , `lugar_certificado` VARCHAR(45) NULL , `Pessoa_idPessoa` INT NOT NULL , PRIMARY KEY (`idCertificados`) , INDEX `fk_Certificados_Pessoa` (`Pessoa_idPessoa` ASC) , CONSTRAINT `fk_Certificados_Pessoa` FOREIGN KEY (`Pessoa_idPessoa` ) REFERENCES `estudo`.`Pessoa` (`idPessoa` ) ON DELETE NO ACTION ON UPDATE NO ACTION) Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Agosto 23, 2010 Denunciar Share Postado Agosto 23, 2010 Olá pessoal, sou novato no forum e tambem em mysql.Tenho a seguinte duvida: Como faço para inserir informações de um formulario em duas tabelas relacionadas?Oi, 'alexclima'São dois inserts distintos. Primeiro insira os dados na tabela pai (Pessoa), depois insira os dados na tabela filha (Certificados). Link para o comentário Compartilhar em outros sites More sharing options...
0 alexclima Postado Agosto 24, 2010 Autor Denunciar Share Postado Agosto 24, 2010 Olá pessoal, sou novato no forum e tambem em mysql.Tenho a seguinte duvida: Como faço para inserir informações de um formulario em duas tabelas relacionadas?Oi, 'alexclima'São dois inserts distintos. Primeiro insira os dados na tabela pai (Pessoa), depois insira os dados na tabela filha (Certificados).Olá Denys, bom são dois inserts destintos mas como fazer para que o segundo insert na tabela filho, insira os dados usando o mesmo id da tabela pai?coloquei aqui meu codigo o segundo insert não adiciona os dados na outra tabela:<?php $operacao = $_POST["operacao"]; include "conecta_mysql.inc"; if ($operacao==incluir") { $nome = $_POST["nome]; $senha = $_POST["senha"]; $cpf = $_POST["cpf"]; $rg = $_POST["rg"]; $dia = $_POST["dia"]; $mes = $_POST["mes"]; $ano = $_POST["ano"]; $nascimento = $ano . "-". $mes . "-" . $dia; if($nascimento==$ano ."-02-31"){ echo "Data não existe!"; echo "<p align=\"center\"><a href=\"pagina_inicial.php\">Voltar</a></p>"; exit; } $certificado = $_POST["certificado"]; $local = $_POST["local"]; $sql = "INSERT INTO pessoa (nome_pessoa, senha_pessoa, cpf_pessoa, rg_pessoa, Dt_Nascimento_pessoa) VALUES"; $sql .= "('$nome','$senha',$cpf,$rg,'$nascimento')"; $sql .= "INSERT INTO certificados (nome_certificado, lugar_certificado) VALUES"; $sql .= "(LAST_INSERT_ID(), '$certificado','$local')"; $resultado = mysql_query ($sql); echo "Cliente incluído com sucesso!"; echo "<p align=\"center\"><a href=\"pagina_inicial.php\">Voltar</a></p>"; } mysql_close($conexao);?> Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Agosto 24, 2010 Denunciar Share Postado Agosto 24, 2010 Oi, 'alexclima' Este é um exemplo em SQL de como funciona este tipo de insert.SET AUTOCOMMIT=0; START TRANSACTION; INSERT INTO pessoa(nome_pessoa, senha_pessoa, cpf_pessoa, rg_pessoa) VALUES('teste1', 'senha', '123', '456'); INSERT INTO Certificados(nome_certificado, lugar_certificado, idPessoa) values('cert1', 'rj', (select LAST_INSERT_ID())); COMMIT; SET AUTOCOMMIT=1; Link para o comentário Compartilhar em outros sites More sharing options...
0 alexclima Postado Agosto 24, 2010 Autor Denunciar Share Postado Agosto 24, 2010 Oi, 'alexclima' Este é um exemplo em SQL de como funciona este tipo de insert.SET AUTOCOMMIT=0; START TRANSACTION; INSERT INTO pessoa(nome_pessoa, senha_pessoa, cpf_pessoa, rg_pessoa) VALUES('teste1', 'senha', '123', '456'); INSERT INTO Certificados(nome_certificado, lugar_certificado, idPessoa) values('cert1', 'rj', (select LAST_INSERT_ID())); COMMIT; SET AUTOCOMMIT=1;Obrigado Denis vou tentar descobrir como colocar isso em PHP se conseguir coloco o codigo aqui para ajudar aos proximos. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Agosto 24, 2010 Denunciar Share Postado Agosto 24, 2010 Obrigado Denis vou tentar descobrir como colocar isso em PHP se conseguir coloco o codigo aqui para ajudar aos proximos.Oi, Alex!Se você tiver dificuldade crie uma storage procedure, passe os valores em values como parametros e execute a operação SQL normalmente. Link para o comentário Compartilhar em outros sites More sharing options...
0 alexclima Postado Setembro 3, 2010 Autor Denunciar Share Postado Setembro 3, 2010 Olá Denis, resolvi o problema, realmente o codigo que voce passou estava correto so que eu retirei o select do last_insert_id e funcionou perfeitamente. Muito obrigado. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
alexclima
Olá pessoal, sou novato no forum e tambem em mysql.
Tenho a seguinte duvida: Como faço para inserir informações de um formulario em duas tabelas relacionadas?
Minhas tabelas de estudo são estas:
-- -----------------------------------------------------
-- Table `estudo`.`Pessoa`
-- -----------------------------------------------------
`idPessoa` INT NOT NULL AUTO_INCREMENT ,
`nome_pessoa` VARCHAR(45) NULL ,
`senha_pessoa` VARCHAR(45) NULL ,
`cpf_pessoa` VARCHAR(45) NULL ,
`rg_pessoa` VARCHAR(45) NULL ,
PRIMARY KEY (`idPessoa`) )
-- -----------------------------------------------------
-- Table `estudo`.`Certificados`
-- -----------------------------------------------------
`idCertificados` INT NOT NULL AUTO_INCREMENT ,
`nome_certificado` VARCHAR(45) NULL ,
`lugar_certificado` VARCHAR(45) NULL ,
`Pessoa_idPessoa` INT NOT NULL ,
PRIMARY KEY (`idCertificados`) ,
INDEX `fk_Certificados_Pessoa` (`Pessoa_idPessoa` ASC) ,
CONSTRAINT `fk_Certificados_Pessoa`
FOREIGN KEY (`Pessoa_idPessoa` )
REFERENCES `estudo`.`Pessoa` (`idPessoa` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados