Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

changeman

Como comparar o conteúdo de duas tabelas diferentes?

Recommended Posts

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.