Consulta (grid) filtrada por variável de sessão

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?

Agradeço a ajuda.

SELECT * FROM tb_noticias
WHERE cd_usuario = [cd_usuario]

Desculpem por ressuscitar esse post antigo.

Preciso de algo parecido.
Estou colocando na clausula where usuario=’[usr_name]’
Aparece somente o que aquele usuário fez, ótimo.

Porém eu queria que o gerente visualizasse todos os registros.

Pensei em criar um campo na tabela para identificar o nível do usuário, mas não sei como por isso em prática.

Posso colocar if na clausula where? Se não é lá onde entra isso?

Desculpem a falta de conhecimento, mas estou progredindo.
Abraço a todos.

Suponhamos que você coloque uma flag supervisor na tabela de usuários ou então se estiver usando o esquema padrão do SC existe uma flag Adminstrador

no seu select coloque:

SELECT * FROM tb_noticias
WHERE cd_usuario = [cd_usuario] or [variável da flag gerente] = 'condição true que você definir'

Explicando melhor como eu uso, no meu caso se o cara não é administrador ele só visualiza os processos dele:

SELECT * FROM vistorias
WHERE login = '[usr_login]' or '[priv_admin]' = 'Y'

Espero que ajude!

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?

Obrigado pela ajuda.
Abraço!

Não seria com AND?

SELECT * FROM vistorias
WHERE login = '[usr_login]' AND '[priv_admin]' = 'Y'

Amigos com certeza estou fazendo algo errado.

Isso é pra por na Cláusula Where??

Porque parece estar certinho o comando, tanto com AND ou OR.
Se eu colocar:

SELECT * FROM eventos
WHERE usuario = ‘[usr_name]’ AND ‘[priv_admin]’ = ‘Y’

Não aparece NADA!

Agora se eu por somente

usuario = ‘[usr_name]’ (E SÓ ISSO)
Ai sim aparece os registros daquele usuario.

Tente assim:

SELECT * FROM vistorias
WHERE login = '[usr_login]' AND [priv_admin] = 'Y'

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’

Bem lembrado duas vezes, é que eu alterei essa variável no modulo padrão pra trazer o que esta gravado no banco Y ou N.

Valew!!

Desculpem a insistência, vocês estão me ajudando muito, mas ainda não funciona.

Coloquei conforme me derama dica:
(login = ‘[usr_login]’ OR ‘[priv_admin]’ = ‘Y’)

Está funcionando, porém mesmo quando faço login como admin eu só vejo o que postei como admin e não a postagem de todos como deveria.

login = ‘[usr_login]’ OR priv_admin = ‘Y’

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;

Não esqueça de deixar o seu SQL sem WHERE

Abs

Ricardo Zorzella