Ir para conteúdo

POWERED BY:

Arquivado

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

Pacificosc

Vincular o funcionário a empresa

Recommended Posts

Olá pessoal!

Tenho duas tabelas, uma funcionário e outra empresa.

 

Campos funcionários:

- id_func - int

- nome - varchar

- cargo - varchar

- nome_user - varchar

- senha - varchar

- ativado - enum ('0','1')

- data_cadastro - datetime

- id_emp - int (este campo foi criado para fazer o relacionamento entre as duas tabelas)

 

Campos Empresa:

- id_emp

- fantasia

- email

- celular

- senha

- data_cadastro

 

Bom, como faço no PHP quando estiver no cadastro da empresa, incluir o funcionário, sendo que caso eu faça o cadastro de outra empresa, associar o funcionário para esta outra empresa?

 

Exemplo: no meu site, o empresário faz o cadastro da empresa dele, após o cadastro é enviado para o e-mail dele uma confirmação, onde depois ele irá fazer o login. Após fazer o login, ele vai inserir os funcionários da empresa dele.

Esta é a minha pergunta, como fazer esta associação?

 

Obrigado!

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem como vc falou. Os funcionários não são cadastrados no momento em que a empresa é. Primeiro permita o cadastro da empresa e na página da empresa, permita a inserção de funcionários.

Após o empresário logar, crie um CRUD de funcionários. Ele cadastra as informações do funcionário ou só associa funcionários a empresa dele? Se um funcionário somente puder estar ligado a uma empresa, ta tudo certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problemas rsrs...

Como vc disse, vc tem um campo id_emp na tabela usuarios. Então, basta realizar uma consulta nessa tabela, pesquisando pelo id da empresa logada. Se usar sessions, crie uma variavel $_SESSION que receba também o id da empresa (da tabela Empresa).

 

sua consulta para os usuários da empresa logada ficaria mais ou menos assim:

 

SELECT * FROM tabelaUsuarios, tabelaEmpresa WHERE tabelaUsuario.emp_id = tabelaEmpresa.id AND tabelaEmpresa.id = $idDoSession;

 

Mas não carregue todos os dados da tabela ("SELECT * FROM"), apenas os dados que forem necessários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Noite Silva!

 

Quando eu tento fazer o cadastro, aparece a seguinte mensagem:

Cannot add or update a child row: a foreign key constraint fails (`meu_banco`.`usuarios`, CONSTRAINT `fk_empresa` FOREIGN KEY (`id_emp`) REFERENCES `empresa` (`id_emp`) ON DELETE NO ACTION ON UPDATE NO ACTION)

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta usando UPDATE? Ele ta dizendo que você não pode atualizar o campo nem excluir, pois existem dados vinculados a esta chave em outra tabela..

 

 

A ideia de ligar as tabelas é justamente fazer com que o SGBD provoque este erro... Assim evita que um dado que fornece informações a outros seja excluido ou atualizado caso possua "filhos" ... é algo relacionado a relação ou restrição de cascata .. não lembro o nome.

 

Imagina que se ele possuir muitos usuários com a chave estrangeira de uma empresa e, por algum motivo ele excluir a empresa futuramente, estes usuários terão um dado desconhecido (a chave de uma empresa que foi excluida). Por isso é bom criar FK's

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, não sei como é a regra de negócio.

Mas se o cadastro é feito de maneira individual, ou seja, primeiro cadastra a empresa e depois o funcinário, então torna-se necessária a criação de mais uma tabela, onde receberá os dados da tabela 1 e tabela 2, mais o que for necessário, sendo, portanto, uma tabela que funciona como um Elo.

 

tipo:

 

tabela1

tabela2

 

tabela1_2

fk_tabela1
fk_tabela2

 

ou vc pode fazer o seguinte, na hora de cadastrar o usuário, poderia existir uma combo onde apareceriam as empresas e assim vincular o que precisar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carlos, primeiro cadastra a empresa e depois o funcionário. Não fica legal fazer usando um combo, pois, no momento que a pessoa entrar com o usuário e a senha, já vincula com a empresa. E depois, cadastra o funcionário.

 

Tem como você fazer um exemplo usando as minhas tabelas conforme descrito acima? Eu agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem sim..mas preciso entender a regra.

Porque... se eu pegar a tua frase, posso entender diferente do teu propósito.

 

por exemplo:

 

 

 

"Carlos,

"primeiro cadastra a empresa" -> tabela_empresa

e depois o funcionário -> tabela_funcionario

Agora, aqui que não entendi:

"no momento que a pessoa entrar com o usuário e a senha, já vincula com a empresa. E depois, cadastra o funcionário".

Como vou vincular se não estou dizendo a referência?

Tipo, posso utilizar um campo oculto e quando a pessoa logar, ela mesma daria um UPDATE ao completar o cadasatro.... alguma coisa assim...

mas, portanto, via de resolução simples, da simples, da simples..

poderia ser...

Campos funcionários:

- id_func - int

- nome - varchar

- cargo - varchar

- nome_user - varchar

- senha - varchar

- ativado - enum ('0','1')

- data_cadastro - datetime

Campos Empresa:

- id_emp

- fantasia

- email

- celular

- senha

- data_cadastro

Poderia criar uma terceria tabela que fará o relacionamento:

tabela_unir_func_empre

id_tabela_unir

fk_funcionario

fk_empresa

Se tu puder explicar um pouco mais. Hoje, o cérebro funciona mais lento...rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carlos, onde eu disse: "no momento que a pessoa entrar com o usuário e a senha, já vincula com a empresa. E depois, cadastra o funcionário".

 

É o seguinte: no meu site quem for fazer o cadastro da empresa, ao clicar "Salvar". Vai ser disparado um e-mail para quem cadastrou com os seguintes campos:

e-mail cadastrado

senha criptografada MD5.

Mais um link de login para área restrita, onde ele vai acessar e fazer o cadastro dos funcionários

 

Gostei da sua idéia sobre a terceira tabela.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pacificosc, vi tua mensagem agora.

Mas tem como sim.

Qual parte tu tá confuso??

 

 

Depois de criadas as tabelas, você vai relacioná-las a tabela associativa.

 

OBS: Lembrando que essa é uma forma simples de fazer. Não é gambiarra, mas resolve. Lembrado que existem outros colegas que sabem fazer isso muito bem. Mas a gente vira como pode, não é verdade?

 

Onde que você precisa de ajuda?

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.