• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

thinkbrunus

join??

8 mensagens neste tópico

Viva!

Estou com uma dúvida na verificação das permissões de um utilizador, ou seja, tendo em conta que um utilizador poderá ter mais que um tipo de permissões estou a tentar uma querie que apresente os dados do utilizador e verifique as suas permissões.

O que tenho actualmente é a querie que me retorna os dados de determinado utilizador, e quero que apareçam a ou as permissões dos mesmos a fim de guardar numa variável de sessão para poder restringir os acessos a determinadas páginas num site.

Estou a fazer algumas experiências com o join....será que por aqui vou lá?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes usar left joins, assim se não tiver permissão, o campo fica a null.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou aqui com alguma dificuldade em implementar o join, será que poderiam dar uma vista de olhos a ver o que está a falhar...

SELECT posto.sigla AS posto,classe.sigla AS classe,apelido,divisao.sigla AS divisao,detalhe.nome AS detalhe,nivelacesso_detalhe.id_nivelacesso
FROM utilizador,posto,classe,detalhe,divisao
WHERE posto.id_posto=utilizador.id_posto
AND classe.id_classe=utilizador.id_classe AND utilizador.id_detalhe=detalhe.id_detalhe
AND detalhe.id_divisao=divisao.id_divisao
JOIN nivelacesso_detalhe ON detalhe.id_detalhe=nivelacesso_detalhe.id_detalhe

É de realçar que um utilizador poderá ter um ou mais tipos de permissão...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim vais obter uma linha por cada combinação de utilizador - permissão.

Não sei se é isso que queres...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, o que pretendo é obter os dados de determinado utilizador e seus privilégios de acesso...

Não sei se me estou a explicar bem, por exemplo:

SELECT posto.sigla AS posto,classe.sigla AS classe,apelido,divisao.sigla AS divisao,detalhe.nome AS detalhe,nivelacesso_detalhe.id_nivelacesso
		FROM utilizador,posto,classe,detalhe,divisao,nivelacesso_detalhe
		WHERE posto.id_posto=utilizador.id_posto
		AND classe.id_classe=utilizador.id_classe AND utilizador.id_detalhe=detalhe.id_detalhe
		AND detalhe.id_divisao=divisao.id_divisao AND detalhe.id_detalhe=nivelacesso_detalhe.id_detalhe AND login ="xxx"

Esta querie dá-me as permissões do utilizador em duas linhas...ora o que pretendo é salvar estas duas linhas numa variável de sessão para mais tarde verificar se o utilizador pode aceder a determinada secção ou não.

Começo a ver que isto ás tantas na tem nada a haver com SQL e sim com manipulação de dados no PHP...

Qual a tua opinião?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exacto, dá-te uma linha por permissão, tal como te havia dito no post acima.

O que necessitas é de converter linhas em colunas, mas não consegues fazer isso de forma dinâmica numa query SQL.

Tal como tens a query, podes percorrer, no PHP, todas as linhas até obteres um novo utilizador, todas essas linhas percorridas vais coleccionando as várias permissões do utilizador.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Precisas mesmo de guardar esses dados todos? Não era melhor pedires só o nivelacesso_detalhe.id_nivelacesso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desde já quero agradecer pelos vossos conselhos!

Exacto, dá-te uma linha por permissão, tal como te havia dito no post acima.

O que necessitas é de converter linhas em colunas, mas não consegues fazer isso de forma dinâmica numa query SQL.

Tal como tens a query, podes percorrer, no PHP, todas as linhas até obteres um novo utilizador, todas essas linhas percorridas vais coleccionando as várias permissões do utilizador.

Estava com essa ideia, mas com algumas dúvidas...acho que terei mesmo de percorrer todas as linhas e guardar as várias permissões do utilizador.

Precisas mesmo de guardar esses dados todos? Não era melhor pedires só o nivelacesso_detalhe.id_nivelacesso?

Sim dava jeito, visto que é um sistema de login. Desta forma numa querie e apenas neste processo recolho toda a informação necessária sobre o utilizador.

Achas má ideia?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora