Jump to content


Photo

Consulta No Mysql Concatenando Uma String


  • Faça o login para participar
6 replies to this topic

#1 Wilson R. D. Míccoli

Wilson R. D. Míccoli

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR

Posted 25/03/2010, 04:12

Olá a todos.

Alguém saberia como posso fazer para concatenar o valor de uma váriavel num SELECT?

Quero fazer uma consulta no meu banco, usando o valor do usuário que está atualmente logado.

O código que tentei usar é o a seguir:


// $_SESSION['MM_Username'] é o usuário atualmente logado no meu sistema
$login_usuario = $_SESSION['MM_Username'];
echo $login_usuario;   // Para validar o funcionamento da váriavel

$acessousuario=mysql_query("SELECT acesso_editarpedido FROM funcionario WHERE login = '$login_usuario'");

O echo $login_usuario me retorna corretamente o login do usuário conectado, então até aqui sei que está OK.

Fazendo uma consulta similar direto no PHPMyAdmin, pelo SQL, ele me retorna o valor contido para o usuário; se por exemplo eu especificar o meu login, wilson, ele me retorna que o valor no campo acesso_pedido, para o login wilson, é igual a 1. Se eu colocar um echo $acessousuario no código PHP, ele não me retorna nada na página.

Tentei então trocar a concatenação, usando os seguintes modelos (e nenhum deu certo):

$acessousuario=mysql_query("SELECT acesso_editarpedido FROM funcionario WHERE login = '"& $login_usuario & "'");

$acessousuario=mysql_query("SELECT acesso_editarpedido FROM funcionario WHERE login = '". $login_usuario . "'");

Nenhum destes códigos está me retornando o valor que necessito, enquanto que na consulta pelo PHPMyAdmin, especificando um usuário, funciona. Alguém poderia me orientar como devo proceder nesse caso?

Desde já agradeço.
Abraços

Wilson

#2 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 25/03/2010, 09:38

Oi parceiro, será que o problema não está aqui?

[codebox]$login_usuario = $_SESSION['MM_Username'];[/codebox]

Veja se no final das contas essa sessão não está vindo em branco!

o certo é assim:

$acessousuario = mysql_query("SELECT acesso_editarpedido FROM funcionario WHERE login = '".$_SESSION['MM_Username']."'");

Outra dica... não use login pra fazer ligações em consultas... login pode ser igual pra + de 1 pessoa... use um código único (ID)

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#3 Wilson R. D. Míccoli

Wilson R. D. Míccoli

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR

Posted 26/03/2010, 00:09

Oh Maykel você por aqui cara? Quanto tempo kkkkkkk

Então... joguei um código pra testar se o PHP estava me retornado um valor em branco na sessão... estando logado, ele apresenta o valor na variável:

<?php echo $login_usuario;?>

O curioso é que ele retorna o usuário que está logado. Usando o código que você me passou também não deu certo, vou tentar colocar a query com o nome do banco junto, pra ver se passa. Depois posto a resposta aqui pra dizer se deu certo ou não.

#4 Max William

Max William

    12 Horas

  • Usuários
  • 192 posts
  • Sexo:Masculino
  • Localidade:Maringá - Paraná

Posted 26/03/2010, 08:34

@Maykel Esser,
concordo com a parte de validar id e tals... mas ter dois logins iquais?

:huh: bom, cada caso é um caso.. ñ tenho abto de permitir duplicidade em nome de usuarios
Se eu lhe ajudei ;) Clique para agradecer!

#5 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 26/03/2010, 09:16

pode acontecer... eu deixo aberto até pra facilitar pro usuário... já que não uso login mesmo pra fazer validação, pego mais pelo ID mesmo...

@Will caraca maluco, quanto tempo! hauhuauauha
como que tu ta criando essa sessão aí?

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#6 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 26/03/2010, 11:20

como que tu ta criando essa sessão aí?


Essa é pergunta que dependendo da resposta irá resolver a questão.

Tenho pra mim que esta sessão está sendo criada/gerenciada de forma equivocada :)

(y)Até mais

#7 Wilson R. D. Míccoli

Wilson R. D. Míccoli

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR

Posted 31/03/2010, 05:11

Bom, vamos lá.

Primeiramente quero me desculpar com todos, pois não expliquei detalhadamente o que eu queria, pra fazer tal solicitação. Consegui resolver o problema, mas pra não ficar mais um tópico abandonado, acho que o correto é explicar o que eu queria e como resolvi.

Primeiramente, queria fazer com que o PHP buscasse no MySQL informações sobre direitos de acesso de usuários em áreas de minha aplicação. A aplicação é um gerenciador de pedidos de produto manufaturado, onde o usuário manipula informações de clientes (inclui, edita, exclui) e abre novas ordens de serviço, podendo alterá-las no decorrer do processo da manufatura do produto.

Todavia, uma dificuldade encontrada era que o usuário podia ter acesso a todas as partes da aplicação, desde acessar a base de clientes e ter acesso a informações pessoais destes, até mesmo excluí-los.

Resolvi colocando parametros de acesso na base de dados do MySQL onde está o cadastro do usuário que acessa o sistema. Não sei se foi da maneira mais conveniente, mas foi a saída mais rápida que encontrei, até peço desculpas se por ventura minha solução tiver sido muito "nas coxas".

Criei campos de tabela no MySQL, referente ao acesso. Vou ilustrar com o exemplo dos acessos referente clientes e pedidos.

Campos de tabela: acc_incluicliente, acc_editacliente, acc_excluicliente, acc_incluipedido, acc_editapedido, acc_excluipedido. Todos os campos CHAR, com espaço de 1 caractere apenas

Na autenticação da Session, fiz o PHP jogar um select na tabela de usuários, e autenticar junto com o username, strings para cada acesso permitido ou não:

$LoginRS__query=sprintf("SELECT login, senha, nivel, acc_incluicliente, acc_editacliente, acc_excluicliente, acc_incluipedido, acc_editapedido, acc_excluipedido FROM funcionario WHERE login=%s AND senha=%s",
GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));

  $LoginRS = mysql_query($LoginRS__query, $data) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);

Feita a query, transformo as permissões da tabela em Strings:

  if ($loginFoundUser) {
    $loginAccIncluiCliente = mysql_result($LoginRS,0,'acc_incluicliente');
    $loginAccEditaCliente = mysql_result($LoginRS,0,'acc_editacliente');
    $loginAccExcluiCliente = mysql_result($LoginRS,0,'acc_excluicliente');
    $loginAccIncluiPedido = mysql_result($LoginRS,0,'acc_incluipedido');
    $loginAccEditaPedido = mysql_result($LoginRS,0,'acc_editapedido');
    $loginAccExcluiPedido = mysql_result($LoginRS,0,'acc_excluipedido');

E depois emprego-as...

    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_IncluiCliente'] = $loginAccIncluiCliente;
    $_SESSION['MM_EditaCliente'] = $loginAccEditaCliente;
    $_SESSION['MM_ExcluiCliente'] = $loginAccExcluiCliente;
    $_SESSION['MM_IncluiPedido'] = $loginAccIncluiPedido;
    $_SESSION['MM_EditaPedido'] = $loginAccEditaPedido;
    $_SESSION['MM_ExcluiPedido'] = $loginAccExcluiPedido;

No ínicio de cada página onde queria restringir o acesso, coloquei o seguinte código, de acordo com a situação e a variável (no exemplo estou usando a variável de editar o usuário). A permissão do acesso do usuário no MySQL sempre é igual a valor 1 (caso o campo esteja com valor nulo ou diferente de 1, a permissão é negada.

   $MM_restrictGoTo = "restrito.php";

   if ($_SESSION['MM_EditaUsuario']<>"1") {    // Se o código de acesso for diferente de 1
      header("Location: ". $MM_restrictGoTo);    // Então o acesso é restrito e é bloqueado
   }                                                                // Fim da Condição
      else {                                                      // SENÃO
                                                                    // Não faça nada
   }                                                                // Fim da Condição

Testei e funcionou efetivamente. Lógico, como falei antes e reitero, meus conhecimentos de PHP são extremamente amadores, então peço desculpas aos veteranos caso tenha feito algum tipo de volta absurda pra chegar nesse resultado. De qualquer maneira, agradeço muito a gentileza de todos que colaboraram.

Abraços
Wilson

Só complementando, a última parte onde usuei a variável de editar usuário a mesma não estava declarada na primeira parte da minha explicação, pois estou implementando-a agora.

Abraços




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq