Olá amigos. Estou tentando alterar o SQL da minha consulta, para que ela ja abra filtrada pelo código do usuário. Assim ele só veria os registros feitos por ele.
Como eu posso colocar na cláusula WHERE a minha variável $_SESSION[‘cd_usuario’] ?
Não sei a sintaxe
SELECT * FROM tb_noticias
WHERE cd_usuario = COMO_INFORMAR_A_VARIÁVEL_AQUI?
Saulo boa noite.
Obrigado pela ajuda, mas devo estar errando em algo básico.
Na minha tabela de eventos eu tenho um campo chamado “usuario”.
Como eu estava informando antes colocar usuario=’[usr_name]’ na clausula where está funcionando.
Mas seguindo sua instrução não funciona, simplesmente não aparece nada.
Coloquei o codigo abaixo:
SELECT * FROM eventos
WHERE usuario = ‘[usr_name]’ or ‘[priv_admin]’ = ‘Y’
Fazendo isso qualquer usuário sendo admin ou não, não vê nada.
Tem alguma detalhe que estou esquecendo?
Amigo, vc está usando o módulo de segurança nativo do sc?
O campo login da tabela vistorias armazena usr_login ou usr_name???
Quando a consulta estiver aberta, vá no SC, menu Visualização/Dados em seção e tente localizar a variável [priv_admin] pra ver se ela está declarada.
O webhelp tá cheio de exemplos, o forum tb.
A variável [priv_admin] esta preenchida com valor Y ou N? Essa também seria uma variável de sessão então seria bom você testa-la antes. Outra coisa na cláusula é a condição OR mesmo, trazer os registros se for o usuário tal ou se [priv_admin] = ‘Y’, note que vc esta testando uma variável php dentro da query.
Complementando tudo o que o pessoal falou , tenha cuidado ao usar OR sempre que voce tiver um OR feche ele entre parentesis (), ficando assim (login = ‘[usr_login]’ OR [priv_admin] = ‘Y’), pois pode gerar problemas por exemplo no QuickSearch onde o SC adiciona o AND y si você na o tiver fechado o seu OR a consulta na recuperara nada.
Apenas para aclara .
Ah antes que esqueça creio que o valor de [priv_admin] não eh ‘Y’ y sim ‘1’
Estou considerando que a variável global [priv_admin] é a que indica se o usuário tem privilégio de “Gerência”
Neste seu caso você tem que mexer no where no onScriptinit e não no SQL.
Evento onScriptinit:
if([priv_admin]==“Y”):
$where = " TRUE"; // Lê todos os reigstros
else:
$where = " usuario = ‘[usr_name]’"; // Lê apenas registros de um determinado usuário
endif;
if (empty({sc_where_atual})): // Teste caso vc esteja utilizando filtro na sua aplicação de consulta
sc_select_where(add) = " where ".$where;
else:
sc_select_where(add) = " AND ".$where;
endif;