changeman 0 Denunciar post Postado Setembro 10, 2010 Boa tarde pessoal. Esse é o meu primeiro post, e desejo aqui ainda postar muitas coisas e ajudar a galera também! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Bom é o seguinte. Estou construindo uma página em PHP que tem um banco de dados "MeuBD" com duas tabelas: usuario --> $id, $nome, $senha, $departamento. produto --> $id, $nome, $tipo, $departamento, $local. O que não estou conseguindo é comparar os dois campos 'departamento' das duas tabelas desse banco. A finalidade é listar todos os produtos(isso já está ok) e comparar se quem está logado tem o mesmo atributo do produto para editar ou excluir. Desta forma se o conteúdo do $departamento for igual nas duas tabelas, ele mostra o um link edit. Se não, apenas mostra um echo "sem privilegio". Exemplo bobo: if(a == c) { echo "mostra"; }else{ echo "Não mostra"; } Não sei se fui bem claro... Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Setembro 10, 2010 deu erro ? qual ? mostre o código real, se não fica dificil entender onde está a dificuldade. Compartilhar este post Link para o post Compartilhar em outros sites
EuToComProblema! 1 Denunciar post Postado Setembro 10, 2010 Vou tentar ajudar soh pq você colocou o meu changeman favorito na foto :P coloca a estrutura das tabelas que é mais fácil pra ajudar... talvez apenas com o SQL dê para fazer o q você quer, se entendi correto... Compartilhar este post Link para o post Compartilhar em outros sites
changeman 0 Denunciar post Postado Setembro 10, 2010 Valeu, "EuToComProblema!", esse também é o meu preferido, hehehe.... Bom, aí é que está... Depois que cadastrei os produtos (cadastro.php) consigo listar ok (lista_produtos.php) Logo, os arquivos estão sendo gravados no banco, pois tambem consigo editar todos os produtos pelo (edit_produto.php) e apagar com (del_produtos.php) Logo, o que não estou conseguindo é criar um método para permitir que o mesmo usuario que cadastrou o produto, tenha o privilegio de editar os produtos e que ao mesmo tempo negue outro usuario. Criei uma tabela que contém; <?php while($linhas = mysql_fetch_object($consulta)) { ?> <tr> <td align="center" valign="middle" bgcolor="#CCCCCC"><?php echo $linhas->nome;?> </td> <td align="center" valign="middle" bgcolor="#CCCCCC"><?php echo $linhas->tipo;?> </td> <td align="center" valign="middle" bgcolor="#CCCCCC"><?php echo $linhas->departamento;?> </td> <td align="center" valign="middle" bgcolor="#CCCCCC"><?php echo $linhas->local;?> </td> <td align="center" valign="middle" bgcolor="#CCCCCC"> <!-- DUVIDA - aqui so deve mostrar o link se o usuario tiver privilegio --></td> </tr> <?php } ?> Compartilhar este post Link para o post Compartilhar em outros sites
EuToComProblema! 1 Denunciar post Postado Setembro 10, 2010 não é soh colocar if($linhas->departamento == $usuario->departamento) echo $link_edicao else echo "sem privilégio" ? pode ser feito assim fica melhor: echo ($linhas->departamento == $usuario->departamento) ? $link_edicao : 'sem privilégio'; quais os tipos de dados de departamento nas 2 tabelas? dê uma olhada se o tipo e tamanho são iguais. assim deve funcionar... Compartilhar este post Link para o post Compartilhar em outros sites
changeman 0 Denunciar post Postado Setembro 10, 2010 não é soh colocar if($linhas->departamento == $usuario->departamento) echo $link_edicao else echo "sem privilégio" ? pode ser feito assim fica melhor: echo ($linhas->departamento == $usuario->departamento) ? $link_edicao : 'sem privilégio'; quais os tipos de dados de departamento nas 2 tabelas? dê uma olhada se o tipo e tamanho são iguais. assim deve funcionar... Obrigado, mas deu erro.... Será que é porque só coloquei: $consulta = mysql_query("select * from produto"); ??? devo criam um: $consulta2 = mysql_query("select * from usuario"); ??? Compartilhar este post Link para o post Compartilhar em outros sites
EuToComProblema! 1 Denunciar post Postado Setembro 10, 2010 imagino que tenha login jah que tem usuário... seria mais fácil colocar o valor do departamento na sessão do usuário logado. Economiza uma consulta. mas com certeza você deve buscar essas informações da tabela de usuário... E o melhor é armazenar na sessão por 2 motivos, além da economia de consulta, você não precisará encontrar o usuário logado no resultado do * from usuario.... http://www.youtube.com/watch?v=O2fz7xdJ5jM Compartilhar este post Link para o post Compartilhar em outros sites
changeman 0 Denunciar post Postado Setembro 10, 2010 imagino que tenha login jah que tem usuário... seria mais fácil colocar o valor do departamento na sessão do usuário logado. Economiza uma consulta. mas com certeza você deve buscar essas informações da tabela de usuário... E o melhor é armazenar na sessão por 2 motivos, além da economia de consulta, você não precisará encontrar o usuário logado no resultado do * from usuario.... Certo acho que entendi... devo incluir no formulario o nome do departamento e depois armazenar esta variável? Veja como está o código... ( não repare muito pois só tenho 3 meses de php... :huh: ) No arquivo "login.php" tenho: $consulta = mysql_query("select * from usuario where Login='$login'"); $campos = mysql_num_rows($consulta); if($campos != 0) { if($senha != mysql_result($consulta,0,"Senha")) { echo "<font color=red><b>Senha incorreta!</font></b>"; exit; } else { if($login == $login_admin) { if($senha == $senha_admin) { session_start(); $_SESSION['login_usuario'] = $login; $_SESSION['senha_usuario'] = $senha; header("Location: nivel1/index.php"); } }else{ session_start(); $_SESSION['login_usuario'] = $login; $_SESSION['senha_usuario'] = $senha; header("Location: nivel2/index.php"); } } }else{ echo "<font color=red><b>O usuario não existe!</font></b>"; exit; } ?> < --- arquivo valida.php ---> <?php @session_start(); include "conf_system.php"; if(isset($_SESSION['login_usuario']) and isset($_SESSION['senha_usuario'])) { $login_usuario = $_SESSION['login_usuario']; $senha_usuario = $_SESSION['senha_usuario']; } else { $erro = urlencode("Você não esta logado!"); header("Location: erro.php"); exit; } if(!(empty($login_usuario) or empty($senha_usuario))) { $consulta = mysql_query("select * from usuario where Login = '$login_usuario'"); if(mysql_num_rows($consulta) == 1) { if($senha_usuario != mysql_result($consulta,0,"Senha")) { unset($_SESSION['login_usuario']); unset($_SESSION['senha_usuario']); $erro = urlencode("Você não esta logado!"); header("Location: erro.php"); exit; } } else { unset($_SESSION['login_usuario']); unset($_SESSION['senha_usuario']); $erro = urlencode("Você não esta logado!"); header("Location: erro.php"); exit; } } else { $erro = urlencode("Você não esta logado!"); header("Location: erro.php"); exit; } mysql_close($conn); ?> < --- arquivo conf_system.php ---> <?php $local_serve = "localhost"; $usuario_serve = "root"; $senha_serve = "root"; $banco_de_dados = "MeuBD"; $conn = @mysql_connect($local_serve,$usuario_serve,$senha_serve) or die ("O servidor não responde!"); // Conecta DB $db = @mysql_select_db($banco_de_dados,$conn) or die ("Não foi possivel conectar-se ao banco de dados!"); $login_admin = "admin"; $senha_admin = "admin"; $email_admin = "admin@admin.com"; $nivel_user = '$depar'; ?> Compartilhar este post Link para o post Compartilhar em outros sites
EuToComProblema! 1 Denunciar post Postado Setembro 10, 2010 tb não sou muuuito experiente em php, por isso não tenho absoluta certeza do que vou dizer agora... acredito não ser muito bom armazenar a senha na sessão... isso pode se tornar uma grande vulnerabilidade... (eu acho) não vi o código inteiro pq é muita coisa e é chato ver assim... use o code para colocar códigos. o ícone: <> if($no_tag_code) echo "Chato de ler e entender" na sessão armazena o usuário logado, de preferência a chave primária dele tb, vai facilitar em outros momentos. E para resolver seu problema dos departamentos armazene isso tb na sessão. depois no seu código anterior compara o departamento com o departamento da sessão, se forem iguais, pode editar. Compartilhar este post Link para o post Compartilhar em outros sites
hunternh 2 Denunciar post Postado Setembro 10, 2010 Se você já tem na sessão o departamento do usuário, use o mesmo para fazer a consulta, isso evita que traga registros desnecessários: exemplo ("select * from produto where departamento = " . $usuario->departamento) Compartilhar este post Link para o post Compartilhar em outros sites