Danv 0 Denunciar post Postado Março 11, 2004 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 3beleza, 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
wxkj 0 Denunciar post Postado Março 12, 2004 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
Danv 0 Denunciar post Postado Março 12, 2004 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
wxkj 0 Denunciar post Postado Março 12, 2004 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