Ir para conteúdo

POWERED BY:

Arquivado

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

Alex Martins

Formulário enviar dados para 2 tabelas relacionadas (mysql)

Recommended Posts

Olá pessoal,

 

Depois de muito pesquisar no GOOGLE não consegui resolver meu problema e agora peço a ajuda de vocês.

 

Tenho um formulário e desejo passar esses dados para duas tabelas diferentes e relacionadas. Porque é um cadastro de alunos com mais de 20 campos e gostaria de deixar mais organizado o banco de dados MYSQL, desmembrando através de tabelas e o cadastro seria feito de uma vez através do formulário.

 

Consegui passar através do código abaixo:

 

CODE

//Pegando os dados para gravar na 1ª tabela

$x = mysql_query("INSERT INTO tb_principal (nome, nascimento, sexo, cor, endereco, numero, bairro, cidade, estado, cep, observacoes, dataehora) VALUES ('$nome', '$nascimento', '$sexo', '$cor', '$endereco', '$numero', '$bairro', '$cidade', '$estado', '$cep', '$observacoes', '$dataehora')");//acabou de inicia a variavel x q insere os valores no db

if($x){echo "o cadastro foi feito com sucesso<br><br>";// verificamos se os dados doi inserido se for ele executa o echo

}else{

echo"o cadastro nao pode ser efetuado<br><br>";

}//se o arquivo nao for inserido ele execura o else

 

//Pegando os dados para gravar na 2ª tabela

$x = mysql_query("INSERT INTO tb_contato (mae, pai, telefone, celular, email) VALUES ('$mae', '$pai', '$telefone', '$celular', '$email')");//acabou de inicia a variavel x q insere os valores no db

if($x){echo "o cadastro foi feito com sucesso";// verificamos se os dados doi inserido se for ele executa o echo

}else{

echo"o cadastro nao pode ser efetuado";

}//se o arquivo nao for inserido ele execura o else*/

 

O código do banco de dados é este, fiz com a ajuda do DBDesigner:

 

CODE
CREATE TABLE tb_contato (

id_contato INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

tb_principal_id_principal INTEGER UNSIGNED NOT NULL,

mae VARCHAR(255) NULL,

pai VARCHAR(255) NULL,

telefone VARCHAR(20) NULL,

celular VARCHAR(20) NULL,

email VARCHAR(45) NULL,

PRIMARY KEY(id_contato, tb_principal_id_principal),

INDEX tb_contato_FKIndex1(tb_principal_id_principal)

)

TYPE=InnoDB;

 

CREATE TABLE tb_principal (

id_principal INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

nome VARCHAR(45) NULL,

nascimento DATE NULL,

sexo VARCHAR(20) NULL,

cor VARCHAR(20) NULL,

endereco VARCHAR(255) NULL,

numero INTEGER UNSIGNED NULL,

bairro VARCHAR(20) NULL,

cidade VARCHAR(20) NULL,

estado VARCHAR(20) NULL,

cep VARCHAR(20) NULL,

observacoes VARCHAR(255) NULL,

dataehora VARCHAR(255) NULL,

PRIMARY KEY(id_principal)

)

TYPE=InnoDB;

 

Percebam que a idéia seria jogar a id_principal (tabela 1) no tb_principal_id_principal (tabela 2).

 

Espero que esteja bem explicado para que possam me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Alex, não entendi muito bem seu problema, mas seria isso?

 

// 1º INSERT

$query = "INSERT INTO tb_principal SET nome='$nome'...";

$result = mysql_query($query);

// Obtendo o ID que o útlimo INSERT gerou

$idInsert = mysql_insert_id();

 

// 2º INSERT

$query = "INSERT INTO tb_contato SET tb_principal_id_principal = '$idInsert', mae = '$mae'...

 

Espero ter ajudado!

Falou!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O objeto das 2 tabelas é o mesmo, se referem a uma pessoa ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O objeto das 2 tabelas é o mesmo, se referem a uma pessoa ?

Olá amigos,

 

'Marcio' realmente refere-se a uma pessoa. E com relação a ajuda do 'anticHxCx' fico muito agradecido, mas existe outra forma do próprio banco de dados fazer esse trabalho sem termos de receber e enviar a informação para o banco?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos,

 

E com relação a ajuda do 'anticHxCx' fico muito agradecido, mas existe outra forma do próprio banco de dados fazer esse trabalho sem termos de receber e enviar a informação para o banco?

Opa Alex, essa informação já não sei. No caso você mandaria todos os dados no mesmo INSERT e a base dividiria? Ou Mandaria o 1º INSERT e ao inserir a base ja guardava o ID na outra tabela? Acho que nenhuma das opções seriam possiveis.

 

Att.

Falou!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa tudo na mesma tabela, é mais correto.

 

Quebrar informações de uma entidade só é correto para fins de normalização.

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.