Ir para conteúdo

POWERED BY:

Arquivado

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

regina

Gravar em duas tabelas

Recommended Posts

Bom dia.Estou criando um cadastro de usuários e cheguei na seguinte situação:Tenho um usuário que está fazendo seu cadastro, num determinado momento ele vai cadastrar 2 filhos.Tenho as seguintes tabelas:tb_usuarios

CREATE TABLE `tb_usuarios` (`usuario_id` int(255) NOT NULL auto_increment,`usu_cpf` varchar(14) NOT NULL default '',`usu_nome` varchar(60) NOT NULL default '',`usu_dt_nasc` date NOT NULL default '0000-00-00',`usu_loc_nasc` varchar(60) NOT NULL default '',`usu_nome_pai` varchar(60) NOT NULL default '',`usu_nome_mae` varchar(60) NOT NULL default '',`usu_sexo` enum('feminino','masculino') NOT NULL default 'feminino',...`usu_criacao` datetime NOT NULL default '0000-00-00 00:00:00',`usu_criacao_oper` int(5) NOT NULL default '0',`usu_edicao` datetime NOT NULL default '0000-00-00 00:00:00',`usu_edicao_oper` int(5) NOT NULL default '0',PRIMARY KEY (`usuario_id`,`usu_cpf`)) TYPE=InnoDB COMMENT='Usuários cadastrados' AUTO_INCREMENT=7 ;

tb_dependentes

CREATE TABLE `tb_usu_dependentes` (`dependente_id` int(255) unsigned zerofill NOT NULL auto_increment,`usuario_id` int(255) NOT NULL default '0',`dependente_nome` varchar(50) NOT NULL default '',`dependente_dt_nasc` date NOT NULL default '0000-00-00',`dependente_criacao` datetime NOT NULL default '0000-00-00 00:00:00',`dependente_criacao_oper` int(5) NOT NULL default '0',`dependente_edicao` datetime NOT NULL default '0000-00-00 00:00:00',`dependente_edicao_oper` int(5) NOT NULL default '0',PRIMARY KEY (`dependente_id`,`usuario_id`),KEY `usuario_id` (`usuario_id`),CONSTRAINT `usuario_id` FOREIGN KEY (`usuario_id`) REFERENCES `tb_usuarios` (`usuario_id`)) TYPE=InnoDB PACK_KEYS=0 COMMENT='Dependentes dos usuarios' AUTO_INCREMENT=1 ;

Como eu faço para gravar o usuário que recebe um id autoincrement e na sequencia seus dependentes usando o mesmo id do usuário?Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa usar "controle de trasações".

Pesquisa no Google, por exemplo que você vai achar muita coisa lá.

 

E você pode utilizar a função mysql_insert_id() para pegar o id gerado pelo auto_increment.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada marcio.sfsMe surgiu uma nova questão:como os inputs são gerados via javascritp de acordo com o número de filhos de cada usuário, como eu devo fazer para o php saber quantas vezes tem que inserir estes registros?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto pode ser feito de diversas forma. Vou te mostrar uma que fiz recentemente, para o administrador de um site de Games, em um sistema de banners.Esta tabela server para relacionar o banner (idbanner) às diversas telas (idtela). Neste sistema, o administrador escolhe um banner, e diversas telas. O sql fica assim:

$sql_telas = "INSERT INTO gs_bannerstelas(idbanner, idtela) VALUES ";$array_id_telas = Array();foreach($_POST['idtela'] as $k){ array_push($array_id_telas, "($id, $k)"); // inclui o idtela no array array_id_telas}$sql_telas .= implode(',', $array_id_telas); // depois junto cada idtela, separado por uma vírgula$sql_telas .= ';'; // encerro o sql com ';'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Naum é nada disse, eu só te mostrei um exemplo de como você faz para montar o sql de inserção de dados, sem saber quantos campos tem no formulário.

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.