Jump to content


Photo

Como Comparar Duas Tabelas Do Mesmo Bd?


  • Faça o login para participar
1 reply to this topic

#1 Ricardo Andrade

Ricardo Andrade

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 14/09/2011, 16:24

Boa tarde à todos!

Estou com um problema há dias e não consigo sair do lugar, é o seguinte:

Tenho minhas tabelas:

"clientes" no qual tenho os campos: ("codcliente","nome","codcond","condominio","senha")
"arquivos" no qual tenho os campos: ("id","codcond","descricao","redirecionamento",arquivo")

Assim, o usuário se logou tudo certinho utilizando minha tabela "clientes" digitando o codcliente e a senha, correto?
Após isso tenho a sessão aberta com os dados dele, inclusive com o codcond, que é o código do condomínio onde ele reside.
A página de destino dele, com a sessão aberta, precisa exibir os arquivos da minha tabela "arquivos", porém o codcond do cliente e o codcond da tabela arquivos precisa ser o mesmo!!

Como eu faço isso?

Agradeço à todos que tentarem de uma forma ou outra me ajudar.

Obrigado []'s

Pessoal, tentei desta forma mas não deu, olhem:


[...]

echo "Olá, " . $_SESSION['cliente'];

$sql = mysql_query("SELECT * FROM arquivos WHERE codcond = '$condo'");


	if (($condo) == ($_SESSION['codcond'])) {
	
	
// Exibe as informações de cada usuário
while ($usuario = mysql_fetch_object($sql)) {

		
		
			echo "<b>Código do Condomínio:</b> " . $usuario->codcond . "<br />";
			echo "<b>Descrição:</b> " . $usuario->descricao . "<br />";
			echo "<b>Categoria:</b> " . $usuario->redirecionamento . "<br />";
	
			// Exibimos o arquivo
			echo "<a href='arquivos/".$usuario->arquivo."' >Download</a><br /><br />";

}
}

?>


Na teoria ele só exibiria os resultados depois do meu if que compara o codcond dos arquivos com o da sessão, mas n me retorna nada!

Alguém me dá uma dica?

Abraço!

------------------------------------------------------------

Agora eu consegui dividir por condomínio, só tem um porém. Está me retornando muitas vezes o mesmo registro, que era pra ser retornado uma vez apenas, deve ser algum problema nos meus whiles, mas n consigo enxergar isso, alguém pode dar uma olhada pra ver se enxerga?

Segue:

[...]

// Seleciona todos os usuários
$sqlarq = mysql_query("SELECT * FROM arquivos");
$sqlcli = mysql_query("SELECT * FROM clientes");


// Exibe as informações de cada usuário
while ($arq = mysql_fetch_object($sqlarq)) {
while ($cli = mysql_fetch_object($sqlcli)) {

	if (($sqlarq->codcond) == ($sqlcli->codcond)) {

	
	// Exibimos o código do condomínio, descrição e redirecionamento
	echo "<b>Código do Condomínio:</b> " . $arq->codcond . "<br />";
	echo "<b>Descrição:</b> " . $arq->descricao . "<br />";
	echo "<b>Categoria:</b> " . $arq->redirecionamento . "<br />";
	
	// Exibimos o arquivo
	echo "<a href='arquivos/".$arq->arquivo."' >Download</a><br /><br />";
}
}
}


Edição feita por: Ricardo Andrade, 14/09/2011, 16:26.


#2 D-Blaster

D-Blaster

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino
  • Localidade:Brasília

Posted 21/09/2011, 14:16

To vendo duas cosas estranhas no seu código:

  • Erro de lógica nos while
  • Selecionando os dados demais, e não filtrando.

Você tem que reordenar seus while, vc quer primeiro pegar os usuários e depois os arquivos desses usuários
Tenta isso aqui:
// Seleciona todos os usuários
$sqlcli = mysql_query("SELECT * FROM clientes");
while ($cli = mysql_fetch_object($sqlcli)) {
	// Seleciona os arquivos do condomínio do usuário
	$sqlarq = mysql_query("SELECT * FROM arquivos WHERE codcond = ". $cli->codcond);
	while ($arq = mysql_fetch_object($sqlarq)) {
        // Exibimos o código do condomínio, descrição e redirecionamento
        echo "<b>Código do Condomínio:</b> " . $arq->codcond . "<br />";
        echo "<b>Descrição:</b> " . $arq->descricao . "<br />";
        echo "<b>Categoria:</b> " . $arq->redirecionamento . "<br />";
        // Exibimos o arquivo
        echo "<a href='arquivos/".$arq->arquivo."' >Download</a><br /><br />";
	}
}
Veja que eu não passo mais a responsabilidade para o php comparar os codcond, e sim coloco no sql pra pegar o codcond de acordo com o cliente que está sendo processado.

Acho que vai dar certo...
Boa Sorte!

Edição feita por: D-Blaster, 21/09/2011, 14:21.





1 user(s) are reading this topic

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

IPB Skin By Virteq