Inserir id em duas tabelas diferentes

Enviada por Thiago Henrique 
Thiago Henrique
Inserir id em duas tabelas diferentes
18 de April de 2012 às 09:18AM
Galera estou com o seguinte problema:
Tenho uma tabela "nao_conformidade"

nao_conformidade (
id,
responsavel,
data
)

E uma tebela "acao_corretiva"
acao_corretiva (
id,
id_conformidade,
acao_tomada
)


Eu quero inserir os dados nas duas tabelas através do mesmo formulario, porém preciso preencher o campo "id_conformidade" com o id da tabela nao_conformidade, o id da tabela nao_conformidade precisa ser auto_increment.
Ja me recomendaram a usar o LAST_INSERT_ID() porém não atende meu caso pois outro usuario pode editar o documento e inserir uma nova acao corretiva na tabela nao_conformidade.
Como fica meu insert nessa situação?

Este é como está agora:

if(isset($_POST['cmdinserir']))
{

$responsavel = $_POST['responsavel'];
$data = $_POST['data'];


if($responsavel == "")
{
echo "<script>alert('O campo responsavel deve ser preenchido!'); window.location='inserir.php?resposavel=$responsavel'</script>";
}else

{
$sql_insert = "insert into nao_conformidade(responsavel, data) values('$responsavel', '$data');

$retorno = mysql_query($sql_insert);
}
if($retorno)
{
echo "<script>alert('Cadastro realizado com sucesso!'); window.location='inserir.php' </script>";
}else
{
echo "Não foi possivel concluir o cadastro!";
echo mysql_error();
}
}


Agradeço desde já!
Lucas Tiago de Moraes
Re: Inserir id em duas tabelas diferentes
18 de April de 2012 às 06:34PM
$selecionar = mysql_query("SELECT id FROM nao_conformidade WHERE responsavel = '$responsavel' AND data = '$data'");

echo mysql_result($selecionar, 0);

Falou?
Thiago Henrique
Re: Inserir id em duas tabelas diferentes
19 de April de 2012 às 07:28AM
Vlw a ajuda, mas não é isso, vou explicar melhor

if(isset($_POST['cmdinserir']))
{
/*Tabela 01*/
$responsavel = $_POST['responsavel'];
$data_abertura = $_POST['data_abertura'];

/*Tabela 02*/
$responsavel_acao = $_POST['responsavel_acao'];

if($responsavel == "")
{
echo "<script>alert('O campo responsavel deve ser preenchido!'); window.location='inserir.php?resposavel=$responsavel'</script>";
}else

{
/* aqui é o insert na tabela cadastro_nc o id está em auto_increment entao não aparece aqui*/
$sql_insert = "insert into cadastro_nc(responsavel, data_abertura)
values('$responsavel', '$data_abertura');";
$retorno = mysql_query($sql_insert);

/* O problema é aqui, quero pegar o id da inserção acima e adicionar no id_nc da tabela acao_corretiva*/
$sql_insert = "insert into acao_corretiva(id_nc, responsavel_acao)
values('$id_nc', '$responsavel_acao');";
if($retorno)
{
echo "<script>alert('Cadastro realizado com sucesso!'); window.location='inserir.php' </script>";
}else
{
echo "Não foi possivel concluir o cadastro!";
echo mysql_error();
}
Deu para entender?
Quero pegar o id do cadastro que irei inserir e logo em seguida copiar ele para a outra tabela.

Por que preciso fazer isso?
Porque essa tabela cadastro_nc recebe varios valores incluindo o acao_corretiva, porém a ação corretiva pode ser feita em varios passos por pessoas diferentes, ou seja, posso ter N ações vinculadas a mesma cadastro_nc, preciso fazer isso usando apenas um botão e com um cadastro inserir os dados nas tabelas.
Se alguem tiver outra solução além dessa para esse problema agredeço muito!
José Ângelo Lefundes Coelho
Re: Inserir id em duas tabelas diferentes
19 de April de 2012 às 07:32PM
Fera vc deve saber o id do ultimo registro inserido do seu primeiro insert na tabela cadastro_nc, para isso depois da query desse insert insira isso $cadastroId = mysql_insert_id();

e depois insira no proximo insert na coluna deseja o $cadastroId.
Thiago Henrique
Re: Inserir id em duas tabelas diferentes
20 de April de 2012 às 06:25AM
Entendi, foi isso mesmo que eu fiz e funcionou, mas ainda tenho que testar quando for fazer um update pra ver se ficar 100%.Qualquer coisa volto a postar aqui.

Muito obrigado pela ajuda pessoal!
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.