Ir para conteúdo

POWERED BY:

Arquivado

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

Danv

Problemão...

Recommended Posts

Ola pessoal,

 

Desculpe se o titulo não foi muito específico.... mas ta complicado até de resumir eheheh.

 

Estou com um problemão, é o seguinte, fiz um sisteminha de cadastro de funcionários (mysql), funciona assim:

 

O funcionário é cadastrado através de um formulário, as informações basicas do funcionário fica na tabela [funcionarios]

 

-----------------------------------------------------------------

[table funcionarios]

 

id

nome

rg

cpf

cpts

dnasc

sexo

id_atribuicao

observacoes

-----------------------------------------------------------------

 

Além desta ainda há estas outras tabelas de informações adicinais:

 

-----------------------------------------------------------------

[table atribuicoes]

 

id

id_func

data1

data2

setor

cargo

id_funcao

-----------------------------------------------------------------

[table funcoes]

 

id

funcao

descricao

-----------------------------------------------------------------

 

O objetivo é cadastrar diversas funcoes, e quando for cadastrar um funcionário será necessário apenas selecionar a funcao num menu <select>, para cadastrar tudo bem, mas o problema esta em exibir estas informações.

 

Estou com problemas para fazer a relação entre as tabelas.... to quebrando a cabeça mas nao estou conseguindo...

 

Um funcionario pode ter mais de uma atribuicao e cada atribuicao pode ter relacao com qualquer funcao.

Faço a seguinte relação.

 

[table funcionarios]                                 [table atribuicao]                                                                 idid --------------------------------------->>>>> id_funcnome                                                        data1rg                                                             data2cpf                                                            setorcpts                                                          cargo                                            [table funcoes]dnasc                                                       id_funcao--------------------->>>>> id sexo                                                                                                              funcaoid_atribuicao                                                                                                 descricaoobservacoes

Beleza, até ai normal, assim faço um recort set buscando todas as atribuições deste funcionario;

 

//RS da tabela [atribuicao]$idfuncionario = "0";if (isset($_GET['idf'])) {  $$idfuncionario = (get_magic_quotes_gpc()) ? $_GET['idf'] : addslashes($_GET['idf']);}mysql_select_db($database_conn, $conn);$query_rsAtribuicao = sprintf("SELECT * FROM atribuicao WHERE id_func=%s", $idfuncionario);$rsAtribuicao = mysql_query($query_rsAtribuicao, $conn) or die(mysql_error());$row_rsAtribuicao = mysql_fetch_assoc($rsAtribuicao);$totalRows_rsAtribuicao = mysql_num_rows($rsAtribuicao);

Beleza, é listado apenas as atribuicoes deste funcionario, faço um do...while e listo elas, por ordem de ID por exemplo. Agora preciso listar apenas as funçoes de cada uma das atribuicoes listadas.

 

Esse é o problema, não estou conseguindo por que a tabela [funcoes] nao pode ter referencia com a tabela [atribuicao], só ao contrario ([atribuicao] >> [funcoes]) atraves do 'id_funcao'.

 

Supondo que um funcionario ([id=1]) tem 2 atribuicoes, relacionadas com 2 funcoes diferentes.

 

[table atribuicoes]id             id_func       id_funcao1              2                22              2                3
beleza, há 5 funcoes cadastradas:

 

[table funcoes]id          funcao        descricao12345

Como faço para listas apenas as funcoes referentes a cadas atribuição?

 

Não estou conseguido... :huh:

 

No recort set das funcoes como posso adicionar um filtro se a tabela [funcoes] nao tem relaçao nem com a tabela [funcionarios] nem com a [atribuicoes]... fods.

 

No momento de exibir as atribuições posso aproveitar o do...while para fazer um recort set para cada atribuição listada.... mas isso parece horrivel... deve haver um maneiro melhor...

 

Imagina.... vou ter que fazer ate um while para o 'mysql_free_result' no final da pagina..... meu deus.

:blink:

 

Se alguem souber de algo que funcione parecido, ou tiver alguma dica que ajude, por favor eheheh, ta fods.

 

Valeu pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema aí está na estrutura mesmona primeira tabela você deveria ter criado o campo id_funcao para poder fazer a ligação

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas a função não pode estar relacionada com o funcionario, pois ela servira para qualquer funcionario,

se eu colocasse um campo na primeira tabela, como um funcionario poderia ter sua função anterior e a atual?

dai não daria....

 

andei pesquisando algo e encontrei algumas coisas sobre banco de dados relacional.... bom (desculpe minha ignorancia se estiver enganado) acho que o mySQL é não é?

 

Bom, vou testar um select desse tipo...

 

"SELECT FUNCOES.funcao, FUNCOES.descricao, LOTAC_ATRIB.id_funcao FROM FUNCOES, LOTAC_ATRIB WHERE FUNCOES.id = LOTAC_ATRIB.id"

Não tenho certeza se vai funcionar, mas qualquer novidade volto a postar.

 

Caso alguem saiba de algo, por favor, vai ajudar bastante....

 

valeu pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora que me toquei entendivocê pode deixar como está a estrutura das tabelasna tabela de atribuições delete o campo "id_func"e crie um campo varchar(255) ou tipo mediumtext e nomeie como "funcoes"nesse campo você coloca os ids das funções do funcionário separados por um caracter identificadortiposuponhamos que tenha 3 funcoesentão gravaria assim1,2,3na hora de exibir as funçoes basta ler esse campo e usar o explode()

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.