Jump to content


Photo

Como Selecionar Valores De Mais De Uma Tabela E Comparar Dados


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

#1 Luiz Otávio

Luiz Otávio

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Não informado
  • Localidade:Boa Esperança - MG

Posted 23/06/2010, 20:27

Pessoal tenho uma pequena rede social dentro do meu site (que foi feito por outra pessoa), onde os usuário pode escrever para outros usuários, adicionar amigos, enfim, uma rede social mesmo...

Só que as tabelas são separadas, onde o usuário escreve, onde o usuário adiciona amigos e o login...

Na tabela onde os usuários adiciona amigos, são 3 linhas, id, login de que adiciona e login de quem ta adicionando.

Na tabela login tem tudo sobre o usuario, a foto, o login (único), a tabela, email, blablabla

Na tabela onde o usuario escreve, todos os outros também escrevem, lá so tem as linhas login de quem escreveu, o que a pessoa escreveu a data e o id...

O meu problema está sendo para selecionar a tabela onde os usuarios escrevem com a tabela onde tem os amigos. Tipo, só quem pode ver o que o usuário escreve são os amigos...

Só que ainda não está selecionado assim, então todo mundo ve o que todo mundo escreve, e isso ta ficando uma bagunaça (literalmente), o cara que fez o código, fez tudo bagunçado e estou pedido demais aqui...

Gostaria que me ajudassem a selecionar os usuários da tabela amigos, verifique quem é amigos de quem e retorne o valor para que apenas quem for amigo consigo ler os posts dos seus amigos...

olha como está o código:

                <?
				$_pagi_sql = "SELECT * FROM bagunca ORDER BY id DESC";
				$_pagi_cuantos = 10; //número de registros a serem omostrados em cada página
				$_pagi_nav_num_enlaces = "10"; //numero de paginas que irão aparecer na paginação
				$_pagi_mostrar_errores = false; //desabilitando a apresentação de códigos de erro
				$_pagi_conteo_alternativo = false; //desabilitado o tipo de contatdor (padrão)
				$_pagi_propagar = array("idnoticia"); //variável a ser propagada pelas páginas
				$_pagi_nav_estilo = ""; //nenhum estilo CSS aplicado via arquivo .css
				$_pagi_nav_anterior = "<"; //ícone para ir para a página anterior
				$_pagi_nav_siguiente = ">"; //ícone para ir para a página seguinte
				include("blog_paginacao.php"); //incluindo o script de paginação
				// escreverá o título da notícia enquanto a variável $row receber informações do resultado da consulta
				while ($linha = mysql_fetch_assoc($_pagi_result)) {
				$id = $linha['id'];
				$data = $linha['data'];
				$dia = substr($data, 8, 2);
				$mes = substr($data, 5, 2);
				$ano = substr($data, 0, 4);
				$hora = $linha['hora'];
				$login_bagunca = $linha['login'];
				$consulta4 = "SELECT * FROM user_phiper WHERE login='$login_bagunca'";
				$resultado4 = mysql_query($consulta4);
				$linha4 = mysql_fetch_assoc($resultado4);
				$nome_bagunca = $linha4['nome'];
				$avatar_bagunca = $linha4['avatar'];
				$bagunca_bagunca = $linha['bagunca'];
				
				$bagunca_bagunca = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
				"<a href=\"\\0\" target='_blank'>link</a>", $bagunca_bagunca);
				
				$bagunca_bagunca = ereg_replace("emos2",
				"<img width='19px' height='19px' border='0' style='width:19px; height:19px; margin:0; padding:0; border:0; float:none;' src='css/objetos/img/img/emo_3.gif'/>", $bagunca_bagunca);
				$bagunca_bagunca = ereg_replace("emotriste", "<img width='20px' height='24px' border='0' style='width:20px; height:24px; margin:0; padding:0; border:0; float:none;' src='css/objetos/img/img/emo_17.gif'/>", $bagunca_bagunca);
				$bagunca_bagunca = ereg_replace("emovergonha", "<img width='19px' height='19px' border='0' style='width:19px; height:19px; margin:0; padding:0; border:0; float:none;' src='css/objetos/img/img/emo_8.gif'/>", $bagunca_bagunca);
				$bagunca_bagunca = ereg_replace("emobravo", "<img width='15px' height='22px' border='0' style='width:15px; height:22px; margin:0; padding:0; border:0; float:none;' src='css/objetos/img/img/emo_19.gif'/>", $bagunca_bagunca);
				
                                $bagunca_bagunca = ereg_replace("emomao", "<img width='20px' height='35px' border='0' style='width:20px; height:35px; margin:0; padding:0; border:0; float:none;' src='css/objetos/img/img/emo_31.png'/>", $bagunca_bagunca);

				$bagunca_bagunca = nl2br($bagunca_bagunca);
				
				?>
                <div id="quefazem"><a href="perfil_pub.php?usr=<? echo "$login_bagunca";?>">
                <img src="<? echo "$avatar_bagunca";?>"/></a>
                <span class='nomequefazem'>
                <? echo "<p><a href='perfil_pub.php?usr=$login_bagunca'>$nome_bagunca";?></a><? echo " diz:"; 
				echo "<span style='float:right; font-size:12px; font-weight:normal; color:#999;'> $dia/$mes/$ano às $hora</span></p>"?></span>
                <span class='textoquefazem'><? echo "<span id='bagunca_ajuste'>$bagunca_bagunca</span>";?>
                </span>
                </div>
                <?
				if ($_SESSION['login'] == $login_bagunca){ ?>
                <div id="excl"><a href="excluir_publico.php?id=<? echo "$id";?>">Excluir</a></div>
                <?
				}
				}
				?>


Tipo, eu aprendi um pouco de PHP, e já não conto mais com a pessoa que criou o site. Eu consegui fazer a função utilizando IF, tipo, se o usuário for amigo do outro, mostra o post, se não, não mostra... o problema é que do modo que fiz, o post apenas não aparece, mas no mysql_num_rows, conta normal, então se eu manda o script ler um limite de 10 posts, ele apenas oculta os outros posts, se tiver 5 posts que não são de amigos, ele mostra apenas 5 contando como 10 (não sei se expliquei bem)...

Por isso penso que deve ter uma outra forma de fazer a seleção no mysql_query de forma que selecione apenas os posts dos amigos... não sei..

Já fiz de tudo que meus conhecimentos podem fazer, mais não consegui.. alguém pode dar alguma dica?

#2 edero

edero

    Turista

  • Usuários
  • 53 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte
  • Interesses:PHP, DOT.NET, FLEX, SQL-SERVER, TDD, Agilidade, RAILS

Posted 15/07/2010, 17:55

Para ajudar você seria interessante que postasse a estrutura das tabelas.

Pessoal tenho uma pequena rede social dentro do meu site (que foi feito por outra pessoa), onde os usuário pode escrever para outros usuários, adicionar amigos, enfim, uma rede social mesmo...

Só que as tabelas são separadas, onde o usuário escreve, onde o usuário adiciona amigos e o login...

Na tabela onde os usuários adiciona amigos, são 3 linhas, id, login de que adiciona e login de quem ta adicionando.

Na tabela login tem tudo sobre o usuario, a foto, o login (único), a tabela, email, blablabla

Na tabela onde o usuario escreve, todos os outros também escrevem, lá so tem as linhas login de quem escreveu, o que a pessoa escreveu a data e o id...

O meu problema está sendo para selecionar a tabela onde os usuarios escrevem com a tabela onde tem os amigos. Tipo, só quem pode ver o que o usuário escreve são os amigos...

Só que ainda não está selecionado assim, então todo mundo ve o que todo mundo escreve, e isso ta ficando uma bagunaça (literalmente), o cara que fez o código, fez tudo bagunçado e estou pedido demais aqui...

Gostaria que me ajudassem a selecionar os usuários da tabela amigos, verifique quem é amigos de quem e retorne o valor para que apenas quem for amigo consigo ler os posts dos seus amigos...

olha como está o código:

                <?
				$_pagi_sql = "SELECT * FROM bagunca ORDER BY id DESC";
				$_pagi_cuantos = 10; //número de registros a serem omostrados em cada página
				$_pagi_nav_num_enlaces = "10"; //numero de paginas que irão aparecer na paginação
				$_pagi_mostrar_errores = false; //desabilitando a apresentação de códigos de erro
				$_pagi_conteo_alternativo = false; //desabilitado o tipo de contatdor (padrão)
				$_pagi_propagar = array("idnoticia"); //variável a ser propagada pelas páginas
				$_pagi_nav_estilo = ""; //nenhum estilo CSS aplicado via arquivo .css
				$_pagi_nav_anterior = "<"; //ícone para ir para a página anterior
				$_pagi_nav_siguiente = ">"; //ícone para ir para a página seguinte
				include("blog_paginacao.php"); //incluindo o script de paginação
				// escreverá o título da notícia enquanto a variável $row receber informações do resultado da consulta
				while ($linha = mysql_fetch_assoc($_pagi_result)) {
				$id = $linha['id'];
				$data = $linha['data'];
				$dia = substr($data, 8, 2);
				$mes = substr($data, 5, 2);
				$ano = substr($data, 0, 4);
				$hora = $linha['hora'];
				$login_bagunca = $linha['login'];
				$consulta4 = "SELECT * FROM user_phiper WHERE login='$login_bagunca'";
				$resultado4 = mysql_query($consulta4);
				$linha4 = mysql_fetch_assoc($resultado4);
				$nome_bagunca = $linha4['nome'];
				$avatar_bagunca = $linha4['avatar'];
				$bagunca_bagunca = $linha['bagunca'];
				
				$bagunca_bagunca = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
				"<a href=\"\\0\" target='_blank'>link</a>", $bagunca_bagunca);
				
				$bagunca_bagunca = ereg_replace("emos2",
				"<img width='19px' height='19px' border='0' style='width:19px; height:19px; margin:0; padding:0; border:0; float:none;' src='css/objetos/img/img/emo_3.gif'/>", $bagunca_bagunca);
				$bagunca_bagunca = ereg_replace("emotriste", "<img width='20px' height='24px' border='0' style='width:20px; height:24px; margin:0; padding:0; border:0; float:none;' src='css/objetos/img/img/emo_17.gif'/>", $bagunca_bagunca);
				$bagunca_bagunca = ereg_replace("emovergonha", "<img width='19px' height='19px' border='0' style='width:19px; height:19px; margin:0; padding:0; border:0; float:none;' src='css/objetos/img/img/emo_8.gif'/>", $bagunca_bagunca);
				$bagunca_bagunca = ereg_replace("emobravo", "<img width='15px' height='22px' border='0' style='width:15px; height:22px; margin:0; padding:0; border:0; float:none;' src='css/objetos/img/img/emo_19.gif'/>", $bagunca_bagunca);
				
                                $bagunca_bagunca = ereg_replace("emomao", "<img width='20px' height='35px' border='0' style='width:20px; height:35px; margin:0; padding:0; border:0; float:none;' src='css/objetos/img/img/emo_31.png'/>", $bagunca_bagunca);

				$bagunca_bagunca = nl2br($bagunca_bagunca);
				
				?>
                <div id="quefazem"><a href="perfil_pub.php?usr=<? echo "$login_bagunca";?>">
                <img src="<? echo "$avatar_bagunca";?>"/></a>
                <span class='nomequefazem'>
                <? echo "<p><a href='perfil_pub.php?usr=$login_bagunca'>$nome_bagunca";?></a><? echo " diz:"; 
				echo "<span style='float:right; font-size:12px; font-weight:normal; color:#999;'> $dia/$mes/$ano às $hora</span></p>"?></span>
                <span class='textoquefazem'><? echo "<span id='bagunca_ajuste'>$bagunca_bagunca</span>";?>
                </span>
                </div>
                <?
				if ($_SESSION['login'] == $login_bagunca){ ?>
                <div id="excl"><a href="excluir_publico.php?id=<? echo "$id";?>">Excluir</a></div>
                <?
				}
				}
				?>


Tipo, eu aprendi um pouco de PHP, e já não conto mais com a pessoa que criou o site. Eu consegui fazer a função utilizando IF, tipo, se o usuário for amigo do outro, mostra o post, se não, não mostra... o problema é que do modo que fiz, o post apenas não aparece, mas no mysql_num_rows, conta normal, então se eu manda o script ler um limite de 10 posts, ele apenas oculta os outros posts, se tiver 5 posts que não são de amigos, ele mostra apenas 5 contando como 10 (não sei se expliquei bem)...

Por isso penso que deve ter uma outra forma de fazer a seleção no mysql_query de forma que selecione apenas os posts dos amigos... não sei..

Já fiz de tudo que meus conhecimentos podem fazer, mais não consegui.. alguém pode dar alguma dica?






0 user(s) are reading this topic

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

IPB Skin By Virteq